From 73376a0d488ecb56592ffcf1a7787048e3757604 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 16 Nov 2025 21:53:10 +0000 Subject: [PATCH 1/2] fix: Switch to gh-pages branch deployment for PR preview compatibility The previous setup used artifact-based GitHub Pages deployment which conflicted with the PR preview action that pushes to the gh-pages branch. This change switches the main deployment to also use the gh-pages branch, making both workflows compatible. Changes: - Replace artifact-based deployment with peaceiris/actions-gh-pages action - Configure to deploy from gh-pages branch - Add keep_files: true to preserve PR preview directories - Simplify permissions to only require contents: write Note: Repository Pages settings must be configured to deploy from the gh-pages branch for this to work. --- .github/workflows/static.yml | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 8a4aa6a..f75007c 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -11,9 +11,7 @@ on: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: - contents: read - pages: write - id-token: write + contents: 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. @@ -24,20 +22,15 @@ concurrency: 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@v3 - - name: Setup Pages - uses: actions/configure-pages@v3 - - name: Upload artifact - uses: actions/upload-pages-artifact@v1 - with: - # Upload entire repository - path: './docs' + uses: actions/checkout@v4 + - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v2 + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./docs + publish_branch: gh-pages + keep_files: true # Keep PR preview files From 6e80c65e92113aff9dc24822736fb86537f8bc90 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 16 Nov 2025 21:57:43 +0000 Subject: [PATCH 2/2] refactor: Consolidate GitHub Pages deployment into single workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Simplified deployment by merging static.yml and pr-preview.yml into a single pages.yml workflow. The rossjrw/pr-preview-action handles both: - Main branch pushes → deploy to gh-pages root (production) - Pull requests → deploy to gh-pages/pr-previews/pr-{number} - PR close → cleanup preview directory This reduces complexity and maintenance while providing the same functionality. One workflow, one action, all deployments. Changes: - Merged pr-preview.yml and static.yml into pages.yml - Added push trigger for main branch deployment - Renamed jobs to 'deploy' and 'cleanup' for clarity - Removed redundant static.yml workflow --- .../workflows/{pr-preview.yml => pages.yml} | 22 +++++++++--- .github/workflows/static.yml | 36 ------------------- 2 files changed, 18 insertions(+), 40 deletions(-) rename .github/workflows/{pr-preview.yml => pages.yml} (67%) delete mode 100644 .github/workflows/static.yml diff --git a/.github/workflows/pr-preview.yml b/.github/workflows/pages.yml similarity index 67% rename from .github/workflows/pr-preview.yml rename to .github/workflows/pages.yml index 11d72b0..bec5de1 100644 --- a/.github/workflows/pr-preview.yml +++ b/.github/workflows/pages.yml @@ -1,23 +1,36 @@ -name: Deploy PR Preview +name: Deploy to GitHub Pages on: + # Deploy main branch to production + push: + branches: ["main"] + + # Deploy PR previews pull_request: branches: ["main"] types: [opened, synchronize, reopened, closed] + # Allow manual deployment + workflow_dispatch: + permissions: contents: write pull-requests: write +concurrency: + group: pages-${{ github.ref }} + cancel-in-progress: false + jobs: - deploy-preview: + deploy: + # Skip on PR close events (handled by cleanup job) if: github.event.action != 'closed' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - - name: Deploy PR Preview + - name: Deploy to GitHub Pages uses: rossjrw/pr-preview-action@v1 with: source-dir: ./docs @@ -25,7 +38,8 @@ jobs: umbrella-dir: pr-previews action: auto - cleanup-preview: + cleanup: + # Only run when PR is closed if: github.event.action == 'closed' runs-on: ubuntu-latest steps: diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml deleted file mode 100644 index f75007c..0000000 --- a/.github/workflows/static.yml +++ /dev/null @@ -1,36 +0,0 @@ -# Simple workflow for deploying static content to GitHub Pages -name: Deploy static content to Pages - -on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # 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: 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: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs - publish_branch: gh-pages - keep_files: true # Keep PR preview files