From 2bd53462d7da5e1cab25008f74e3cd2dfbaa5e88 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Tue, 10 Dec 2024 21:48:20 +0100 Subject: [PATCH] .gitea/build-and-test: init --- .gitea/workflows/build-and-test.yml | 123 ++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 .gitea/workflows/build-and-test.yml diff --git a/.gitea/workflows/build-and-test.yml b/.gitea/workflows/build-and-test.yml new file mode 100644 index 0000000..f62826e --- /dev/null +++ b/.gitea/workflows/build-and-test.yml @@ -0,0 +1,123 @@ +name: "Build and test" +on: + push: + branches: + - main + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Cache dependencies + uses: Swatinem/rust-cache@v2 + + - name: Build + run: cargo build --all-features --verbose --release + + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + + - name: Cache dependencies + uses: Swatinem/rust-cache@v2 + + - name: Check code format + run: cargo fmt -- --check + + - name: Check clippy + run: cargo clippy --all-features -- --deny warnings + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: cargo-bins/cargo-binstall@main + + - name: Install rust toolchain + uses: dtolnay/rust-toolchain@nightly + with: + components: llvm-tools-preview + + - name: Cache dependencies + uses: Swatinem/rust-cache@v2 + + - name: Install nextest + run: cargo binstall -y cargo-nextest --secure + + - name: Run tests + run: | + cargo nextest run --all-features --release --no-fail-fast + env: + RUST_LOG: "trace" + RUSTFLAGS: "-Cinstrument-coverage" + LLVM_PROFILE_FILE: "target/coverage/%p-%m.profraw" + + - name: Install grcov + run: cargo binstall -y grcov + + - name: Generate coverage report + run: | + grcov \ + --source-dir . \ + --binary-path ./target/release/deps/ \ + --excl-start 'mod test* \{' \ + --ignore 'tests/*' \ + --ignore "*test.rs" \ + --ignore "*tests.rs" \ + --ignore "*github.com*" \ + --ignore "*libcore*" \ + --ignore "*rustc*" \ + --ignore "*liballoc*" \ + --ignore "*cargo*" \ + -t html \ + -o ./target/coverage/html \ + target/coverage/ + + - name: Upload test report + uses: https://git.pvv.ntnu.no/Projects/rsync-action@main + with: + source: target/coverage/html/ + target: empidee/${{ gitea.ref_name }}/coverage/ + username: oysteikt + ssh-key: ${{ secrets.OYSTEIKT_GITEA_WEBDOCS_SSH_KEY }} + host: microbel.pvv.ntnu.no + known-hosts: "microbel.pvv.ntnu.no ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEq0yasKP0mH6PI6ypmuzPzMnbHELo9k+YB5yW534aKudKZS65YsHJKQ9vapOtmegrn5MQbCCgrshf+/XwZcjbM=" + + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install latest nightly toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + override: true + + - name: Cache dependencies + uses: Swatinem/rust-cache@v2 + + - name: Build docs + run: cargo doc --all-features --document-private-items --release + + - name: Transfer files + uses: https://git.pvv.ntnu.no/Projects/rsync-action@main + with: + source: target/doc/ + target: empidee/${{ gitea.ref_name }}/docs/ + username: oysteikt + ssh-key: ${{ secrets.OYSTEIKT_GITEA_WEBDOCS_SSH_KEY }} + host: microbel.pvv.ntnu.no + known-hosts: "microbel.pvv.ntnu.no ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEq0yasKP0mH6PI6ypmuzPzMnbHELo9k+YB5yW534aKudKZS65YsHJKQ9vapOtmegrn5MQbCCgrshf+/XwZcjbM="