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 - name: Install cargo binstall uses: cargo-bins/cargo-binstall@main - name: Install mpv run: apt-get update && apt-get install -y mpv - name: Install rust toolchain uses: dtolnay/rust-toolchain@nightly with: components: llvm-tools-preview - 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@v1 with: source: target/coverage/html/ target: ${{ gitea.ref_name }}/coverage/ username: gitea-web ssh-key: ${{ secrets.WEB_SYNC_SSH_KEY }} host: bekkalokk.pvv.ntnu.no known-hosts: "bekkalokk.pvv.ntnu.no ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEI6VSaDrMG8+flg4/AeHlAFIen8RUzWh6URQKqFegSx" docs: 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 docs run: cargo doc --all-features --document-private-items --release - name: Transfer files uses: https://git.pvv.ntnu.no/Projects/rsync-action@v1 with: source: target/doc/ target: ${{ gitea.ref_name }}/docs/ username: gitea-web ssh-key: ${{ secrets.WEB_SYNC_SSH_KEY }} host: bekkalokk.pvv.ntnu.no known-hosts: "bekkalokk.pvv.ntnu.no ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEI6VSaDrMG8+flg4/AeHlAFIen8RUzWh6URQKqFegSx"