---
name: Rust CI
"on":
push:
branches:
- main
pull_request:
branches:
- main
release:
types:
- released
env:
DEBIAN_FRONTEND: noninteractive
CARGO_INCREMENTAL: "false"
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
RUST_LOG: kadmin=trace
K5TEST_HEIMDAL_KDC: "/usr/lib/heimdal-servers/kdc"
K5TEST_HEIMDAL_KADMIN: "/usr/bin/kadmin"
K5TEST_HEIMDAL_KADMIND: "/usr/lib/heimdal-servers/kadmind"
K5TEST_HEIMDAL_KINIT: "/usr/bin/kinit"
K5TEST_HEIMDAL_KLIST: "/usr/bin/klist"
K5TEST_HEIMDAL_KTUTIL: "/usr/bin/ktutil"
jobs:
lint:
strategy:
fail-fast: false
matrix:
job:
- clippy
include:
- job: rustfmt
toolchain: nightly
components: rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b - run: uv sync --all-groups
- uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - if: ${{ matrix.toolchain }}
uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 with:
toolchain: ${{ matrix.toolchain }}
components: ${{ matrix.components }}
- if: ${{ ! matrix.toolchain }}
uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 - uses: taiki-e/install-action@3fa6878dc4ae603f73960271565a082bf196ab96 with:
tool: just
- name: Lint
run: just ci-lint-${{ matrix.job }}
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b - run: uv sync --all-groups
- uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 - uses: taiki-e/install-action@3fa6878dc4ae603f73960271565a082bf196ab96 with:
tool: just
- name: Build
run: just ci-build-rust
test:
strategy:
fail-fast: false
matrix:
job:
- rust
- sanity
variant:
- mit
runs-on: ubuntu-latest
timeout-minutes: 30
env:
KRB5_TRACE: /dev/stderr
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b - run: uv sync --all-groups
- uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 - uses: taiki-e/install-action@3fa6878dc4ae603f73960271565a082bf196ab96 with:
tool: just,cargo-nextest
- name: Test
run: just ci-test-${{ matrix.job }}-${{ matrix.variant }}
check-rust:
if: always()
needs:
- lint
- build
- test
runs-on: ubuntu-latest
steps:
- uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe with:
jobs: ${{ toJSON(needs) }}
release:
needs:
- check-rust
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- crate: kadmin
extra_args: ""
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/')
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
RUSTC_WRAPPER: ""
steps:
- if: startsWith(github.ref, format('refs/tags/{0}/version/', matrix.crate))
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with:
fetch-depth: 0
- if: startsWith(github.ref, format('refs/tags/{0}/version/', matrix.crate))
name: Setup rust
uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 - if: startsWith(github.ref, format('refs/tags/{0}/version/', matrix.crate))
uses: taiki-e/install-action@3fa6878dc4ae603f73960271565a082bf196ab96 with:
tool: just
- if: startsWith(github.ref, format('refs/tags/{0}/version/', matrix.crate))
run: just ci-build-deps
- if: startsWith(github.ref, format('refs/tags/{0}/version/', matrix.crate))
run: cargo publish --package ${{ matrix.crate }} ${{ matrix.extra_args }}