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