stages: - test - build - publish variables: CARGO_HOME: $CI_PROJECT_DIR/cargo test-default: stage: test image: msrd0/rust:alpine before_script: - cargo -V script: - cargo test --workspace --doc - cargo test --workspace --tests - cargo test --workspace --tests -- --ignored cache: key: cargo-default paths: - cargo/ - target/ test-all: stage: test image: msrd0/rust:alpine-tarpaulin before_script: - apk add --no-cache postgresql-dev - cargo -V script: - cargo test --workspace --all-features --doc - cargo test --workspace --tests -- --ignored - cargo tarpaulin --target-dir target/tarpaulin --all --all-features --exclude-files 'cargo/*' --exclude-files 'derive/*' --exclude-files 'example/*' --ignore-panics --ignore-tests --out Html -v artifacts: paths: - tarpaulin-report.html cache: key: cargo-all paths: - cargo/ - target/ readme: stage: test image: msrd0/cargo-readme script: - cargo readme -t README.tpl >README.md.new - diff README.md README.md.new doc: stage: build image: msrd0/rust:alpine before_script: - cargo -V script: - cargo doc --all-features - echo 'The documentation is located here' >target/doc/index.html artifacts: paths: - target/doc/ cache: key: cargo-doc paths: - cargo/ - target/ only: - master pages: stage: publish image: busybox script: - mv target/doc public - mv tarpaulin-report.html public/coverage.html artifacts: paths: - public only: - master