include:
- local: .gitlab/rules.yml
- local: .gitlab/artifacts.yml
- local: .gitlab/cargo.yml
stages:
- prep
- build
- test
- advice
- publish
.rust_minimum_mindeps:
image: "rust:1.65"
variables:
CARGO_UPDATE_POLICY: newest
GIT_CLONE_PATH: $CI_BUILDS_DIR/rust
.rust_minimum_mindeps_features:
extends: .rust_minimum_mindeps
image: "rust:1.71"
.rust_stable:
image: "rust:latest"
variables:
CARGO_UPDATE_POLICY: newest
GIT_CLONE_PATH: $CI_BUILDS_DIR/rust
.rust_nightly:
extends: .rust_stable
image: "rustlang/rust:nightly"
.cargo_no_features:
variables:
CARGO_FEATURES: --no-default-features
.cargo_all_features:
variables:
CARGO_FEATURES: --features client_api
cache-newest:prep:
extends:
- .rust_stable
- .cargo_fetch_job
- .cargo_build_tags
- .cargo_fetch_artifacts
- .rules
cache-mindeps:prep:
extends:
- .rust_nightly
- .cargo_fetch_job
- .cargo_build_tags
- .cargo_fetch_artifacts
- .rules
variables:
GENERATE_LOCKFILE_ARGS: "-Z minimal-versions"
CARGO_UPDATE_POLICY: mindeps
CARGO_FEATURES: --features minimal_versions
clippy:build:
extends:
- .rust_stable
- .cargo_no_features
- .cargo_clippy_job
- .cargo_build_tags
- .rules
needs:
- cache-newest:prep
clippy-features:build:
extends:
- .rust_stable
- .cargo_all_features
- .cargo_clippy_job
- .cargo_build_tags
- .rules
needs:
- cache-newest:prep
.cargo_audit_ignore:
variables:
CARGO_AUDIT_ARGS: --ignore RUSTSEC-2025-0007
semver-checks:prep:
extends:
- .rust_stable
- .cargo_semver_checks_job
- .cargo_build_tags
- .rules
variables:
CARGO_FEATURES: "--only-explicit-features --features _nohooks"
CHANGELOG_PATH: CHANGELOG.md
semver-checks:features:prep:
extends:
- .rust_stable
- .cargo_semver_checks_job
- .cargo_build_tags
- .rules
variables:
CARGO_FEATURES: "--only-explicit-features --features _nohooks --features client_api"
CHANGELOG_PATH: CHANGELOG.md
audit-mindeps:build:
extends:
- .rust_minimum_mindeps
- .cargo_audit_job
- .cargo_build_tags
- .rules
- .cargo_audit_ignore
stage: advice
needs:
- cache-mindeps:prep
variables:
CARGO_UPDATE_POLICY: mindeps
RUSTGITLAB_CI_NO_MR: "true"
audit-newest:build:
extends:
- .rust_stable
- .cargo_audit_job
- .cargo_build_tags
- .rules
- .cargo_audit_ignore
needs:
- cache-newest:prep
stable:build:
extends:
- .rust_stable
- .cargo_no_features
- .cargo_build_job
- .cargo_build_tags
- .cargo_build_artifacts
- .rules
needs:
- cache-newest:prep
stable:test:
extends:
- .rust_stable
- .cargo_no_features
- .cargo_test_job
- .cargo_build_tags
- .cargo_test_artifacts
- .rules
needs:
- stable:build
nightly:build:
extends:
- .rust_nightly
- .cargo_no_features
- .cargo_build_job
- .cargo_build_tags
- .cargo_build_artifacts
- .rules
needs:
- cache-newest:prep
nightly:test:
extends:
- .rust_nightly
- .cargo_no_features
- .cargo_test_job
- .cargo_build_tags
- .cargo_test_artifacts
- .rules
needs:
- nightly:build
mindeps:build:
extends:
- .rust_minimum_mindeps
- .cargo_no_features
- .cargo_build_job
- .cargo_build_tags
- .cargo_build_artifacts
- .rules
needs:
- cache-mindeps:prep
mindeps:test:
extends:
- .rust_minimum_mindeps
- .cargo_no_features
- .cargo_test_job
- .cargo_build_tags
- .cargo_test_artifacts
- .rules
needs:
- mindeps:build
stable-features:build:
extends:
- .rust_stable
- .cargo_all_features
- .cargo_build_job
- .cargo_build_tags
- .cargo_build_artifacts
- .rules
needs:
- cache-newest:prep
stable-features:test:
extends:
- .rust_stable
- .cargo_all_features
- .cargo_test_job
- .cargo_build_tags
- .cargo_test_artifacts
- .rules
needs:
- stable-features:build
tarpaulin-features:build:
extends:
- .rust_stable
- .cargo_all_features
- .cargo_tarpaulin_build_job
- .cargo_build_tags
- .cargo_build_artifacts
- .rules
needs:
- cache-newest:prep
tarpaulin-features:test:
extends:
- .rust_stable
- .cargo_all_features
- .cargo_tarpaulin_test_job
- .cargo_build_tags
- .rules
needs:
- tarpaulin-features:build
nightly-features:build:
extends:
- .rust_nightly
- .cargo_all_features
- .cargo_build_job
- .cargo_build_tags
- .cargo_build_artifacts
- .rules
needs:
- cache-newest:prep
nightly-features:test:
extends:
- .rust_nightly
- .cargo_all_features
- .cargo_test_job
- .cargo_build_tags
- .cargo_test_artifacts
- .rules
needs:
- nightly-features:build
mindeps-features:build:
extends:
- .rust_minimum_mindeps_features
- .cargo_all_features
- .cargo_build_job
- .cargo_build_tags
- .cargo_build_artifacts
- .rules
needs:
- cache-mindeps:prep
mindeps-features:test:
extends:
- .rust_minimum_mindeps_features
- .cargo_all_features
- .cargo_test_job
- .cargo_build_tags
- .cargo_test_artifacts
- .rules
needs:
- mindeps-features:build
publish:
extends:
- .rust_stable
- .cargo_publish_job
- .cargo_build_tags
- .rules
needs:
- job: audit-newest:build
artifacts: false
- job: clippy:build
artifacts: false
- job: clippy-features:build
artifacts: false
- job: mindeps:test
artifacts: false
- job: mindeps-features:test
artifacts: false
- job: nightly:test
artifacts: false
- job: nightly-features:test
artifacts: false
- job: stable:test
artifacts: false
- job: stable-features:test
artifacts: false
- job: tarpaulin-features:test
artifacts: false