1
Release Publishers
Virgil edited this page 2026-03-11 12:03:21 +00:00
Release Publishers
Module: forge.lthn.ai/core/go-build/pkg/release
Release Pipeline
Run() executes: version detection -> changelog generation -> build -> archive -> checksum -> publish.
Publish() handles pre-built artifacts: find in dist/ -> changelog -> publish.
Version Detection
DetermineVersion() reads the latest git tag. Changelog is generated from conventional commits between tags.
Publisher Interface
type Publisher interface {
Name() string
Publish(ctx, release, pubCfg, relCfg, dryRun) error
}
Available Publishers
| Publisher | Constructor | Target |
|---|---|---|
| GitHub | NewGitHubPublisher() |
GitHub Releases (via gh CLI) |
| Docker | NewDockerPublisher() |
Container registries |
| npm | NewNpmPublisher() |
npm registry |
| Homebrew | NewHomebrewPublisher() |
Homebrew tap formula |
| Scoop | NewScoopPublisher() |
Scoop bucket manifest |
| AUR | NewAURPublisher() |
Arch User Repository PKGBUILD |
| Chocolatey | NewChocolateyPublisher() |
Chocolatey nuspec |
| LinuxKit | NewLinuxKitPublisher() |
LinuxKit image publishing |
Configuration
.core/release.yaml publishers section:
publishers:
- type: github
prerelease: false
draft: false
- type: docker
registry: ghcr.io
image: owner/repo
tags: ["latest"]
- type: homebrew
tap: owner/homebrew-tap
formula: my-app