100 lines
2.3 KiB
YAML
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
|