Skip to content
Snippets Groups Projects
Commit 01294544 authored by v-lafeychine's avatar v-lafeychine Committed by aalbert
Browse files

Resolve "Coverage on Pipelines" ✨️

Closes #16 🐔️👍️
Approved-by: default avatarloutr <loutr@crans.org>
Approved-by: default avataraalbert <augustin.albert@bleu-azure.fr>

🦀️🍰🦀️🍰🦀️🍰

* fix(nix): Add rust-src in rust profile

* feat(ci): Add stages for better-CI understanding

* feat(ci): Add coverage
parent 58cae272
No related branches found
No related tags found
1 merge request!19Resolve "Coverage on Pipelines"
Pipeline #10805 passed with stages
in 12 minutes and 57 seconds
image: vlafeychine/rust
stages:
- check
- build
- tests
- docs
variables:
CARGO_HOME: "$CI_PROJECT_DIR/.cache/cargo/"
cache:
key:
files:
- Cargo.lock
key: "$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
paths:
- .cache/cargo/
- target/
format:
stage: check
script:
- cargo fmt --check
lint:
stage: check
script:
- cargo clippy --all-targets --all-features -- -D warnings
build:
needs: [format, lint]
stage: build
script:
- cargo build
test:
needs: [build]
tests:
stage: tests
variables:
CARGO_INCREMENTAL: 0
LLVM_PROFILE_FILE: "coverage-%p-%m.profraw"
RUSTDOCFLAGS: "-Cpanic=abort"
RUSTFLAGS: "-Zprofile -Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Zpanic_abort_tests -Cpanic=abort"
script:
- cargo test
- grcov . -s . --binary-path ./target/debug/ -t cobertura --branch --ignore "*cargo*" --ignore-not-existing -o coverage.xml
- sed -n '3p' coverage.xml | grep -oE '[a-z-]+="[0-9](.[0-9]+)?"' | sed -r 's/(branch-rate|line-rate)="(0|(1)).([0-9]{2})([0-9]{2})[0-9]*"/\1="\3\4.\5%"/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage.xml
coverage: '/^branch-rate="\d+.\d+%"/'
docs:
stage: docs
only:
refs:
- main
......
......@@ -32,8 +32,7 @@
};
docker-ci = let
rust-ci =
rust.minimal.override { extensions = [ "clippy" "rustfmt" ]; };
rust-ci = rust.minimal.override { extensions = [ "clippy" "llvm-tools-preview" "rustfmt" ]; };
in pkgs.dockerTools.buildImage {
name = "proost-ci";
......@@ -41,7 +40,7 @@
copyToRoot = pkgs.buildEnv {
name = "proost-dependencies";
paths = (with pkgs; [ coreutils gcc openssh rust-ci ])
paths = (with pkgs; [ coreutils gcc gnugrep gnused grcov openssh rust-ci ])
++ (with pkgs.dockerTools; [ binSh caCertificates fakeNss ]);
pathsToLink = [ "/bin" "/etc" ];
};
......@@ -52,8 +51,7 @@
devShells.default = pkgs.mkShell {
name = "proost-dev";
packages = [ rust.default rust.rust-analyzer ];
packages = [ (rust.default.override { extensions = [ "rust-src" "rust-analyzer" ]; }) ];
};
});
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment