name: Jekyll Site CI/CD on: # Test on pull requests pull_request: paths: - 'docs/**' - '*.cue' - '.github/workflows/jekyll-site.yml' # Deploy on pushes to main push: branches: - main paths: - 'docs/**' - '*.cue' - '.github/workflows/jekyll-site.yml' # Allow manual workflow dispatch workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to minimum required permissions: contents: read pages: write id-token: write # Allow only one concurrent deployment concurrency: group: ${{ github.event_name == 'push' && 'pages' || (github.event_name == 'pull_request' && format('pr-{0}', github.event.pull_request.number) || format('manual-{0}', github.run_id)) }} cancel-in-progress: false jobs: # Build and test job build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup Pages if: github.event_name == 'push' && github.ref == 'refs/heads/main' id: pages uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.2' bundler-cache: true working-directory: ./docs - name: Setup Go uses: actions/setup-go@v6 with: go-version: '1.24' - name: Generate documentation run: make gendocs - name: Build with Jekyll uses: actions/jekyll-build-pages@44a6e6beabd48582f863aeeb6cb2151cc1716697 # v1.0.13 with: source: ./docs destination: ./docs/_site - name: Test HTML run: make test-links - name: Upload artifact for GitHub Pages if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0 with: path: docs/_site # Deployment job (only runs on push to main) deploy: if: github.event_name == 'push' && github.ref == 'refs/heads/main' environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5