image: "rust:slim"
stages:
- check
- build
- release
variables:
RUST_VERSION: stable
before_script:
- |
rustup install $RUST_VERSION
rustup default $RUST_VERSION
- |
rustc --version
cargo --version
variables:
RUST_VERSION: stable
.check-base: &check-base
stage: check
script:
- cargo check --verbose
- cargo test --verbose
rust-stable:
<<: *check-base
rust-beta:
<<: *check-base
variables:
RUST_VERSION: beta
rust-nightly:
<<: *check-base
variables:
RUST_VERSION: nightly
build:
stage: build
script:
- cargo build --release --verbose
crate:
stage: release
only:
- /^v(\d+\.)*\d+$/
script:
- echo "Creating release crate to publish on crates.io..."
- echo $CARGO_TOKEN | cargo login
- echo "Publishing crate to crates.io..."
- cargo publish --verbose