stages:
- check
- publish
variables:
CARGO_HOME: /usr/local/cargo
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- target/
check:
stage: check
image: rust:1.85
tags: [docker]
script:
- rustup component add clippy rustfmt
- cargo fmt --check
- cargo clippy --all-targets -- -D warnings
- cargo test --workspace
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == "main"
publish:
stage: publish
image: rust:1.85
tags: [docker]
script:
- cargo publish --token ${CRATES_IO_TOKEN}
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/
when: manual