Commit Graph

40 Commits

Author SHA1 Message Date
Micheal Wilkinson
8ea9acdebc feat: add changelog heading links for unreleased and releases
Some checks failed
Push Validation / validate (push) Failing after 42s
- Link Unreleased heading to repository main branch.
- Link release headings to release tag pages.
- Derive repository URL from CI metadata or origin git remote.
- Keep plain headings when repository URL cannot be resolved.
- Update tests and README usage docs for linked heading behavior.
2026-03-20 21:46:36 +00:00
Micheal Wilkinson
be4f3833a1 feat: chain do-release from prepare workflow
- Update prepare-release to call do-release via workflow_call after tag creation.
- Update README examples and release-flow docs to reflect direct invocation
  instead of relying only on tag-push triggers.
2026-03-20 21:46:36 +00:00
Micheal Wilkinson
63aa7376cc fix: fail prepare when release tag already exists
Some checks failed
Push Validation / validate (push) Has been cancelled
Prevent silent successful runs that skip tag creation. If the resolved
release tag already exists locally or remotely, fail with guidance so users
know why tag-triggered do-release will not run.
2026-03-20 21:29:54 +00:00
Micheal Wilkinson
e8e1dc9695 fix: make prepare action resilient for reruns
Some checks failed
Push Validation / validate (push) Has been cancelled
- Disable setup-go module cache path in prepare action's source-run mode
  to avoid invalid '..' cache-dependency-path patterns.
- Make commit/tag step idempotent when release tag already exists locally
  or remotely.
- Skip empty commit attempts when no release files changed while still
  allowing first-time tag creation.
2026-03-20 21:24:52 +00:00
Micheal Wilkinson
d63bfca291 fix: close prepare-release summary step block
All checks were successful
Push Validation / validate (push) Successful in 58s
2026-03-20 21:20:26 +00:00
Micheal Wilkinson
c079bf766f docs: refine changelog for initial release
All checks were successful
Push Validation / validate (push) Successful in 53s
2026-03-20 21:13:38 +00:00
Micheal Wilkinson
d6f178ede9 docs: polish README naming section formatting
All checks were successful
Push Validation / validate (push) Successful in 53s
2026-03-20 21:06:45 +00:00
Micheal Wilkinson
d6fa61dc7c docs: clarify fixed cache token behavior
All checks were successful
Push Validation / validate (push) Successful in 56s
2026-03-20 20:47:24 +00:00
Micheal Wilkinson
bab7b74da8 refactor: internalize auth and cache token wiring in prepare flow
- Remove token and cache-token from public action inputs
- Always use github.token internally for downloads/push
- Read fixed cache token from VOCIFERATE_CACHE_TOKEN env
- Add explicit 'Resolve cache token' step before prepare/tag in
  prepare-release workflow and pass it via env
2026-03-20 20:47:19 +00:00
Micheal Wilkinson
1b7281c168 docs: update changelog for cache token scoping
All checks were successful
Push Validation / validate (push) Successful in 54s
2026-03-20 20:40:59 +00:00
Micheal Wilkinson
011cca2334 feat: add repository-scoped cache token for action binaries
Add a new optional cache-token input to both published actions.

- Default cache key token is now action_repository + release_tag.
- Cache key uses this token plus runner architecture.
- prepare-release workflow passes github.sha as a fixed token.

This prevents cross-repository cache collisions when consumers pull
vociferate binaries produced by this repository.
2026-03-20 20:40:56 +00:00
Micheal Wilkinson
dda898868f docs: note @main go run behaviour in changelog
All checks were successful
Push Validation / validate (push) Successful in 53s
2026-03-20 20:34:51 +00:00
Micheal Wilkinson
b793e1b289 feat: use go run from source when action ref is @main
When github.action_ref is not a semver tag (e.g. main), skip binary
download and run vociferate directly via 'go run ./cmd/vociferate' from
the action's own source directory (GITHUB_ACTION_PATH). A conditional
Setup Go step installs the toolchain only on that path.

When pinned to a semver tag (v*), the existing prebuilt binary download
and cache behaviour is unchanged.

This makes the prepare-release workflow self-contained on main — it no
longer requires a published release to bootstrap itself.
2026-03-20 20:34:46 +00:00
Micheal Wilkinson
55a067973e docs: update changelog for prepare and publish actions
All checks were successful
Push Validation / validate (push) Successful in 52s
2026-03-20 20:27:26 +00:00
Micheal Wilkinson
647d8cf76f feat: add prepare and publish composite actions
Add two focused subdirectory composite actions:

- prepare/action.yml: downloads the vociferate binary, runs it to update
  changelog and release-version, then commits, tags, and pushes — replacing
  the boilerplate git steps consumers previously had to write inline.

- publish/action.yml: extracts the matching changelog section and creates or
  updates the Gitea/GitHub release. Outputs release-id, tag, and version so
  consumers can upload their own assets after it runs.

Simplify the vociferate workflows to use ./prepare and ./publish directly,
validating both actions in the self-release pipeline.

Update README to show the clean two-action usage pattern.
2026-03-20 20:27:22 +00:00
Micheal Wilkinson
4ae6f34931 docs: update action and README to reflect changelog-based versioning default
All checks were successful
Push Validation / validate (push) Successful in 54s
- action.yml: clarify that version-file triggers version-file-based
  resolution and that omitting it causes the version to be derived from
  the changelog; note version-pattern is only required when version-file
  is set.
