image: "debian:stretch-slim" stages: - prepare - build - publish variables: RUSTUP_HOME: "$CI_PROJECT_DIR/.rustup" CARGO_HOME: "$CI_PROJECT_DIR/.cargo" .write_cache: cache: key: "$CI_COMMIT_REF_SLUG-rustup" paths: - .rustup - .cargo .read_cache: cache: key: "$CI_COMMIT_REF_SLUG-rustup" paths: - .rustup - .cargo policy: pull .toolchain-stable: extends: .read_cache before_script: - apt-get update - apt-get install -y --no-install-recommends ca-certificates libssl-dev libc6-dev pkg-config gcc - export PATH="$CARGO_HOME/bin:$PATH" - rustup default stable .toolchain-nightly: extends: .read_cache allow_failure: true before_script: - apt-get update - apt-get install -y --no-install-recommends ca-certificates libssl-dev libc6-dev pkg-config gcc - export PATH="$CARGO_HOME/bin:$PATH" - rustup default nightly .build-only-when-changes: &build-only-when-changes only: changes: - Cargo.toml - Cargo.lock - src/**/*.rs ####### Jobs ####### install-rust: extends: .write_cache stage: prepare script: - apt-get update - apt-get install -y --no-install-recommends ca-certificates curl - curl https://sh.rustup.rs > rustup.sh - sh rustup.sh -y --default-host x86_64-unknown-linux-gnu - export PATH="$CARGO_HOME/bin:$PATH" - rustup install stable - rustup install nightly <<: *build-only-when-changes build-stable-no-default-features: extends: .toolchain-stable stage: build script: - cargo test --tests --no-default-features <<: *build-only-when-changes build-stable-features-rich_presence: extends: .toolchain-stable stage: build script: - cargo test --tests --no-default-features --features "rich_presence" - cargo test --no-default-features --features "rich_presence" --example "discord_presence" --example "discord_presence_subscribe" <<: *build-only-when-changes build-nightly: extends: .toolchain-nightly stage: build script: - cargo test --tests - cargo test --examples <<: *build-only-when-changes deploy-crates-io: extends: .toolchain-stable stage: publish script: - cargo publish --token $CRATES_IO_API_TOKEN only: - tags@valeth/discord-rpc-client.rs