ostree/rust-bindings/rust/.gitlab-ci.yml
2022-05-06 12:53:54 -04:00

102 lines
2.4 KiB
YAML

image: rust:latest
variables:
SCCACHE_URL: https://github.com/mozilla/sccache/releases/download/0.2.8/sccache-0.2.8-x86_64-unknown-linux-musl.tar.gz
CARGO_TARGET_DIR: ${CI_PROJECT_DIR}/target
CARGO_HOME: ${CI_PROJECT_DIR}/cargo
SCCACHE_DIR: ${CI_PROJECT_DIR}/sccache
RUSTC_WRAPPER: sccache
before_script:
- echo deb http://ftp.debian.org/debian stretch-backports main > /etc/apt/sources.list.d/backports.list
- apt-get update
- apt-get install -y -t stretch-backports cmake libostree-dev
- wget -O - ${SCCACHE_URL} | tar -C /usr/bin/ -xz --wildcards --strip-components=1 '*/sccache'
cache:
paths:
- cargo/
- sccache/
stages:
- build
- publish
# format and freshness checks
check:
stage: build
script:
- rustup component add rustfmt
- cargo fmt --all -- --check
- rm -rf src/auto/
- make gir
- git diff -R --exit-code
# build
.build-step: &build-step
stage: build
script:
- rustup component add clippy
- cargo clippy --all ${FEATURES} -- -D warnings
- cargo test --verbose --manifest-path sys/Cargo.toml ${FEATURES}
- cargo test --verbose ${FEATURES}
ostree:
<<: *build-step
variables:
# TODO: need to switch back to --all-features
FEATURES: --features v2018_9
ostree_default-features:
<<: *build-step
variables:
FEATURES: ""
# docs
docs:
stage: build
image: rustlang/rust:nightly
variables:
RUSTDOC_OPTS: >-
-Z unstable-options
--extern-html-root-url glib_sys=https://gtk-rs.org/docs
--extern-html-root-url gobject_sys=https://gtk-rs.org/docs
--extern-html-root-url gio_sys=https://gtk-rs.org/docs
--extern-html-root-url glib=https://gtk-rs.org/docs
--extern-html-root-url gio=https://gtk-rs.org/docs
script:
- make merge-lgpl-docs
- cargo rustdoc --verbose --package ostree-sys --features dox -- ${RUSTDOC_OPTS}
- cargo rustdoc --verbose --package ostree --features dox -- ${RUSTDOC_OPTS}
artifacts:
paths:
- target/doc
pages:
stage: publish
image: alpine
before_script: []
script:
- cp -r target/doc public
cache: {}
artifacts:
paths:
- public
only:
- master
# publish
publish_ostree-sys:
stage: publish
script:
- cargo publish --verbose --manifest-path sys/Cargo.toml --token $CRATES_IO_TOKEN
cache: {}
when: manual
publish_ostree:
stage: publish
script:
- cargo publish --verbose --token $CRATES_IO_TOKEN
cache: {}
when: manual