|
|
@@ -1,12 +1,52 @@
|
|
|
image: "rust:latest"
|
|
|
|
|
|
-test:cargo:
|
|
|
+variables:
|
|
|
+ # move cargo data into the project directory so it can be cached
|
|
|
+ CARGO_HOME: ${CI_PROJECT_DIR}/.cargo
|
|
|
+ # treat compiler warnings as errors (in clippy, when running tests, etc.)
|
|
|
+ RUSTFLAGS: -Dwarnings
|
|
|
+
|
|
|
+default:
|
|
|
+ # cancel the job if a newer pipeline starts for the same MR or branch
|
|
|
+ interruptible: true
|
|
|
+ cache:
|
|
|
+ # use the git branch or tag as cache key, so the cache will be
|
|
|
+ # shared among CI runs for the same branch or tag
|
|
|
+ key: ${CI_COMMIT_REF_SLUG}
|
|
|
+ # we cache .cargo/ and target/, which effectively enables
|
|
|
+ # incremental builds across different executions of the CI
|
|
|
+ # for the same branch or the same merge request
|
|
|
+ paths:
|
|
|
+ - .cargo
|
|
|
+ - target
|
|
|
+
|
|
|
+cargo:fmt:
|
|
|
script:
|
|
|
- rustc --version && cargo --version # Print version info for debugging
|
|
|
- - cargo test --workspace --verbose
|
|
|
+ - rustup component add rustfmt
|
|
|
+ - cargo fmt --check
|
|
|
+
|
|
|
+cargo:audit:
|
|
|
+ # This can start to fail even when our code doesn't change.
|
|
|
+ # Usually the new advisory is not a huge concern.
|
|
|
+ # Run it last, separately, so if we think we may want to merge anyway,
|
|
|
+ # all the other tests will have been run.
|
|
|
+ script:
|
|
|
+ - ./maint/rust-maint-common/via-cargo-install-in-ci cargo-audit
|
|
|
+ - cargo audit -D warnings
|
|
|
+ cache:
|
|
|
+ paths:
|
|
|
+ - cache
|
|
|
+
|
|
|
+cargo:clippy:
|
|
|
+ script:
|
|
|
+ - rustup component add clippy
|
|
|
+ - cargo clippy --all-features --workspace -- -D warnings
|
|
|
+
|
|
|
|
|
|
test:lox-unit:
|
|
|
+ # this job is only run if clippy passes
|
|
|
script:
|
|
|
- - cargo test --features bridgeauth
|
|
|
+ - cargo test --workspace --verbose
|
|
|
artifacts:
|
|
|
when: always
|