1
0
mirror of https://gitlab.com/xmpp-rs/xmpp-rs.git synced 2024-07-03 20:00:36 +02:00
xmpp-rs/.gitlab-ci.yml

105 lines
2.5 KiB
YAML

---
stages:
- lint
- test
- docs
- bot
variables:
DOCS_BASEURL: "https://xmpp-rs.gitlab.io/xmpp-rs/"
FEATURES: ""
RUST_BACKTRACE: "full"
cache:
# Required to keep docs artifacts from old builds
paths:
- public
.show-version:
before_script:
- apt-get update; apt-get install -y --no-install-recommends pkg-config libssl-dev libicu-dev
- rustc --version
- cargo --version
.stable:
image: rust:slim
extends:
- .show-version
.nightly:
image: rustlang/rust:nightly-slim
# It's not often, but it happens nightly breaks, surprisingly.
allow_failure: true
extends:
- .show-version
.test:
stage: test
script:
- cargo test --verbose --release -- --include-ignored
- cargo test --verbose --no-default-features
variables:
RUSTFLAGS: " -D warnings"
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_REF_NAME == 'main'
.docs:
stage: docs
script:
- echo "Building docs to CI_DOC_TARGET=$CI_DOC_TARGET"
- cargo doc
- rm -rf "$CI_DOC_TARGET"
- mkdir -p "$(dirname "$CI_DOC_TARGET")"
- mv target/doc "$CI_DOC_TARGET"
- echo "<a href='jid'>jid</a><br><a href='minidom'>minidom</a><br><a href='sasl'>sasl</a><br><a href='tokio_xmpp'>tokio_xmpp</a><br><a href='xmpp'>xmpp</a><br><a href='xmpp_parsers'>xmpp_parsers</a>" > "$CI_DOC_TARGET"/index.html
artifacts:
name: "$CI_DOC_TARGET"
paths:
- public
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
variables:
CI_DOC_TARGET: "public/$CI_MERGE_REQUEST_IID"
- if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_REF_NAME == 'main'
variables:
CI_DOC_TARGET: "public/main"
rustfmt:
stage: lint
script:
- rustup component add rustfmt
- cargo fmt --check
extends:
- .stable
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_REF_NAME == 'main'
stable-test:
extends:
- .test
- .stable
nightly-test:
extends:
- .test
- .nightly
pages:
extends:
- .docs
- .stable
bot-comment:
stage: bot
image: alpine:latest
script:
- apk add --no-cache glab
- glab mr --repo "$CI_PROJECT_PATH" comment $CI_MERGE_REQUEST_IID --unique --message "Thanks for your MR! You can preview the docs [here]($DOCS_BASEURL/$CI_MERGE_REQUEST_IID/)."
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
variables:
GITLAB_TOKEN: $MR_AUTOMATION_TOKEN