Adds PR preview handling workflow

This commit is contained in:
Andrew Gioia 2025-12-10 10:57:59 -05:00
parent ae7fd11dc9
commit df0e7ff45f
Signed by: andrew
GPG Key ID: FC09694A000800C8

98
.github/workflows/pr.yml vendored Normal file
View File

@ -0,0 +1,98 @@
name: Docs Preview (PR)
on:
pull_request:
types: [opened, synchronize, reopened]
branches:
- master
permissions:
contents: read
pages: write
id-token: write
pull-requests: write
concurrency:
group: docs-preview-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
build:
name: Build docs
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build docs (npm run publish)
run: npm run publish
- name: Upload artifact for GitHub Pages
uses: actions/upload-pages-artifact@v3
with:
path: ./docs
deploy:
name: Deploy PR preview
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
outputs:
page_url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages (preview)
id: deployment
uses: actions/deploy-pages@v4
with:
# mark this as a preview deployment for a PR
preview: true
comment:
name: Comment preview URL on PR
needs: deploy
runs-on: ubuntu-latest
# only run if we actually got a URL, and only for same-repo PRs (forks have restricted tokens)
if: >
needs.deploy.outputs.page_url != '' &&
github.event.pull_request.head.repo.full_name == github.repository
steps:
- name: Find existing docs preview comment
id: find-comment
uses: peter-evans/find-comment@v4
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: 'Keyrune docs preview'
- name: Create or update docs preview comment
uses: peter-evans/create-or-update-comment@v5
with:
comment-id: ${{ steps.find-comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
🔍 **Keyrune docs preview**
Preview URL: ${{ needs.deploy.outputs.page_url }}
- Source branch: `${{ github.head_ref }}`
- Target branch: `${{ github.base_ref }}`
- Commit: `${{ github.sha }}`
- Workflow run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
_This comment will update automatically when new commits are pushed to this PR._
edit-mode: replace