name: Build docs and deploy GitHub Pages on: push: # run on any branch, but deploy only on main pull_request: branches: - main workflow_dispatch: # allow this task to be manually started jobs: build-docs: name: Run build docs runs-on: ubuntu-latest env: GO_VERSION: 1.25.1 HUGO_VERSION: 0.125.1 steps: - name: Checkout uses: actions/checkout@v6 with: submodules: recursive fetch-depth: 0 - name: Setup Go uses: actions/setup-go@v6 with: go-version: ${{ env.GO_VERSION }} cache: false - name: Create directory for user-specific executable files run: | mkdir -p "${HOME}/.local" - name: Install Hugo run: | curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" mkdir "${HOME}/.local/hugo" tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" echo "${HOME}/.local/hugo" >> "${GITHUB_PATH}" - name: Build the site run: | hugo --gc --minify --source ./docs - name: Upload artifact uses: actions/upload-pages-artifact@v4 with: path: ./docs/public deploy: if: github.ref == 'refs/heads/main' permissions: id-token: write pages: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build-docs steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4