To update openqse.org:
- Make changes in a branch
- Push to GitHub
- Merge to
main - ✅ Auto-deploys to openqse.org
PR Previews:
- Open a PR → Get preview at
https://openqse.org/previews/pr-123/ - Review changes live before merging
- Preview auto-cleans up when PR is closed
- Workflow:
.github/workflows/build-jekyll.yml - Reusable workflow that builds the Jekyll site with configurable baseurl
- Used by both PR checks and production deployment to ensure consistency
- Workflow:
.github/workflows/pr-checks.yml - Runs on every PR (opened, updated, reopened) - does NOT run on label changes for efficiency
- Two-stage validation:
- Build Stage: Validates Jekyll build succeeds
- Merge Check Stage: Runs only after build succeeds, checks for DO-NOT-MERGE label
- Blocks merge if:
- Jekyll build fails (build-test job), OR
- PR has
DO-NOT-MERGElabel (check-merge-status job depends on build-test)
- Note: Label check runs on next push, not immediately when label is added/removed
- Uses shared build workflow to validate changes
- Workflow:
.github/workflows/pr-preview.yml - PR branches → Deploy to
gh-pages/previews/pr-X/subdirectories →https://openqse.org/previews/pr-X/ - Bot comments on PR with preview URL
- Auto-updates on new commits
- Auto-cleans up when PR closes
- Note: Previews are accessible via the custom domain once main site is deployed
- Workflow:
.github/workflows/deploy-jekyll.yml mainbranch → Deploys togh-pagesbranch root →openqse.org- Uses shared build workflow, then deploys artifact to production
- Keeps PR preview directories intact (
keep_files: true)
git checkout --orphan gh-pages
git rm -rf .
echo "# PR Previews" > README.md
git add README.md
git commit -m "Initialize gh-pages for PR previews"
git push origin gh-pages
git checkout mainIn repository Settings → Pages:
- Build and deployment:
- Source: Deploy from a branch
- Branch:
gh-pages/(root)
- Click Save
Full path: Settings → Pages → Build and deployment → Source → Deploy from a branch
In repository Settings → Actions → General:
- Under "Workflow permissions":
- ✅ Select Read and write permissions
- ✅ Check Allow GitHub Actions to create and approve pull requests
- Click Save
- Create a branch and push your changes
- Open a pull request
- The workflow automatically builds your site and deploys to
https://openqse.org/previews/pr-{number}/ - A bot comment appears on your PR with the preview URL
- Push new commits to your PR branch
- The preview automatically rebuilds and updates
- The bot comment updates with the new commit hash
- Review your changes at the PR preview URL
- Ensure PR checks pass (build succeeds, no DO-NOT-MERGE label)
- Merge the PR to
main - The deployment workflow deploys to production at
https://openqse.org - The PR preview is automatically cleaned up
- Add
DO-NOT-MERGElabel to a PR to prevent accidental merging - PR checks will fail while this label is present
- Remove the label when the PR is ready to merge
Preview URL returns 404:
- Wait 2-3 minutes after the workflow completes for GitHub Pages to update
- Verify the workflow succeeded in the Actions tab
- Check that
gh-pagesbranch exists
Workflow fails:
- Check Settings → Actions → General → Workflow permissions
- Ensure "Read and write permissions" is enabled
openqse.org doesn't work after setup:
- Verify the CNAME file contains
openqse.org - Check Settings → Pages shows "Custom domain: openqse.org"
- DNS settings should already be correct (no changes needed)
This document covers deployment workflows. For site content and maintenance (adding pages, navigation links, blog posts, etc.), see:
→ MAINTAINERS.md - Quick reference guide for common site maintenance tasks
→ CLAUDE.md - Comprehensive technical documentation for site architecture