stages: - check - build variables: CARGO_TERM_COLOR: always RUST_BACKTRACE: "1" cache: key: files: - Cargo.lock prefix: cargo paths: - target/ fmt: stage: check image: rust:latest script: - rustup component add rustfmt - cargo fmt --check rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH clippy: stage: check image: rust:latest before_script: - rustup component add clippy script: - cargo clippy --all-targets -- --deny warnings rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH allow_failure: true test: stage: check image: rust:latest script: - cargo test --locked rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH build: stage: build image: rust:latest script: - cargo build --release --locked artifacts: name: "brokecream-linux-x86_64" paths: - target/release/brokecrew expire_in: 30 days # Only on tags, so routine pushes don't eat the free CI minutes. release: stage: build image: rust:latest rules: - if: $CI_COMMIT_TAG script: - cargo build --release --locked artifacts: name: "brokecrew-$CI_COMMIT_TAG" paths: - target/release/brokecrew expire_in: 90 days