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 }}"