1
0
Fork 0
2023/.gitlab-ci.yml

88 lines
2.2 KiB
YAML
Raw Normal View History

variables:
TIMEOUT_SECONDS: 10
RUSTFLAGS: "-C instrument-coverage -Dwarnings"
LLVM_PROFILE_FILE: "coverage-%p-%m.profraw"
RUST_BACKTRACE: "full"
RUSTDOCFLAGS: "-Dwarnings"
image: "rustdocker/rust:nightly"
cache:
key: "$CI_JOB_NAME"
untracked: true
paths:
- $HOME/.cache/
- $HOME/.cargo/
# - target/
default:
before_script:
- rustc --version
- cargo --version
stages:
- test
- build
- extras
cargo-test:
stage: test
script:
- cargo install cargo2junit
- cargo test --all --all-features -- -Z unstable-options --format json | cargo2junit > .cargo-test-report.xml
artifacts:
reports:
junit: .cargo-test-report.xml
cargo-coverage:
stage: test
needs: ["cargo-test"]
script:
- apt-get update && apt-get install -yqq --no-install-recommends python3-pip python3-setuptools lcov
- rustup component add llvm-tools-preview
- (cargo test -- -Z unstable-options) || true
# generate html report
- cargo install grcov
- grcov . --binary-path ./target/debug/ -s . -t html --branch --ignore-not-existing --ignore "*cargo*" --ignore "*main*" -o ./coverage/
# generate cobertura report for gitlab integration
- pip3 install lcov_cobertura
- grcov . --binary-path ./target/debug/ -s . -t lcov --llvm --branch --ignore-not-existing --ignore "*cargo*" --ignore "*main*" -o coverage.lcov
- lcov --summary coverage.lcov
- lcov_cobertura coverage.lcov
coverage: '/\s*lines\.*:\s*([\d\.]+%)/'
artifacts:
paths:
- 'coverage'
reports:
coverage_report:
coverage_format: cobertura
path: coverage.xml
# cargo-doc:
# stage: test
# needs: ["cargo-test"]
# script:
# - cargo doc --no-deps --all-features
# pages:
# stage: test
# needs: [ "cargo-test" ]
# script:
# - cargo doc --no-deps --all-features
# - cp -R target/doc/ ./public
# artifacts:
# paths:
# - 'public'
# rules:
# - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
# lint-code:
# stage: extras
# needs: [ "cargo-test" ]
# script:
# - rustup component add rustfmt
# - cargo fmt -- --check
# - rustup component add clippy
# - cargo clippy -- -D warnings