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 --tests - cargo test --workspace --tests -- --ignored after_script: - cargo clean cache: 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 after_script: - cargo clean artifacts: paths: - tarpaulin-report.html cache: 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 after_script: - cargo clean artifacts: paths: - target/doc/ cache: 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 publish: stage: publish image: msrd0/rust:alpine before_script: - cargo -V - cargo login $CRATES_IO_TOKEN script: - cd gotham_restful_derive - cargo publish - sleep 1m - cd ../gotham_restful - cargo publish - cd .. only: - tags