pipeline { agent { dockerfile { dir 'automation' reuseNode true args '--network host' } } stages { stage('Rust Toolchain Info') { steps { sh 'rustc --version' } } stage('Clippy') { steps { sh 'cargo clippy' } } stage('Docs') { steps { sh """ RUSTDOCFLAGS="--cfg docsrs --generate-link-to-definition -Z unstable-options" cargo +nightly doc --all-features """ } } stage('Rustfmt') { steps { sh 'cargo fmt --all --check' } } stage('Test') { steps { sh 'cargo nextest r --all-features' sh 'cargo test --doc' } } stage('Check with all features') { steps { sh 'cargo check --all-features' } } stage('Check with no features') { steps { sh 'cargo check --no-default-features' } } stage('Check Cross Embedded Bare Metal') { steps { sh 'cargo check --target thumbv7em-none-eabihf --no-default-features' } } stage('Check Cross Embedded Linux') { steps { sh 'cargo check --target armv7-unknown-linux-gnueabihf' } } stage('Run test with Coverage') { when { anyOf { branch 'main'; branch pattern: 'cov-deployment*' } } steps { withEnv(['RUSTFLAGS=-Cinstrument-coverage', 'LLVM_PROFILE_FILE=target/coverage/%p-%m.profraw']) { echo "Executing tests with coverage" sh 'cargo clean' sh 'cargo test --all-features' sh 'grcov . -s . --binary-path ./target/debug -t html --branch --ignore-not-existing -o ./target/debug/coverage/' sshagent(credentials: ['documentation-buildfix']) { // Deploy to Apache webserver sh 'rsync --mkpath -r --delete ./target/debug/coverage/ buildfix@documentation.irs.uni-stuttgart.de:/projects/spacepackets/coverage-rs/latest/' } } } } } }