Skip to content

Add CI Workflows

Add CI Workflows #4

Workflow file for this run

name: cargo
on:
push:
branches:
- main
pull_request: {}
jobs:
pre-job:
runs-on: ubuntu-24.04
permissions:
actions: write
contents: read
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
concurrent_skipping: "never"
skip_after_successful_duplicate: "true"
paths_ignore: '["**/README.md", "**/docs/**"]'
do_not_skip: '["pull_request", "workflow_dispatch", "schedule"]'
clippy:
name: Clippy
runs-on: ubuntu-24.04
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: clang curl pkg-config xz-utils libxv-dev ninja-build meson nasm protobuf-compiler
- uses: dtolnay/rust-toolchain@stable
id: setup-rust
with:
toolchain: nightly
components: clippy
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "v0-rust-${{ steps.setup-rust.outputs.cachekey }}"
key: clippy
- uses: cargo-bins/cargo-binstall@main
- uses: taiki-e/install-action@v2
with:
tool: just
- name: Make sure code is linted
run: just ci clippy
fmt:
name: Fmt
runs-on: ubuntu-24.04
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
permissions:
checks: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: dtolnay/rust-toolchain@stable
id: setup-rust
with:
toolchain: nightly
components: rustfmt
- uses: cargo-bins/cargo-binstall@main
- uses: taiki-e/install-action@v2
with:
tool: just
- name: Make sure code is formatted
run: just ci fmt
hakari:
name: Hakari
runs-on: ubuntu-24.04
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: dtolnay/rust-toolchain@stable
id: setup-rust
with:
toolchain: nightly
- uses: cargo-bins/cargo-binstall@main
- uses: taiki-e/install-action@v2
with:
tool: cargo-hakari,just
- name: Make sure Hakari is up-to-date
run: just ci hakari
test:
name: Test
runs-on: ubuntu-24.04
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: clang curl pkg-config xz-utils libxv-dev ninja-build meson nasm protobuf-compiler
- uses: dtolnay/rust-toolchain@stable
id: setup-rust
with:
toolchain: nightly
components: llvm-tools-preview
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "v0-rust-${{ steps.setup-rust.outputs.cachekey }}"
key: test
- uses: cargo-bins/cargo-binstall@main
- uses: taiki-e/install-action@v2
with:
tool: cargo-nextest,cargo-llvm-cov,just
- run: just ci test
- uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
files: ./lcov.info
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
files: ./target/nextest/ci/junit.xml
token: ${{ secrets.CODECOV_TOKEN }}