Rename the reusable workflows to release.yml and update-release.yml, add UPX compression for release binaries, and sync the standalone update-release workflow with the active release pipeline fixes. Update README, AGENTS, compliance notes, and changelog references to match the new workflow names and usage patterns.
7.5 KiB
Agent Integration Guide
This guide is for agentic coding partners that need to integrate the composite actions published by this repository.
Source Of Truth
Pin all action references to a released tag (for example @v1.1.0) and keep all vociferate references on the same tag in a workflow.
Published composite actions:
https://git.hrafn.xyz/aether/vociferate@v1.1.0(root action)https://git.hrafn.xyz/aether/vociferate/prepare@v1.1.0https://git.hrafn.xyz/aether/vociferate/publish@v1.1.0https://git.hrafn.xyz/aether/vociferate/coverage-badge@v1.1.0https://git.hrafn.xyz/aether/vociferate/decorate-pr@v1.1.0
Action Selection Matrix
Use this when deciding which action to call:
- Choose
preparewhen you need to update changelog/version files, commit, and push a release tag. - Choose
publishwhen a tag already exists and you need to create or update release notes/assets. - Choose
coverage-badgeafter tests have producedcoverage.outand you need coverage artefacts uploaded. - Choose
decorate-prto annotate pull requests with coverage information and unreleased changelog entries. - Choose root
vociferatefor direct recommend/prepare logic without commit/tag/push behavior.
Preconditions
Apply these checks before invoking actions:
- Checkout repository first.
- For prepare/publish flows that depend on tags/history, use full history checkout (
fetch-depth: 0). - Use
secrets.RELEASE_PATfor release/tag/update operations (prepare,publish,release,update-release) so authenticated release changes can be pushed and published reliably. release,update-release, anddecorate-prrun preflight API checks and fail fast when token credentials are missing or insufficient.- Set required vars/secrets for coverage uploads:
vars.ARTEFACT_BUCKET_NAMEvars.ARTEFACT_BUCKET_ENDPONTsecrets.ARTEFACT_BUCKET_WRITE_ACCESS_KEYsecrets.ARTEFACT_BUCKET_WRITE_ACCESS_SECRET
- For externally visible changelog links, set
vars.VOCIFERATE_REPOSITORY_URLto the server/base URL only.
Changelog Format Guidance
Agents should keep CHANGELOG.md in a Keep a Changelog compatible structure because vociferate derives versions and release notes from headings.
Required conventions:
- Keep the top-level heading as
# Changelog. - Maintain an
## [Unreleased]section. - Keep the standard subsections under
Unreleasedin this order:### Breaking### Added### Changed### Removed### Fixed
- Record releases with headings like
## [1.2.3] - YYYY-MM-DD. - Use bullet entries under subsections (for example
- Added new publish output). - Preserve or regenerate bottom reference links (
[Unreleased]: ...,[1.2.3]: ...) instead of mixing inline heading links.
Semver behavior used by recommendation logic:
BreakingorRemovedentries trigger a major bump.Addedentries trigger a minor bump.- Otherwise recommendation falls back to a patch bump.
Minimal template:
# Changelog
## [Unreleased]
### Breaking
### Added
### Changed
### Removed
### Fixed
Minimal Integration Patterns
1. Full Release Workflow
jobs:
release:
uses: https://git.hrafn.xyz/aether/vociferate/.gitea/workflows/release.yml@v1.1.0
with:
version: ${{ inputs.version }}
secrets: inherit
2. Update Existing Release Tag
jobs:
release:
uses: https://git.hrafn.xyz/aether/vociferate/.gitea/workflows/update-release.yml@v1.1.0
with:
tag: v1.2.3
secrets: inherit
3. Coverage Badge Publication
jobs:
coverage:
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.ARTEFACT_BUCKET_WRITE_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.ARTEFACT_BUCKET_WRITE_ACCESS_SECRET }}
AWS_DEFAULT_REGION: ${{ vars.ARTEFACT_BUCKET_REGION }}
AWS_EC2_METADATA_DISABLED: true
steps:
- uses: actions/checkout@v4
- name: Run tests with coverage
run: go test -covermode=atomic -coverprofile=coverage.out ./...
- id: badge
uses: https://git.hrafn.xyz/aether/vociferate/coverage-badge@v1.1.0
with:
artefact-bucket-name: ${{ vars.ARTEFACT_BUCKET_NAME }}
artefact-bucket-endpoint: ${{ vars.ARTEFACT_BUCKET_ENDPONT }}
4. Decorate Pull Request With Coverage and Changes
jobs:
coverage:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.ARTEFACT_BUCKET_WRITE_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.ARTEFACT_BUCKET_WRITE_ACCESS_SECRET }}
AWS_DEFAULT_REGION: ${{ vars.ARTEFACT_BUCKET_REGION }}
AWS_EC2_METADATA_DISABLED: true
steps:
- uses: actions/checkout@v4
- name: Run tests with coverage
run: go test -covermode=atomic -coverprofile=coverage.out ./...
- id: badge
uses: https://git.hrafn.xyz/aether/vociferate/coverage-badge@v1.1.0
with:
artefact-bucket-name: ${{ vars.ARTEFACT_BUCKET_NAME }}
artefact-bucket-endpoint: ${{ vars.ARTEFACT_BUCKET_ENDPONT }}
- name: Decorate PR
uses: https://git.hrafn.xyz/aether/vociferate/decorate-pr@v1.1.0
with:
coverage-percentage: ${{ steps.badge.outputs.total }}
badge-url: ${{ steps.badge.outputs.badge-url }}
Inputs And Outputs Cheatsheet
prepare
Common inputs:
version(optional override)version-file(optional)version-pattern(optional)changelog(optional)
Primary output:
version(resolved tag, for examplev1.2.3)
publish
Common inputs:
token(optional, defaults to workflow token)version(optional if running from tag ref)changelog(optional)
Primary outputs:
release-idtagversion
coverage-badge
Required inputs:
artefact-bucket-nameartefact-bucket-endpoint
Useful optional inputs:
coverage-profile(defaultcoverage.out)summary-file(append markdown summary)
Primary outputs:
totalreport-urlbadge-url
decorate-pr
Required inputs:
coverage-percentage(0-100, typically from coverage-badge action)badge-url(SVG badge URL, typically from coverage-badge action)
Useful optional inputs:
changelog(defaultCHANGELOG.md)comment-title(defaultVociferate Review)token(defaults to workflow token)enable-changelog-gate(defaultfalse) - Enable changelog validation gatechangelog-gate-mode(defaultsoft) -strictorsoftmode for gatechangelog-gate-required-for(defaultcode,behavior,security,workflow,tooling) - Change types requiring entrieschangelog-gate-allow-docs-only(defaulttrue) - Skip requirement for docs-only PRschangelog-gate-docs-globs(defaultdocs/**,**.md,**.txt,**.rst) - Docs file patternschangelog-gate-skip-labels(default empty) - PR labels that bypass requirement
Primary outputs:
comment-id- Comment IDcomment-url- Comment URLgate-passed- Whether changelog gate validation passeddocs-only- Whether PR is docs-onlyunreleased-additions-count- Number of Unreleased additions detectedgate-failure-reason- Reason for gate failure, if applicable
Guardrails For Agents
Use these rules to avoid common automation mistakes:
- Do not mix action tags in one workflow update.
- Do not assume a release workflow will run from a tag push in all environments; reusable workflow call paths are supported.
- Do not treat
VOCIFERATE_REPOSITORY_URLas a full repository URL; it must be a base URL. - Do not bypass preflight failures with broad retry loops; fix token scope/secret wiring first.