From 26df6a2907e38c573cf21ec34aa256b7e2dc116c Mon Sep 17 00:00:00 2001 From: Aaron Powell Date: Mon, 2 Feb 2026 15:55:07 +1100 Subject: [PATCH] feat(ci): add PR preview deployments - Add pr-preview.yml workflow using rossjrw/pr-preview-action - Update astro.config.mjs to support dynamic base path via ASTRO_BASE env - Previews deploy to /pr-preview/pr-/ on gh-pages branch - Auto-cleanup when PR is closed --- .github/workflows/pr-preview.yml | 68 ++++++++++++++++++++++++++++++++ website/astro.config.mjs | 5 ++- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/pr-preview.yml diff --git a/.github/workflows/pr-preview.yml b/.github/workflows/pr-preview.yml new file mode 100644 index 00000000..70dd9d6c --- /dev/null +++ b/.github/workflows/pr-preview.yml @@ -0,0 +1,68 @@ +# PR Preview deployment workflow +# Deploys a preview of pull requests to GitHub Pages subdirectory + +name: Deploy PR Preview + +on: + pull_request: + types: [opened, reopened, synchronize, closed] + paths: + - 'website/**' + - 'agents/**' + - 'prompts/**' + - 'instructions/**' + - 'skills/**' + - 'collections/**' + - 'cookbook/**' + - 'eng/generate-website-data.mjs' + +concurrency: + group: pr-preview-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: write + pull-requests: write + +jobs: + deploy-preview: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + if: github.event.action != 'closed' + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Install root dependencies + if: github.event.action != 'closed' + run: npm ci + + - name: Install website dependencies + if: github.event.action != 'closed' + run: npm ci + working-directory: ./website + + - name: Generate website data + if: github.event.action != 'closed' + run: npm run website:data + + - name: Build Astro site + if: github.event.action != 'closed' + run: npm run build + working-directory: ./website + env: + # Set base path for PR preview subdirectory + ASTRO_BASE: /awesome-copilot/pr-preview/pr-${{ github.event.number }} + + - name: Deploy PR preview + uses: rossjrw/pr-preview-action@v1 + with: + source-dir: ./website/dist/ + preview-branch: gh-pages + umbrella-dir: pr-preview + action: auto diff --git a/website/astro.config.mjs b/website/astro.config.mjs index e0176df0..ea603ce9 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -1,10 +1,13 @@ import sitemap from "@astrojs/sitemap"; import { defineConfig } from "astro/config"; +// Support dynamic base path for PR previews via ASTRO_BASE env var +const base = process.env.ASTRO_BASE || "/"; + // https://astro.build/config export default defineConfig({ site: "https://github.github.io", - base: "/", + base: base, output: "static", integrations: [sitemap()], build: {