kadmin 0.7.2

Rust bindings for the Kerberos administration interface (kadm5)
Documentation
---
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 # v6.0.2
      - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v5
      - run: uv sync --all-groups
      - uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
      - if: ${{ matrix.toolchain }}
        uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
        with:
          toolchain: ${{ matrix.toolchain }}
          components: ${{ matrix.components }}
      - if: ${{ ! matrix.toolchain }}
        uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
      - uses: taiki-e/install-action@3fa6878dc4ae603f73960271565a082bf196ab96 # v2.77.2
        with:
          tool: just
      - name: Lint
        run: just ci-lint-${{ matrix.job }}
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v5
      - run: uv sync --all-groups
      - uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
      - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
      - uses: taiki-e/install-action@3fa6878dc4ae603f73960271565a082bf196ab96 # v2.77.2
        with:
          tool: just
      - name: Build
        run: just ci-build-rust
  test:
    strategy:
      fail-fast: false
      matrix:
        job:
          - rust
          - sanity
        variant:
          - mit
          # - heimdal
    runs-on: ubuntu-latest
    timeout-minutes: 30
    env:
      KRB5_TRACE: /dev/stderr
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v5
      - run: uv sync --all-groups
      - uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
      - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
      - uses: taiki-e/install-action@3fa6878dc4ae603f73960271565a082bf196ab96 # v2.77.2
        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 # release/v1
        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 # v6.0.2
        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 # v1.16.0
      - if: startsWith(github.ref, format('refs/tags/{0}/version/', matrix.crate))
        uses: taiki-e/install-action@3fa6878dc4ae603f73960271565a082bf196ab96 # v2.77.2
        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 }}