- README: replace stale reference to the plain-text release-version file
  as the default with an accurate description of changelog-based
  versioning as the default, directing users to set version-file and
  version-pattern only for repos with source-embedded versioning.
2026-03-20 20:12:38 +00:00
Micheal Wilkinson
8c2835fe2e feat: derive recommended version from changelog; no version file required
- RecommendedTag now reads the current version from the most recent
  released section heading in the changelog (## [x.y.z] - ...) when no
  --version-file flag is given, removing the dependency on a separate
  version file for recommendation.
- When the changelog contains no prior releases, the base version
  defaults to 0.0.0, so the first recommended tag is v1.0.0 (or higher
  depending on unreleased content).
- Prepare creates the release-version file if it does not already exist,
  so new repositories do not need to pre-seed it.
- Add tests covering changelog-based version resolution, first-release
  default, and automatic file creation.
- Update README and changelog unreleased section to document the new
  behaviour.
2026-03-20 20:10:13 +00:00
Micheal Wilkinson
c859a3fccb ci: split prepare and publish into separate release pipelines
All checks were successful
Push Validation / validate (push) Successful in 54s
- Remove publish steps (release creation, binary build/upload) from the
  Prepare Release workflow; it now stops after committing and pushing the
  tag.
- Add Do Release workflow triggered on v*.*.* tag pushes; reads release
  notes from the tagged changelog section, creates or updates the release,
  builds linux/amd64 and linux/arm64 binaries, uploads assets, then
  smoke-tests both binaries in a follow-on validate job.
- Remove the standalone Action Validation workflow; binary validation now
  runs as a second job in Do Release after the release job succeeds, using
  the exact tag and version just published.
- Update README to document the two-workflow release model and add split
  prepare/publish usage examples for both the composite action and the
  reusable workflows.
- Update changelog unreleased section to reflect the new pipeline split
  and corrected artifact scope (linux/amd64 and linux/arm64 only).
2026-03-20 19:55:03 +00:00
Micheal Wilkinson
26b197299f chore: consolidate unreleased changelog entries 2026-03-20 19:40:48 +00:00
Micheal Wilkinson
4a3db8c08c remove: incorrect release file 2026-03-20 19:38:53 +00:00
Micheal Wilkinson
2646d42523 feat: default to release-version file
Some checks failed
Action Validation / validate-released-binary (amd64, ./vociferate, X64) (push) Failing after 6s
Action Validation / validate-released-binary (arm64, qemu-aarch64-static ./vociferate, ARM64) (push) Failing after 23s
Push Validation / validate (push) Successful in 52s
2026-03-20 19:32:49 +00:00
Micheal Wilkinson
a413385c4e feat: cache release binary in action 2026-03-20 19:28:02 +00:00
Micheal Wilkinson
5cb0010531 chore: make releases workflow-only 2026-03-20 19:23:43 +00:00
Micheal Wilkinson
fd7660721a docs(changelog): Revert aborted 1.0 release 2026-03-20 19:18:53 +00:00
Micheal Wilkinson
8fefbf1997 refactor: rename releaseprep to vociferate 2026-03-20 19:16:51 +00:00
Micheal Wilkinson
7a5b371539 docs(changelog): reverting aborted release
All checks were successful
Push Validation / validate (push) Successful in 52s
2026-03-20 19:02:27 +00:00
Micheal Wilkinson
cb6723818b chore(go): Implement unconditional prefix trim 2026-03-20 19:00:24 +00:00
gitea-actions[bot]
ddb99c482c release: prepare v1.0.0 2026-03-20 18:57:53 +00:00
Micheal Wilkinson
9da7a251b2 refactor(changelog): update unreleased since v1.0.0
All checks were successful
Push Validation / validate (push) Successful in 54s
2026-03-20 18:52:34 +00:00
Micheal Wilkinson
971a7744bf fix(releaseprep): green unchanged-version prepare 2026-03-20 18:52:34 +00:00
Micheal Wilkinson
d1d5673460 test(releaseprep): red for unchanged-version prepare 2026-03-20 18:52:33 +00:00
Micheal Wilkinson
8fadb8299c ci(release): upsert release and replace matching assets
All checks were successful
Push Validation / validate (push) Successful in 52s
2026-03-20 18:43:49 +00:00
Micheal Wilkinson
71e411e12d ci(release): make release notes idempotent and publish binaries 2026-03-20 18:43:49 +00:00
gitea-actions[bot]
adbcfbc1ac release: prepare v1.0.0 2026-03-20 18:34:10 +00:00
Micheal Wilkinson
e43d3f3301 docs(changelog): note breaking heading major bump behavior
All checks were successful
Push Validation / validate (push) Successful in 59s
2026-03-20 18:27:23 +00:00
Micheal Wilkinson
f140ea1d70 feat(releaseprep): force major bump on Breaking heading 2026-03-20 18:27:09 +00:00
Micheal Wilkinson
5c0653e28e test(releaseprep): require major bump for Breaking heading 2026-03-20 18:26:54 +00:00
Micheal Wilkinson
7ca6002b2b docs(changelog): add initial unreleased notes 2026-03-20 18:26:21 +00:00
Micheal Wilkinson
caf0b6db76 feat(releaseprep): migrate standalone tool into vociferate 2026-03-20 18:26:11 +00:00
Micheal Wilkinson
2060af6a78 test(releaseprep): add failing migration test suite 2026-03-20 18:22:45 +00:00