Repository navigation
Label main as "latest" in the version switcher #15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Deploy every documentation version (one per branch) to GitHub Pages. | |
| # main -> https://maxon-computer.github.io/AutographPythonDoc/ | |
| # <other branch> -> https://maxon-computer.github.io/AutographPythonDoc/<other branch>/ | |
| # | |
| # GitHub Pages allows a single deployment per repository, so every run rebuilds | |
| # the whole site from all branches rather than updating one version in place. | |
| name: Deploy static content to Pages | |
| on: | |
| # A push to any branch rebuilds the site, so every version stays in sync | |
| push: | |
| branches: ["**"] | |
| # Rebuild after a branch is deleted so its version drops off the site | |
| delete: | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. | |
| # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: false | |
| jobs: | |
| # Single deploy job since we're just deploying | |
| deploy: | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| # Every branch is needed, not just the one that triggered the run | |
| fetch-depth: 0 | |
| - name: Assemble one version per branch | |
| run: | | |
| set -euo pipefail | |
| rm -rf _site && mkdir -p _site | |
| # Match on the full refname: %(refname:short) abbreviates | |
| # refs/remotes/origin/HEAD to plain "origin", which would slip | |
| # past a short-name filter and become a phantom branch. | |
| git for-each-ref --format='%(refname)' refs/remotes/origin \ | |
| | grep -v '^refs/remotes/origin/HEAD$' \ | |
| | sed 's|^refs/remotes/origin/||' > branches.txt | |
| while read -r branch; do | |
| if [ "$branch" = "main" ]; then dest="_site"; else dest="_site/$branch"; fi | |
| echo "::group::$branch -> ${dest#_site}/" | |
| mkdir -p "$dest" | |
| # Export the committed tree straight from the object database | |
| git archive "origin/$branch" | tar -x -C "$dest" | |
| rm -rf "$dest/.github" | |
| echo "::endgroup::" | |
| done < branches.txt | |
| touch _site/.nojekyll | |
| - name: Add sidebar version switcher | |
| run: python3 .github/scripts/inject_version_switcher.py _site branches.txt | |
| - name: Setup Pages | |
| uses: actions/configure-pages@v5 | |
| - name: Upload artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| # Upload the assembled multi-version site | |
| path: '_site' | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v5 |