1
0
Fork 0

ci: add CI

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2022-12-01 11:34:52 +01:00
parent 3ced2ec0e6
commit 545759f407
Signed by: mfocko
GPG key ID: 7C47D46246790496

88
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,88 @@
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
- echo "<meta http-equiv=refresh content=0;url=rust_coverage/index.html>" > ./public/index.html
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