stages: - format - build - lint - test .rust_template: &rust_template before_script: - export CARGO_HOME="$CI_PROJECT_DIR/cargo" - rustup --version - rustc --version - cargo --version rust-nightly: stage: build image: rustlang/rust:nightly needs: [] cache: key: "$CI_COMMIT_REF_SLUG" paths: - cargo/ - target/ <<: *rust_template script: - cargo build --verbose rust-nightly-test: stage: test image: rustlang/rust:nightly needs: - rust-nightly cache: key: "$CI_COMMIT_REF_SLUG" paths: - cargo/ - target/ policy: pull <<: *rust_template script: - cargo test --verbose -j 1 rust-nightly-fmt: stage: format image: rustlang/rust:nightly needs: [] cache: key: "$CI_COMMIT_REF_SLUG" paths: - cargo/ - target/ policy: pull <<: *rust_template script: - cargo fmt --all --verbose -- --check rust-nightly-clippy: stage: lint image: rustlang/rust:nightly needs: - rust-nightly cache: key: "$CI_COMMIT_REF_SLUG" paths: - cargo/ - target/ <<: *rust_template script: - cargo clippy --all --tests --verbose -- -D warnings pages: stage: build image: rustlang/rust:nightly needs: - rust-nightly cache: key: "$CI_COMMIT_REF_SLUG" paths: - cargo/ - target/ policy: pull <<: *rust_template script: - cargo doc --no-deps - rm -rf public - mkdir public - cp -R target/doc/* public artifacts: paths: - public