Commit eda58ec
feat: add AI release notes pipeline and test harness (#451)
## Summary
- TypeScript data-gathering script that extracts PR details, labels, and
categorization from GitHub API
- Prompt template for Claude to generate changelog prose (assembled via
simple shell concatenation with JSON data)
- Reusable workflow component (`cicd_comp_ai-release-notes-phase.yml`)
with release validation and `continue-on-error` for non-blocking
execution
- Backfill workflow (`cicd_ai-release-notes-backfill.yml`) for
manual/retroactive runs
- Reproducible test harness script (`test/create-test-harness.sh`)
- Jest tests for categorization and GitHub API helpers (30 passing)
## Architecture
```
┌─────────────────────────────────────────────────────────┐
│ RELEASE PIPELINE │
│ (cicd_6-release.yml) │
│ │
│ Step 1: Build artifacts │
│ Step 2: Run tests │
│ Step 3: Create GitHub release + tag │
│ Step 4: Deploy │
│ Step 5: ───► calls ───────────────────────┐ │
│ (passes newly generated release tag) │
└────────────────────────────────────────────┼─────────────┘
│
▼
┌──────────────────────────┐
│ REUSABLE COMPONENT │
│ (cicd_comp_ai-release- │
│ notes-phase.yml) │
│ │
│ 1. Gather PR data │
│ 2. Assemble prompt │
│ 3. Claude writes notes │
│ 4. Update release desc │
└──────────────────────────┘
▲
│
┌────────────────────────────────────────────┼─────────────┐
│ BACKFILL WORKFLOW │ │
│ (cicd_ai-release-notes-backfill.yml)│ │
│ │ │
│ Manual trigger (workflow_dispatch) ───────┘ │
│ │
│ Use cases: │
│ • Past releases that never got AI notes │
│ • Re-generate notes after prompt improvements │
│ • Test the pipeline without doing a real release │
└──────────────────────────────────────────────────────────┘
```
## Test plan
- [ ] Merge this PR so workflows are available on `main`
- [ ] Trigger backfill workflow with `v26.03.17-02` to test end-to-end
- [ ] Verify filter: trigger with `v26.03.17_lts_v01` → should skip
- [ ] Re-trigger with `v26.03.17-02` → should safely overwrite existing
notes
## Links
closes dotCMS#35016
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Steve Freudenthaler <stevefreudenthaler@dotcmss-mbp.home>1 parent 85ebf00 commit eda58ec
File tree
14 files changed
+5626
-0
lines changed- .github
- scripts/gather-release-data
- src
- test
- workflows
14 files changed
+5626
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
0 commit comments