vociferate

A reusable release preparation tool for Go repositories.

Build

Build with just:

just go-build

Or directly with Go:

go build -o dist/vociferate ./cmd/vociferate

Usage

Prepare release files:

go run ./cmd/vociferate --version v1.2.3 --date 2026-03-20 --root .

In the provided workflow and composite action, version is optional. When it is omitted, vociferate computes and uses the recommended next version automatically.

Recommend next release tag from changelog content:

go run ./cmd/vociferate --recommend --root .

Flags

  • --version semantic version to release (with or without leading v).
  • --date release date in YYYY-MM-DD format.
  • --recommend print recommended next tag based on ## [Unreleased].
  • --root repository root directory.
  • --version-file path to version source file relative to --root.
  • --version-pattern regexp with exactly one capture group for version value.
  • --changelog path to changelog file relative to --root.

Defaults:

  • version-file: internal/vociferate/version/version.go
  • version-pattern: const String = "([^"]+)"
  • changelog: changelog.md

Testing

just go-test

Release Artifacts

The Prepare Release workflow creates a release and uploads prebuilt vociferate binaries for:

  • darwin/amd64
  • darwin/arm64
  • linux/amd64
  • linux/arm64
  • windows/amd64
  • windows/arm64

It also uploads checksums.txt for integrity verification. If a release already exists for the same tag, the workflow updates its release notes and replaces matching asset filenames so reruns stay in sync.

Reuse In Other Repositories

You can reuse vociferate in two ways.

Use the composite action directly:

- name: Prepare release files
	uses: git.hrafn.xyz/aether/vociferate@main
	with:
		version-file: internal/myapp/version/version.go
		version-pattern: 'const Version = "([^"]+)"'
		changelog: changelog.md

Set version only when you want to override the recommended version.

Call the reusable release workflow:

name: Release

on:
	workflow_dispatch:
		inputs:
			version:
				description: Optional semantic version override.
				required: false

jobs:
	release:
		uses: aether/vociferate/.gitea/workflows/prepare-release.yml@main
		with:
			version: ${{ inputs.version }}
		secrets: inherit
Description
No description provided
Readme GPL-3.0 1.9 MiB
v1.2.0 Latest
2026-03-21 23:15:26 +00:00
Languages
Go 96.8%
Shell 2.7%
Just 0.5%