Commit 5ffc938
authored
feat: changelog-first release flow with build artifacts on draft releases (#125)
* docs: add administrative guide for CI/CD infrastructure
Documents GitHub Workflows, protected environments, secrets,
variables, permissions, security posture, code ownership,
and release process for administrators and AI coding agents.
* feat: add build artifacts to draft releases
- release.yml: create draft release instead of published (draft: true)
- codebuild.yml: add v* tag trigger, elevate contents permission to
write, add resilient release upload step that handles all states
(draft exists, no release, already published with graceful failure)
- docs: update ADMINISTRATIVE_GUIDE.md with new release flow
The release process now requires human review before publishing:
tag push → draft release created → CodeBuild artifacts attached →
human reviews and publishes → changelog workflow triggered.
* docs: replace ASCII pipeline diagrams with mermaid in admin guide
Adds manual approval gate (codebuild environment) to the diagrams
and shows the resilient three-state release upload logic visually.
* feat: add workflow_dispatch tag input and mermaid diagrams
- codebuild.yml: add optional tag input to workflow_dispatch as a
backup strategy for attaching artifacts to a release when the
tag-triggered run fails or is blocked
- docs: replace pipeline diagrams with mermaid, show draft release
convergence from release.yml into codebuild upload, and include
the manual dispatch backup path
* feat: changelog-first release flow with release PR and auto-tagging
Replace the post-release changelog workflow with a changelog-first flow:
- release-pr.yml: generates CHANGELOG.md and opens a release PR
- tag-on-merge.yml: auto-tags the merge commit when a release PR is merged
- Delete changelog.yml (no longer needed)
- Update cliff.toml with skip rule for changelog noise and bump config
- Update release.yml header comment to reference new flow
- Update ADMINISTRATIVE_GUIDE.md with new architecture, diagrams, and process
* feat: validate semver format on release-pr version input
Reject version inputs that don't match strict MAJOR.MINOR.PATCH format.
* feat: graceful fallback when no conventional commits detected
Fall back to patch bump from latest tag instead of failing. If no tags
exist at all, exit cleanly with a warning instead of failing the workflow.
* fix: only apply release label if it exists in the repo
* fix: dispatch release and codebuild workflows explicitly after tagging
Tags created via GITHUB_TOKEN don't trigger push events in other
workflows. Use gh workflow run with --ref to dispatch release.yml and
codebuild.yml directly, which is exempt from this limitation.
* docs: update admin guide for workflow dispatch pattern
Update diagram, workflow reference, permissions, and release process
to reflect that tag-on-merge.yml dispatches release.yml and codebuild.yml
explicitly via workflow_dispatch rather than relying on tag push events.
* fix: add --repo flag to gh workflow run commands
The tag-on-merge job has no checkout step, so gh needs an explicit
--repo to know which repository to dispatch workflows in.
* fix: skip release gracefully when dispatched from a branch
Show a warning annotation and skip remaining steps instead of failing
with a confusing error when the workflow runs on a non-tag ref.
* docs: fix admin guide accuracy for recent workflow changes
- Release PR: document semver validation, graceful fallback, conditional label
- Tag Release: add --repo to dispatch step descriptions
- CodeBuild: mention dispatch from tag-on-merge.yml in trigger description
- Release: document graceful skip when dispatched from a branch
- Security Posture: add injection-safe input patterns
* style: align markdown table columns in admin guide
* feat: wait for draft release before dispatching codebuild
Dispatch release.yml first and watch it to completion before dispatching
codebuild.yml. This ensures the draft release exists before build
artifacts are uploaded. Falls back to dispatching codebuild anyway if
the release run can't be found or doesn't succeed.
* docs: update admin guide for sequential release-then-codebuild dispatch
* fix: skip gracefully when release branch already exists
Check for existing remote branch before attempting to create it.
Exits cleanly with a warning annotation pointing the user to the
existing PR instead of failing on git checkout -b.
* docs: document release branch existence check in admin guide
* fix: simplify mermaid diagram node text to fix rendering
Remove special characters (--ref, --bumped-version) from node labels
that mermaid may interpret as link syntax. Fix ambiguous dual outgoing
edges from release.yml node.
* fix: use ::warning:: annotation for no-tags-exist case
---------
Co-authored-by: Scott Schreckengaust <345885+scottschreckengaust@users.noreply.github.com>1 parent 4f9292a commit 5ffc938
File tree
7 files changed
+744
-68
lines changed- .github/workflows
- docs
7 files changed
+744
-68
lines changedThis file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
36 | 38 | | |
37 | 39 | | |
38 | 40 | | |
39 | | - | |
| 41 | + | |
40 | 42 | | |
41 | 43 | | |
42 | 44 | | |
| |||
203 | 205 | | |
204 | 206 | | |
205 | 207 | | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 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 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
| 11 | + | |
11 | 12 | | |
12 | | - | |
13 | | - | |
14 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
15 | 17 | | |
16 | 18 | | |
17 | 19 | | |
18 | 20 | | |
| 21 | + | |
19 | 22 | | |
20 | 23 | | |
21 | 24 | | |
| |||
37 | 40 | | |
38 | 41 | | |
39 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
40 | 48 | | |
41 | | - | |
42 | | - | |
| 49 | + | |
| 50 | + | |
43 | 51 | | |
44 | 52 | | |
| 53 | + | |
45 | 54 | | |
46 | 55 | | |
47 | 56 | | |
48 | 57 | | |
49 | 58 | | |
| 59 | + | |
50 | 60 | | |
51 | 61 | | |
| 62 | + | |
52 | 63 | | |
53 | 64 | | |
54 | 65 | | |
| |||
0 commit comments