ci: add CI
Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
parent
3ced2ec0e6
commit
545759f407
1 changed files with 88 additions and 0 deletions
88
.gitlab-ci.yml
Normal file
88
.gitlab-ci.yml
Normal 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
|
Loading…
Reference in a new issue