zenops 0.20.0

Declarative system configuration management for shell config and dotfiles.
name: Pages

# The live docs at zenops.cc track the latest released zenops, not main —
# people landing on the site are likely running an installed (released)
# version and want docs that match their binary. Tag pushes are the
# trigger; main pushes are not.
on:
  push:
    tags:
      # `zenops-v[0-9]*` not `zenops-v*` — the digit class keeps the
      # trigger from firing on hypothetical future tag namespaces like
      # `zenops-vale-*` or `zenops-vault-*`.
      - 'zenops-v[0-9]*'
  # Manual runs use whichever ref is selected in the "Run workflow"
  # panel (`github.ref`), which `actions/checkout` honours by default.
  # Default is the repo's default branch (`main`); pick a tag or branch
  # in the dropdown to rebuild a specific version or branch in a crisis.
  workflow_dispatch:

# Only one Pages deploy runs at a time. If two release tags land back to
# back, the older deploy is cancelled in favour of the newer one.
concurrency:
  group: pages
  cancel-in-progress: true

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 20
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable
      - uses: Swatinem/rust-cache@v2
        with:
          key: pages-build
      - uses: taiki-e/install-action@v2
        with:
          tool: just,mdbook
      - run: just docs-build
      - uses: actions/configure-pages@v5
      - uses: actions/upload-pages-artifact@v3
        with:
          path: docs/book/book

  deploy:
    needs: build
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - id: deployment
        uses: actions/deploy-pages@v4