diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3a033e7..934c623 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -3,18 +3,68 @@ name: Docs on: push: branches: [main] - paths: ["docs/**", "mkdocs.yml", ".github/workflows/docs.yml"] + paths: + - 'docs/**' + - 'mkdocs.yml' + - 'README.md' + - '.github/workflows/docs.yml' + pull_request: + paths: + - 'docs/**' + - 'mkdocs.yml' + - 'README.md' + - '.github/workflows/docs.yml' + workflow_dispatch: permissions: - contents: write + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false jobs: - deploy: + build: + name: Build MkDocs site runs-on: ubuntu-latest steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + - name: Checkout + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + + - name: Setup Python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: '3.x' + + - name: Install MkDocs Material + run: | + set -euo pipefail + python3 -m pip install --upgrade pip + python3 -m pip install mkdocs mkdocs-material + + - name: Build site (strict) + run: mkdocs build --strict --site-dir site + + - name: Upload Pages artifact + if: github.ref == 'refs/heads/main' + uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 with: - python-version: "3.x" - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force + path: site + + deploy: + name: Deploy to GitHub Pages + if: github.ref == 'refs/heads/main' + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Setup Pages + uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0 + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0