Generate and Deploy GitHub Pages #3791
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
| name: Generate and Deploy GitHub Pages | |
| on: | |
| # Run once hourly | |
| schedule: | |
| - cron: '0 * * * *' | |
| # Allow manual trigger | |
| workflow_dispatch: | |
| # Run on pushes to main branch | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # Fetch all history for proper repo data | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.24.x' | |
| cache: true | |
| - name: Build Site Generator | |
| run: | | |
| go install github.com/go-i2p/go-gh-page/cmd/github-site-gen@latest | |
| export GOBIN=$(go env GOPATH)/bin | |
| cp -v "$GOBIN/github-site-gen" ./github-site-gen | |
| # Ensure the binary is executable | |
| chmod +x github-site-gen | |
| - name: Generate Site | |
| run: | | |
| # Determine current repository owner and name | |
| REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d '/' -f 1) | |
| REPO_NAME=$(echo $GITHUB_REPOSITORY | cut -d '/' -f 2) | |
| # Generate the site | |
| ./github-site-gen -repo "${REPO_OWNER}/${REPO_NAME}" -output ./site | |
| # Create a .nojekyll file to disable Jekyll processing | |
| touch ./site/.nojekyll | |
| # Add a .gitattributes file to ensure consistent line endings | |
| echo "* text=auto" > ./site/.gitattributes | |
| - name: Deploy to GitHub Pages | |
| uses: JamesIves/github-pages-deploy-action@v4 | |
| with: | |
| folder: site # The folder the action should deploy | |
| branch: gh-pages # The branch the action should deploy to | |
| clean: true # Automatically remove deleted files from the deploy branch | |
| commit-message: "Deploy site generated on ${{ github.sha }}" |