diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e77790c7..b48b055b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,11 +3,19 @@
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
@@ -33,6 +41,30 @@ variables:
- 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 "jid
minidom
sasl
tokio_xmpp
xmpp
xmpp_parsers" > "$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
@@ -41,6 +73,9 @@ 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:
@@ -51,3 +86,19 @@ 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