discord-rpc-client/.gitlab-ci.yml

100 lines
2.3 KiB
YAML

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