Complete reference for the W.R.A.A.S. GitHub Actions workflows. For troubleshooting failures, see How to Debug CI Failures.
| Workflow | File | Trigger | Purpose |
|---|---|---|---|
| CI | ci.yaml |
PR, push to main |
Lint, external URL checks, OG metadata validation |
| Lighthouse CI | lighthouse.yaml |
PR, push to main |
Performance, accessibility, best practices, SEO audits |
| Check robots.txt | check-robots-txt.yaml |
PR (when site/robots.txt changes) |
robots.txt syntax validation |
| Check SRI Hash | check-sri.yaml |
Daily (6 AM UTC), manual | GoatCounter SRI integrity hash verification |
| Broken Links | links.yaml |
Weekly (Monday 9 AM UTC), push to main, manual |
Broken link detection across site/ |
| Preview Build | preview.yaml |
PR | Build artifact for PR preview |
| Deploy | deploy.yaml |
Push to main, manual |
Deploy to GitHub Pages |
Triggers: pull_request, push to main
Permissions: contents: read, pull-requests: write
Steps:
- Lint HTML, CSS, and JS via
just lint - Extract and validate all external URLs in
site/(excludesyoutube.com,lyricsondemand.com,goatcounter.com,wraas.github.io) - Validate required OG metadata tags on
site/index.htmlandsite/404.html - On failure: comment on PR with details (updates existing comment if present)
Required OG tags: og:title, og:description, og:image, og:url, og:site_name
Triggers: pull_request, push to main
Permissions: contents: read, pull-requests: write
Steps:
- Build site via
just build - Start a local Python HTTP server on port 8000
- Run Lighthouse on 6 pages:
/,/about/,/chuck/,/generate/,/karaoke/,/404.html - Fail if any category (performance, accessibility, best practices) scores below 90
- Comment on PR with per-page scores (updates existing comment if present)
Lighthouse flags: --headless=new, --no-sandbox, --throttling-method=devtools, --disable-full-page-screenshot
Triggers: pull_request (only when site/robots.txt is modified)
Permissions: pull-requests: write
Steps:
- Parse
site/robots.txtline by line - Validate directive syntax:
User-agent,Allow,Disallow,Sitemap,Crawl-delay,Host - Verify every
Allow/Disallowhas a precedingUser-agent - Verify
Sitemapvalues are valid URLs - Verify a catch-all
User-agent: *rule exists - On failure: comment on PR with details
Triggers: schedule (daily at 6 AM UTC), workflow_dispatch
Permissions: contents: write, pull-requests: write
Steps:
- Fetch
https://gc.zgo.at/count.jsand compute itssha384hash - Extract the current SRI hash from
site/index.html - If hashes match: exit successfully
- If mismatched: update the
integrityattribute in all 5 HTML files and create a PR
Updated files: site/index.html, site/404.html, site/about/index.html, site/chuck/index.html, site/karaoke/index.html, site/generate/index.html
PR details: branch fix/update-goatcounter-sri, label sri-update
Triggers: schedule (weekly, Monday at 9 AM UTC), push to main, workflow_dispatch
Permissions: contents: read, issues: write
Steps:
- Run lychee link checker on
site/directory - Excludes:
youtube.com,lyricsondemand.com,localhost,127.0.0.1, rickroll-related URLs - On failure: create an issue labeled
broken-links(skips if one already exists)
Lychee config: --timeout 30, --max-retries 2
Triggers: pull_request
Permissions: contents: read, pull-requests: write
Steps:
- Build site via
just build - Upload
_siteas artifactpreview-site-{PR number}(retained 7 days) - Comment on PR with download instructions
Triggers: push to main, workflow_dispatch
Permissions: contents: read, pages: write, id-token: write
Concurrency: group pages, does not cancel in-progress deploys
Steps:
- Build site via
just build - Upload
_siteas a Pages artifact - Deploy to the
github-pagesenvironment
All actions are pinned to commit SHAs for supply-chain security.
| Action | Version | SHA |
|---|---|---|
actions/checkout |
v6.0.2 | de0fac2e4500dabe0009e67214ff5f5447ce83dd |
actions/configure-pages |
v5.0.0 | 983d7736d9b0ae728b81ab479565c72886d7745b |
actions/upload-pages-artifact |
v4.0.0 | 7b1f4a764d45c48632c6b24a0339c27f5614fb0b |
actions/deploy-pages |
v4.0.5 | d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e |
actions/upload-artifact |
v4.6.2 | ea165f8d65b6e75b540449e92b4886f43607fa02 |
actions/github-script |
v8.0.0 | ed597411d8f924073f98dfc5c65a23a2325f34cd |
taiki-e/install-action |
v2.69.2 | 42721ded7ddc3cd90f687527e8602066e4e1ff3a |
lycheeverse/lychee-action |
v2.8.0 | 8646ba30535128ac92d33dfc9133794bfdd9b411 |
peter-evans/create-pull-request |
v8.1.0 | c0f553fe549906ede9cf27b5156039d195d2ece0 |
Workflows with workflow_dispatch can be triggered manually:
- Go to the Actions tab on the repository.
- Select the workflow from the left sidebar.
- Click "Run workflow" and select the branch.
Manual dispatch is available on: Deploy, Broken Links, Check SRI Hash.