Release Workflow Implementation Summary
February 18, 2026 · View on GitHub
Date: 2026-02-18
Status: ✅ Complete
Pattern: Based on Hack23/blacktrigram release workflow
What Was Implemented
A comprehensive release workflow for the Hack23 homepage static website that implements:
- Supply Chain Security (SLSA Build Level 3)
- Documentation as Code (automated report generation)
- Dual Deployment (GitHub Pages + S3/CloudFront integration)
- Automated Versioning (tag-based and manual dispatch)
Files Created
1. .github/workflows/release.yml (546 lines)
Three-job workflow:
-
prepare: Generates documentation
- HTML validation reports
- Lighthouse audits (performance, accessibility, SEO)
- Accessibility compliance (WCAG 2.1 AA)
- Security report summaries
- Commits all to
docs/directory
-
build: Creates release artifacts
- Minifies HTML/CSS/JS
- Creates ZIP package
- Generates SBOM (SPDX format)
- Creates build provenance attestation
- Creates SBOM attestation
-
release: Publishes and deploys
- Creates GitHub Release with release-drafter
- Attaches all artifacts and attestations
- Deploys to GitHub Pages (backup)
- Generates deployment summary
2. .github/release-drafter.yml (73 lines)
Automated changelog configuration:
- Categories: Features, Bug Fixes, Maintenance, Documentation, Security, Accessibility, i18n, Performance
- Version resolution: major/minor/patch based on labels
- Template includes quality metrics, security info, deployment details
3. docs/ Directory Structure
Documentation as code storage:
index.html- Beautiful documentation viewer with card-based UIREADME.md- Documentation directory overviewWORKFLOW_DOCUMENTATION.md- Complete workflow usage guide- Generated files (on release):
html-validation.txtlighthouse-*.htmlandlighthouse-*.jsonaccessibility-report.htmlsecurity-report.htmlRELEASE_SUMMARY.mdVERSION.txtandversion.txt
Key Differences from Black Trigram
| Aspect | Black Trigram | Homepage |
|---|---|---|
| Application Type | Three.js game (Vite build) | Static HTML/CSS website |
| Build Process | npm run build with Vite | Minify HTML/CSS/JS only |
| Test Suite | Cypress E2E tests, unit tests | HTML validation, Lighthouse |
| API Docs | JSDoc generated | N/A (static site) |
| Dependencies | npm packages, Three.js | Minimal (images, fonts) |
| Deployment | GitHub Pages (game) | S3/CloudFront + gh-pages backup |
Adapted Features
✅ Kept from Black Trigram:
- Three-job structure (prepare, build, release)
- SBOM generation with anchore/sbom-action
- Build provenance attestations
- SBOM attestations
- Release-drafter integration
- Documentation as code principle
- Security-first approach (harden-runner, minimal permissions)
- SHA-pinned action versions
✅ Adapted for Static Site:
- Removed npm build steps (no package.json)
- Removed test suite (no tests in homepage)
- Added HTML validation reports
- Simplified artifact creation (ZIP of HTML/CSS/JS)
- Integrated with existing main.yml deployment
- Added Lighthouse audits via treosh/lighthouse-ci-action
- Created custom documentation reports
Security Implementation
SLSA Build Level 3 Compliance
| Requirement | Implementation |
|---|---|
| Build as Code | Workflow in .github/workflows/release.yml |
| Provenance | actions/attest-build-provenance@v3.2.0 |
| Isolation | GitHub-hosted runners (ephemeral) |
| Parameterless | Deterministic from git tag |
| Non-falsifiable | GitHub OIDC signing |
Permissions Model
# Top-level (default for all jobs)
permissions: read-all
# Job-specific overrides
prepare:
permissions:
contents: write # Commit docs
build:
permissions:
contents: read
id-token: write # OIDC signing
attestations: write # Create attestations
release:
permissions:
contents: write # Create releases
id-token: write # OIDC signing
Supply Chain Security Features
- Step Security Harden Runner: Network egress auditing
- Action Pinning: All actions pinned to commit SHA
- SBOM: Complete dependency inventory
- Attestations: Cryptographic proof of build
- Automated Scanning: Integrated with main.yml ZAP scans
Documentation as Code
Philosophy
All release documentation is:
- ✅ Generated automatically
- ✅ Committed to repository
- ✅ Versioned with code
- ✅ Available in releases
Reports Generated
-
HTML Validation (
docs/html-validation.txt)- Validates all
*.htmlfiles - Uses html-validate npm package
- Reports errors and warnings
- Validates all
-
Lighthouse Audits (
docs/lighthouse-*.html)- Performance metrics
- Accessibility score (target: 100)
- Best practices
- SEO score (target: 100)
- Generated for key pages
-
Accessibility Report (
docs/accessibility-report.html)- WCAG 2.1 AA compliance summary
- Semantic HTML verification
- Keyboard navigation status
- Color contrast compliance
-
Security Report (
docs/security-report.html)- Summary of security posture
- Links to main.yml ZAP scans
- Security headers status
- HTTPS enforcement
-
Release Summary (
docs/RELEASE_SUMMARY.md)- Version and metadata
- Documentation checklist
- Deployment targets
- Supply chain security info
Testing the Workflow
Pre-release Test
# Create pre-release tag
git tag v1.0.0-rc.1
git push origin v1.0.0-rc.1
Production Release
# Create production tag
git tag v1.0.0
git push origin v1.0.0
Manual Dispatch
- Go to Actions → Build, Attest and Release
- Click "Run workflow"
- Enter version (e.g.,
v1.0.0) - Select pre-release option if needed
- Run
Integration with Existing Workflows
main.yml (Existing)
- Triggers on:
push to master - Actions:
- Minifies HTML/CSS/JS
- Deploys to S3/CloudFront
- Runs Lighthouse audits
- Performs ZAP security scans
release.yml (New)
- Triggers on:
tags v*or manual - Actions:
- Generates documentation
- Creates versioned release
- Produces SBOM and attestations
- Deploys to GitHub Pages
Workflow: Push to master → main.yml deploys. Create tag → release.yml releases.
Verification Commands
Verify Attestations
gh attestation verify homepage-v1.0.0.zip --owner Hack23
View SBOM
gh release download v1.0.0 -R Hack23/homepage -p "*.spdx.json"
cat homepage-v1.0.0.spdx.json | jq
Check Documentation
git clone https://github.com/Hack23/homepage
cd homepage
ls -la docs/
Success Criteria
- Workflow follows Black Trigram pattern
- SLSA Build Level 3 attestations generated
- SBOM in SPDX format created
- Documentation committed to repository
- Dual deployment (gh-pages + note for S3)
- Security-first approach implemented
- Release-drafter configured
- Comprehensive documentation provided
- Zero security vulnerabilities (CodeQL passed)
Next Steps
- Test the workflow by creating a test tag
- Verify attestations are correctly generated
- Review generated documentation in docs/
- Validate deployment to GitHub Pages
- Create first production release (v1.0.0)
References
- Black Trigram Example: https://github.com/Hack23/blacktrigram/blob/main/.github/workflows/release.yml
- SLSA Framework: https://slsa.dev/
- GitHub Attestations: https://docs.github.com/en/actions/security-guides/using-artifact-attestations
- Workflow Documentation:
docs/WORKFLOW_DOCUMENTATION.md - Release Drafter: https://github.com/release-drafter/release-drafter
Implementation Status: ✅ Complete and ready for testing
Security Status: ✅ CodeQL passed with zero alerts
Documentation Status: ✅ Comprehensive documentation provided