image: rust:latest
stages:
- lint
- build
- release
cache:
key: "$CI_JOB_NAME"
paths:
- target/
variables:
RUST_BACKTRACE: FULL
before_script:
- export PATH="$CI_PROJECT_DIR/cargo/bin:$PATH"
lint-clippy:
stage: lint
script:
- rustup component add clippy
- rustc --version
- cargo version
- cargo clippy
rules:
- changes:
- src/*
- cargo.*
when: always
lint-fmt:
stage: lint
script:
- rustup component add rustfmt
- rustc --version
- cargo version
- cargo fmt -- --check
rules:
- changes:
- src/*
- cargo.*
when: always
build:
stage: build
script:
- rustc --version
- cargo version
- cargo build --verbose
- RUST_BACKTRACE=1 cargo test --verbose
rules:
- changes:
- src/*
- cargo.*
when: always
publish:
stage: release
script:
- rustc --version
- cargo version
- cargo publish --token="$CRATES_LOGIN"
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
if: $CI_COMMIT_TAG
changes:
- src/*
- cargo.*
when: always