Skip to main content

Configuration Reference

Complete configuration file reference

Anodizer uses .anodizer.yaml (or .anodizer.toml) in your project root.

Top-Level Fields

FieldTypeDefaultDescription
afterHooksConfigHooks run after the release pipeline completes.
announceAnnounceConfigAnnouncement configuration (Slack, Discord, email, etc.).
artifactorieslist of ArtifactoryConfigArtifactory upload configurations.
aur_sourceslist of AurSourceConfigAUR source package publishing configurations (source-only PKGBUILD, not -bin).
beforeHooksConfigHooks run before the release pipeline starts.
binary_signslist of SignConfig[]Binary-specific signing configs (same shape as signs but only for binary artifacts). The artifacts field on each entry is constrained at parse time to binary / none (or omitted) — a broader filter on binary_signs would silently match nothing because the loop only iterates Binary artifacts. Constraint lives in deserialize_binary_signs.
changelogChangelogConfigChangelog generation configuration.
cloudsmithslist of CloudSmithConfigCloudSmith publisher configurations.
crateslist of CrateConfig[]List of crates in this project.
defaultsDefaultsDefault values applied to all crates unless overridden.
diststring./distOutput directory for build artifacts (default: ./dist).
docker_signslist of DockerSignConfigDocker image signing configurations.
dockerhublist of DockerHubConfigDockerHub description sync configurations.
envlist of stringEnvironment variables available to all template expressions.

List of KEY=VALUE strings (matches GoReleaser): env: ["MY_VAR=hello", "DEPLOY_ENV=staging"]. Order is preserved so chained env applications (sign + sbom + notarize) see entries in declared order. Values are rendered through the template engine before being set, so expressions like {{ .Tag }} or {{ .Date }} are expanded. | | env_files | EnvFilesConfig | — | Environment file configuration. Accepts either: - A list of .env file paths: [".env", ".release.env"] - A struct with token file paths: { github_token: "~/.config/goreleaser/github_token" } | | force_token | ForceTokenKind | — | Force a specific token type for authentication. When set, overrides automatic token detection from environment variables. | | git | GitConfig | — | Git-level tag discovery and sorting settings. | | gitea_urls | GiteaUrlsConfig | — | Custom Gitea API/download URLs for self-hosted Gitea installations. | | github_urls | GitHubUrlsConfig | — | Custom GitHub API/upload/download URLs for GitHub Enterprise installations. | | gitlab_urls | GitLabUrlsConfig | — | Custom GitLab API/download URLs for self-hosted GitLab installations. | | homebrew_casks | list of HomebrewCaskConfig | — | Top-level Homebrew Cask configurations. homebrew_casks is a top-level array with its own repository, commit_author, directory, skip_upload, hooks, dependencies, conflicts, completions, manpages, structured uninstall/zap, etc. | | includes | list of IncludeSpec | — | Additional config files to merge into this config. Supports plain string paths, from_file: for structured file paths, and from_url: for fetching configs from URLs with optional headers. | | makeselfs | list of MakeselfConfig | [] | Makeself self-extracting archive configurations. | | mcp | McpConfig | {"auth":{"type":"none"},"description":null,"homepage":null,"name":null,"packages":[],"registry":null,"repository":{"id":"","source":"","subfolder":"","url":""},"skip":null,"title":null,"transports":[]} | MCP (Model Context Protocol) server registry publishing configuration. When name is empty (the default), the publisher is skipped. Mirrors GoReleaser's mcp: block. | | metadata | MetadataConfig | — | Project metadata configuration (applied to metadata.json output files). | | milestones | list of MilestoneConfig | — | Milestone closing configurations. | | monorepo | MonorepoConfig | — | GoReleaser Pro monorepo configuration. When configured, tag discovery filters by tag_prefix and the working directory is scoped to dir. | | nightly | NightlyConfig | — | Nightly release configuration. | | notarize | NotarizeConfig | — | macOS code signing and notarization configuration. | | partial | PartialConfig | — | Partial/split build configuration for fan-out CI pipelines. | | project_name | string | — | Human-readable project name used in templates and release titles. | | publishers | list of PublisherConfig | — | Generic artifact publisher configurations. | | release | ReleaseConfig | — | GitHub release configuration shared by all crates. | | report_sizes | bool | — | When true, log artifact file sizes after building. | | retry | RetryConfig | — | Top-level retry configuration applied to network-bound operations (announcers, git providers, HTTP uploads, docker pipes). When omitted, RetryConfig::default() is used (10 attempts, 10s base, 5m cap — matching GoReleaser Project.Retry). | | sboms | list of SbomConfig | [] | Software bill of materials (SBOM) generation configurations. | | signs | list of SignConfig | [] | Signing configurations for binaries, archives, and checksums. | | snapshot | SnapshotConfig | — | Snapshot release configuration (local/non-tag builds). | | source | SourceConfig | — | Source archive configuration. | | srpms | SrpmConfig | — | Source RPM configuration. Renamed from srpm: (singular) for spelling parity with Defaults.srpms and the rest of the plural-name packaging fields. The srpm: spelling is still accepted via serde alias for back-compat. | | tag | TagConfig | — | Automatic semantic version tagging configuration. | | template_files | list of TemplateFileConfig | — | Template files to render and include as release artifacts. File contents are processed through the template engine. | | uploads | list of UploadConfig | — | Generic HTTP upload configurations. | | upx | list of UpxConfig | [] | UPX binary compression configurations. | | variables | map | — | Custom template variables accessible as {{ .Var.key }} in templates. Provides a way to define reusable values, especially useful with config includes. | | version | integer | — | Schema version. Currently supports 1 (implicit default) and 2. | | workspaces | list of WorkspaceConfig | — | Independent workspace roots in a monorepo. |

after

Top-level lifecycle hooks for before and after blocks. Each block has pre and post lists of hook commands that run around the entire pipeline (not individual stages).

FieldTypeDefaultDescription
hookslist of HookEntryCommands to run before the pipeline or stage starts. Matches GoReleaser before.hooks canonically.
postlist of HookEntryCommands to run after the pipeline or stage completes. Anodizer extension (GoReleaser has no top-level after: block).

announce

FieldTypeDefaultDescription
blueskyBlueskyAnnounceBluesky announcement configuration.
discordDiscordAnnounceDiscord announcement configuration.
discourseDiscourseAnnounceDiscourse announcement configuration.
emailEmailAnnounceEmail announcement configuration. SCH-34 (WAVE 5.6) — accepts the historical smtp: key as an alias because GR itself renamed smtp: -> email: in v1.21+ and kept the alias for migration. Mirroring GR's own alias keeps "use what GR uses today" consistent without forcing a re-yaml of legacy GR configs.
gate_onAnnounceGaterequired_publishersSelects when AnnounceStage runs vs. skips based on the PublishReport written by PublishStage/BlobStage. Default is required_publishers (announce only if every required publisher succeeded). See [AnnounceGate] for the other variants.
linkedinLinkedInAnnounceLinkedIn announcement configuration.
mastodonMastodonAnnounceMastodon announcement configuration.
mattermostMattermostAnnounceMattermost announcement configuration.
opencollectiveOpenCollectiveAnnounceOpenCollective announcement configuration.
redditRedditAnnounceReddit announcement configuration.
skipStringOrBoolTemplate-conditional skip: if rendered to "true", skip the entire announce stage.
slackSlackAnnounceSlack announcement configuration.
teamsTeamsAnnounceMicrosoft Teams announcement configuration.
telegramTelegramAnnounceTelegram announcement configuration.
twitterTwitterAnnounceTwitter/X announcement configuration.
webhookWebhookConfigGeneric webhook announcement configuration.

artifactories

Artifactory upload configuration. Uploads artifacts to JFrog Artifactory repositories.

FieldTypeDefaultDescription
checksumboolInclude checksums in uploaded artifacts.
checksum_headerstringHeader name used for checksum verification (e.g. X-Checksum-Sha256).
client_x509_certstringPath to client X.509 certificate for mTLS authentication.
client_x509_keystringPath to client X.509 private key for mTLS authentication.
custom_artifact_nameboolUse custom artifact naming instead of default.
custom_headersmapCustom HTTP headers sent with each upload request.
extra_fileslist of ExtraFileSpecExtra files to upload alongside build artifacts.
extra_files_onlyboolWhen true, upload only extra_files (skip normal artifacts).
extslist of stringFile extension filter: only upload artifacts matching these extensions.
idslist of stringBuild IDs filter: only upload artifacts from builds whose id is in this list.
metaboolInclude metadata artifacts in uploaded artifacts.
methodstringHTTP method to use for uploads (default: "PUT").
modestringUpload mode: "archive" (upload archives) or "binary" (upload binaries).
namestringHuman-readable name for this publisher (used in logs).
passwordstringArtifactory password or API key (or env var reference).
signatureboolInclude signatures in uploaded artifacts.
skipStringOrBoolTemplate-conditional skip: if rendered result is "true", skip this publisher.
targetstringTarget URL template for uploads (supports template variables).
trusted_certificatesstringPEM-encoded trusted CA certificates for TLS verification. Appended to the system certificate pool.
usernamestringArtifactory username for authentication.

aur_sources

FieldTypeDefaultDescription
amd64_variantAmd64Variantx86_64 micro-architecture variant — v1 (baseline), v2, v3 (AVX2), or v4. Equivalent to GR AurSource.Goamd64. Constrained to a typed enum because AUR source pkgs build from the upstream tarball (no binary artifacts to filter), so the value's only role is as the Amd64 template var consumed by prepare: / build: / package: script bodies — typos must fail at parse time, not silently render an invalid string into the PKGBUILD. When unset, defaults to v1 at template-render time.
archeslist of stringExplicit architecture list (default: auto-detect from artifacts).
backuplist of stringBackup files to preserve on upgrade.
buildstringCustom build() function body for PKGBUILD.
commit_authorCommitAuthorConfigCommit author with optional signing.
commit_msg_templatestringCustom commit message template.
conflictslist of stringPackages this PKGBUILD conflicts with.
contributorslist of stringContributors listed in PKGBUILD comments.
dependslist of stringRuntime dependencies.
descriptionstringShort description of the package.
directorystringSubdirectory in the git repo for committed files.
git_ssh_commandstringCustom SSH command for git operations.
git_urlstringAUR SSH git URL.
homepagestringProject homepage URL.
idslist of stringBuild IDs filter.
licensestringSPDX license identifier.
maintainerslist of stringPKGBUILD maintainer entries.
makedependslist of stringBuild-time dependencies (source packages need these).
namestringOverride the package name (default: crate name, no -bin suffix).
optdependslist of stringOptional dependencies.
packagestringCustom package() function body for PKGBUILD.
preparestringCustom prepare() function body for PKGBUILD.
private_keystringPath to SSH private key file.
provideslist of stringPackages this PKGBUILD provides.
relstringPackage release number (default: "1").
skipStringOrBoolSkip this config.
skip_uploadStringOrBoolSkip publishing. "true" always skips; "auto" skips for prereleases.
url_templatestringCustom URL template for download URLs.

before

Top-level lifecycle hooks for before and after blocks. Each block has pre and post lists of hook commands that run around the entire pipeline (not individual stages).

FieldTypeDefaultDescription
hookslist of HookEntryCommands to run before the pipeline or stage starts. Matches GoReleaser before.hooks canonically.
postlist of HookEntryCommands to run after the pipeline or stage completes. Anodizer extension (GoReleaser has no top-level after: block).

binary_signs

FieldTypeDefaultDescription
argslist of stringArguments passed to the signing command (supports templates with ${artifact} and ${signature}).
artifactsstringArtifact types to sign: "all", "archive", "binary", "checksum", "package", "sbom" (default: "none").
certificatestringCertificate file to embed in the signature (Cosign bundle signing).
cmdstringSigning command to invoke (default: "cosign" or "gpg").
envlist of stringEnvironment variables passed to the signing command.
idstringUnique identifier for this sign config.
idslist of stringBuild IDs filter: only sign artifacts from builds whose id is in this list.
ifstringTemplate-conditional: skip this sign config if rendered result is "false" or empty.
outputStringOrBoolCapture and log stdout/stderr of the signing command. Accepts bool or template string (e.g., "{{ .IsSnapshot }}").
signaturestringSignature output filename template (supports templates).
stdinstringContent written to the signing command's stdin.
stdin_filestringPath to a file whose content is written to the signing command's stdin.

changelog

FieldTypeDefaultDescription
abbrevintegerHash abbreviation length. Default: 0 (no truncation, emit the full SHA). Set to -1 to omit the hash entirely; positive values truncate to N chars. Values below -1 are clamped to -1 for parity with GoReleaser (whose git log --abbrev=N panics for -2, -3, ...). Mirrors GoReleaser internal/pipe/changelog/changelog.go's abbrevEntry.
aiChangelogAiConfigAI-powered changelog enhancement configuration.
dividerstringDivider string inserted between changelog groups (e.g. "---"). Supports templates.
filtersChangelogFiltersCommit message filters to include or exclude from the changelog.
footerContentSourceText appended to the changelog. Same shape as header.
formatstringTemplate for each changelog commit line. Available variables: SHA (full hash), ShortSHA (abbreviated), Message (commit subject), AuthorName, AuthorEmail, Login (per-commit GitHub username, github backend only), Logins (per-entry comma-separated list of GitHub usernames for that commit, github backend only), AllLogins (comma-separated list of all GitHub usernames across the entire release, github backend only).

Default depends on backend (mirrors GoReleaser internal/pipe/changelog/changelog.go's formatEntry, which uses the full SHA):
git backend (default): "{{ SHA }} {{ Message }}"
github/gitlab/gitea backend: "{{ SHA }}: {{ Message }} (@Login or AuthorName <AuthorEmail>)" — falls back to AuthorName <AuthorEmail> when Login is empty.

When abbrev < 0, the default reduces to "{{ Message }}" (no hash prefix).
groupslist of ChangelogGroupGroups for organizing changelog entries by commit message prefix.
headerContentSourceText prepended to the changelog. Inline string, from_file: <path>, or from_url: <url> — symmetric with the release block's header/footer so users can compose headers from a templated file or remote endpoint (GoReleaser uses a plain string here; anodizer extends to ContentSource for consistency with release.header).
pathslist of stringFile paths to filter commits by. Only commits touching files under these paths are included. Works with use: git for precise per-commit filtering. With use: github, only the first path is used for API queries; multi-path filtering is coarse. Supports template rendering.
skipStringOrBoolSkip changelog generation. Accepts bool or template string (e.g. "{{ if IsSnapshot }}true{{ endif }}" for conditional skip).
snapshotboolWhen true, render the changelog even in snapshot mode. Anodizer matches GoReleaser's default (skip changelog on ctx.Snapshot) and lets users opt back in here for local preview / draft generation. Wired in crates/stage-changelog/src/lib.rs::ChangelogStage::run.
sortstringSort order for changelog entries: "asc" or "desc" (default: "asc").
titlestringTitle heading for the changelog. Default: "Changelog". Supports templates.
usestringChangelog source: "git" (default), "github", or "github-native". "github" fetches commits via the GitHub API, enriching entries with author login information (available as the {{ Logins }} per-entry template variable and the {{ AllLogins }} release-wide variable). "github-native" delegates entirely to GitHub's auto-generated notes.

cloudsmiths

CloudSmith publisher configuration. Pushes packages to CloudSmith repositories.

FieldTypeDefaultDescription
componentstringDebian component name (e.g. "main").
distributionsmapDistribution mapping per format (e.g. deb: "ubuntu/focal").
formatslist of stringPackage format filter: only publish artifacts matching these formats.
idslist of stringBuild IDs filter: only publish artifacts from builds whose id is in this list.
organizationstringCloudSmith organization slug.
repositorystringCloudSmith repository slug.
republishStringOrBoolWhen true, allow republishing over existing package versions.
secret_namestringEnvironment variable name containing the CloudSmith API key.
skipStringOrBoolTemplate-conditional skip: if rendered result is "true", skip this publisher.

crates

FieldTypeDefaultDescription
app_bundleslist of AppBundleConfigmacOS app bundle configurations for this crate.
archiveslist of ArchiveConfig[]Archive configurations for this crate. Set to false to disable archiving, or provide an array of archive configs.
binstallBinstallConfigcargo-binstall metadata configuration for this crate.
blobslist of BlobConfigCloud storage (S3/GCS/Azure) upload configurations for this crate.
buildslist of BuildConfigBuild configurations for this crate. One entry per binary by default.
checksumChecksumConfigChecksum configuration for this crate.
crossCrossStrategyCross-compilation strategy for this crate: auto, zigbuild, cross, or cargo.
depends_onlist of stringOther crates this crate depends on; ensures release ordering.
dmgslist of DmgConfigmacOS DMG disk image configurations for this crate.
docker_digestDockerDigestConfigDocker image digest file configuration for this crate.
docker_manifestslist of DockerManifestConfigDocker multi-platform manifest configurations for this crate.
docker_v2list of DockerV2ConfigDocker V2 image build configurations for this crate (canonical API: images+tags, annotations, build_args, sbom, disable). The legacy docker: block was removed; this is the only docker surface.
flatpakslist of FlatpakConfigLinux Flatpak bundle configurations for this crate.
msislist of MsiConfigWindows MSI installer configurations for this crate.
namestringCrate name as published (must match the Cargo.toml package name).
nfpmslist of NfpmConfigLinux package (deb, rpm, apk) configurations for this crate. Renamed from nfpm: (singular) for spelling parity with Defaults.nfpms and the rest of the plural-name per-crate packaging lists (dmgs, msis, pkgs, nsis, ...). The nfpm: spelling is still accepted via serde alias for back-compat.
no_unique_dist_dirStringOrBoolWhen true (or template evaluating to "true"), all build outputs are placed in a flat dist/ directory instead of dist/{target}/.
nsislist of NsisConfigNSIS installer configurations for this crate.
pathstringRelative path to the crate directory from the project root.
pkgslist of PkgConfigmacOS PKG installer configurations for this crate.
publishPublishConfigPublishing targets (Homebrew, Scoop, AUR, etc.) for this crate.
releaseReleaseConfigGitHub release configuration for this crate.
snapcraftslist of SnapcraftConfigSnapcraft package configurations for this crate.
tag_templatestringGit tag template used to tag and identify releases (supports templates).
universal_binarieslist of UniversalBinaryConfigmacOS universal binary (fat binary) configurations for this crate.
versionstringPinned semver version. When set, anodizer bump --strict refuses to edit this crate's Cargo.toml to anything other than this value; without --strict, the bump proceeds with a warning. Lets a release captain freeze a crate's version while still running broad --workspace bumps.
version_syncVersionSyncConfigAutomatic version number synchronization configuration for this crate.

defaults

Workspace-level defaults that path-mirror the CrateConfig (and select top-level Config) shape. Each field here is folded into every resolved crate by defaults_merge::apply_defaults according to the deep-merge / merge-by-identity semantics documented in defaults_merge.

Multi-publisher fields are single-struct on both sides today: defaults supplies one struct per publisher, and per-crate publish.* fields are also single-struct. A future change may introduce list-or-scalar via OneOrMany<T> on the per-crate side so a crate can declare multiple homebrew taps / scoop buckets / etc.; the defaults side would stay single-struct and merge into the first per-crate entry by identity.

FieldTypeDefaultDescription
app_bundlesAppBundleConfigDefault app-bundle settings applied to all crates.
archivesArchiveConfigDefault archive settings applied to all crates.
binary_signsSignConfigDefault binary-signing settings.
buildsBuildConfigDefault build settings applied to every crate's builds (deep-merged into each CrateConfig.builds[] entry by identity on id/binary).
checksumChecksumConfigDefault checksum settings applied to all crates. Mirrors CrateConfig.checksum so checksum config can be hoisted to defaults.
cratesDefaultsCrateBlockCrate-axis defaults marker. Only valid when top-level crates: is set. Reserved for per-crate overrides keyed by crate id (future waves).
crossCrossStrategyDefault cross-compilation strategy: auto, zigbuild, cross, or cargo. Mirrors CrateConfig.cross so the strategy can be hoisted to defaults.
dmgsDmgConfigDefault DMG settings applied to all crates.
docker_signsDockerSignConfigDefault Docker image signing settings.
docker_v2DockerV2ConfigDefault Docker (V2 API) image settings applied to all crates.
envlist of stringDefault environment variables (KEY=VALUE strings) hoisted across crates.
flatpaksFlatpakConfigDefault flatpak settings applied to all crates.
makeselvesMakeselfConfigDefault makeself settings applied to all crates.
msisMsiConfigDefault MSI settings applied to all crates.
nfpmsNfpmConfigDefault nfpm (deb/rpm/apk) settings applied to all crates.
notarizeNotarizeConfigDefault macOS notarization settings.
nsisNsisConfigDefault NSIS settings applied to all crates.
pkgsPkgConfigDefault macOS PKG settings applied to all crates.
publishPublishDefaultsDefault publisher configurations (single-struct per publisher). Per-crate publish.* entries are merged into these by identity.
sbomSbomConfigDefault SBOM generation settings.
signSignConfigDefault artifact signing settings.
snapcraftsSnapcraftConfigDefault snapcraft settings applied to all crates.
sourceSourceConfigDefault source-archive settings applied to all crates.
srpmsSrpmConfigDefault SRPM settings applied to all crates.
targetslist of stringDefault build targets (e.g., ["x86_64-unknown-linux-gnu", "aarch64-apple-darwin"]).
upxUpxConfigDefault UPX compression settings applied to all crates.
workspacesDefaultsWorkspaceBlockWorkspace-axis defaults marker. Only valid when top-level workspaces: is set. Reserved for per-workspace overrides keyed by workspace name (future waves).

docker_signs

FieldTypeDefaultDescription
argslist of stringArguments passed to the signing command (supports templates).
artifactsstringDocker artifact types to sign: "all", "image", or "manifest" (default: "none").
certificatestringCertificate file to embed in the signature (Cosign bundle signing).
cmdstringSigning command to invoke (default: "cosign").
envlist of stringEnvironment variables passed to the signing command.
idstringUnique identifier for this docker sign config.
idslist of stringDocker config IDs filter: only sign images from configs whose id is in this list.
ifstringTemplate-conditional: skip this docker sign config if rendered result is "false" or empty.
outputStringOrBoolCapture and log stdout/stderr of the docker signing command.
signaturestringSignature output filename template (supports templates).
stdinstringContent written to the signing command's stdin.
stdin_filestringPath to a file whose content is written to the signing command's stdin.

dockerhub

DockerHub description sync configuration. Pushes image descriptions and README content to DockerHub repositories.

FieldTypeDefaultDescription
descriptionstringShort description for the DockerHub repository (max 100 chars).
full_descriptionDockerHubFullDescriptionFull description (README) source for the DockerHub repository.
imageslist of stringDockerHub image names to update (e.g. myorg/myapp).
secret_namestringEnvironment variable name containing the DockerHub token.
skipStringOrBoolSkip this publisher. Accepts bool or template string.
usernamestringDockerHub username for authentication.

git

Git-level tag discovery and sorting settings.

Controls how anodizer discovers and orders tags when determining the current and previous versions. This is separate from TagConfig, which controls version bumping logic.

FieldTypeDefaultDescription
ignore_tag_prefixeslist of stringTag prefixes to ignore during version detection (supports templates). Tags starting with any prefix in this list are excluded. Mirrors GoReleaser Pro's ignore_tag_prefixes feature.
ignore_tagslist of stringTag patterns to ignore during version detection (supports templates). Tags matching any pattern in this list are excluded from version detection entirely.
prerelease_suffixstringSuffix that identifies pre-release tags for sorting purposes. When set, tags ending with this suffix are treated as pre-releases and sorted accordingly during tag discovery.
tag_sortstringHow to sort git tags when determining the latest version.

Accepted values: - "-version:refname" (default) — lexicographic version sort on the tag name. - "-version:creatordate" — sort by the tag's creation date (newest first). |

gitea_urls

Custom Gitea API/download URLs for self-hosted Gitea installations. Matches GoReleaser's GiteaURLs struct.

FieldTypeDefaultDescription
apistringGitea API base URL (e.g. https://gitea.example.com/api/v1/).
downloadstringGitea download URL for release assets.
skip_tls_verifyboolWhen true, skip TLS certificate verification for the custom URLs.

github_urls

Custom GitHub API/upload/download URLs for GitHub Enterprise installations. Matches GoReleaser's GitHubURLs struct.

FieldTypeDefaultDescription
apistringGitHub API base URL (e.g. https://github.example.com/api/v3/).
downloadstringGitHub download URL for release assets (e.g. https://github.example.com/).
skip_tls_verifyboolWhen true, skip TLS certificate verification for the custom URLs.
uploadstringGitHub upload URL for release assets (e.g. https://github.example.com/api/uploads/).

gitlab_urls

Custom GitLab API/download URLs for self-hosted GitLab installations. Matches GoReleaser's GitLabURLs struct.

FieldTypeDefaultDescription
apistringGitLab API base URL (e.g. https://gitlab.example.com/api/v4/).
downloadstringGitLab download URL for release assets.
skip_tls_verifyboolWhen true, skip TLS certificate verification for the custom URLs.
use_job_tokenboolWhen true, use the CI_JOB_TOKEN for authentication instead of a personal token.
use_package_registryboolWhen true, use the GitLab Package Registry for uploads instead of Generic Packages.

homebrew_casks

Unified Homebrew Cask configuration (WAVE 4).

Used at both call-sites: - homebrew_casks: — top-level array; carries repository, commit_author, directory, ids, url, structured uninstall/zap, etc. - crates[].publish.homebrew_cask: — per-crate override; same shape, with url_template as the simpler URL alternative.

Fields from both original types are present; any field may be None at either call-site. The union avoids a two-type bifurcation while keeping both axes.

FieldTypeDefaultDescription
alternative_nameslist of stringAlternative cask names (aliases).
appstringmacOS .app bundle name (e.g. "MyApp.app").
binarieslist of HomebrewCaskBinaryBinary stubs to create in /usr/local/bin.

Each entry is either a bare string ("my-cli" → emits binary "my-cli") or a structured { name, target } object ({ name: "my-cli", target: "mycli" } → emits binary "my-cli", target: "mycli"). The target: form mirrors the Homebrew Ruby cask DSL for binary renames — without it, a wrapped binary installs at the wrong path. Mirrors GoReleaser internal/pipe/brew/templates/cask.rb.tmpl. | | caveats | string | — | Custom caveats shown after install. | | commit_author | CommitAuthorConfig | — | Commit author with optional signing. | | commit_msg_template | string | — | Custom commit message template. Default: "Brew cask update for {{ .ProjectName }} version {{ .Tag }}" | | completions | HomebrewCaskCompletions | — | Shell completion definitions. | | conflicts | list of HomebrewCaskConflictEntry | — | Conflicting casks or formulae. | | custom_block | string | — | Arbitrary Ruby code inserted into the cask block. | | dependencies | list of HomebrewCaskDependencyEntry | — | Cask dependencies (other casks or formulae). | | description | string | — | Cask description. | | directory | string | — | Subdirectory in the tap repo for cask placement (default: "Casks"). | | generate_completions_from_executable | HomebrewCaskGeneratedCompletions | — | Auto-generate shell completions from an executable. | | homepage | string | — | Project homepage URL. | | hooks | HomebrewCaskHooks | — | Pre/post install/uninstall hooks. | | ids | list of string | — | Build IDs filter: only include artifacts from builds whose id is in this list. | | license | string | — | License identifier (SPDX). | | manpages | list of string | — | Manual page references to install. | | name | string | — | Cask name (default: crate / project name). | | repository | RepositoryConfig | — | Unified repository config for the Homebrew tap. | | service | string | — | Homebrew service definition. | | skip_upload | StringOrBool | — | Skip publishing the cask. "true" always skips; "auto" skips for prerelease versions. Accepts bool or template string. | | uninstall | HomebrewCaskUninstall | — | Structured uninstall stanza configuration. | | url | HomebrewCaskURL | — | Structured download URL configuration (top-level axis). | | url_template | string | — | Simple URL template for the .dmg/.zip download (per-crate shorthand).

Cannot be combined with url.template: — set one or the other. If both are present, config validation rejects the config at parse time. Use url: for the structured form (verified domain, custom headers, etc.) or url_template: for a bare string shorthand — never both simultaneously. | | zap | HomebrewCaskUninstall | — | Deep uninstall (zap) stanza configuration. |

makeselfs

FieldTypeDefaultDescription
compressionstringCompression algorithm: gzip, bzip2, xz, lzo, compress, or none.
descriptionstringDescription for LSM metadata.
extra_argslist of stringExtra arguments passed to the makeself command.
filenamestringOutput filename template (default includes project, version, os, arch).
fileslist of MakeselfFileAdditional files to include in the archive.
goarchlist of stringTarget architecture filter.
gooslist of stringTarget OS filter (default: ["linux", "darwin"]).
homepagestringHomepage URL for LSM metadata.
idstringUnique identifier for this makeself config (default: "default").
idslist of stringBuild IDs filter: only include artifacts whose id is in this list.
keywordslist of stringKeywords for LSM metadata.
licensestringLicense for LSM metadata.
maintainerstringMaintainer for LSM metadata.
namestringDisplay name embedded in the self-extracting archive.
scriptstringStartup script to run when the archive is extracted and executed. Required — the archive will not be created without this.
skipStringOrBoolSkip this config. Accepts bool or template string.

metadata

FieldTypeDefaultDescription
commit_authorCommitAuthorConfigCommit author identity for Pro commit workflows (GoReleaser Pro v2.12+). Reuses the shared CommitAuthorConfig (name + email + optional signing). Exposed as {{ .Metadata.CommitAuthor.Name }} / {{ .Metadata.CommitAuthor.Email }}.
descriptionstringHuman-readable project description (exposed as {{ .Metadata.Description }}).
full_descriptionContentSourceLong-form project description (GoReleaser Pro v2.1+). Supports inline string, from_file, or from_url. Exposed as {{ .Metadata.FullDescription }}. FromUrl is resolved lazily (requires the release stage); FromFile is resolved at context-populate time with template-rendered path.
homepagestringProject homepage URL (exposed as {{ .Metadata.Homepage }}).
licensestringProject license identifier, e.g. "MIT" or "Apache-2.0" (exposed as {{ .Metadata.License }}).
maintainerslist of stringList of project maintainers (exposed as {{ .Metadata.Maintainers }}).
mod_timestampstringGlobal modification timestamp for metadata output files (metadata.json and artifacts.json). Template string (e.g. "{{ .CommitTimestamp }}") or unix timestamp. When set, rendered late in the pipeline and applied as file mtime. Exposed as {{ .Metadata.ModTimestamp }}.

milestones

FieldTypeDefaultDescription
closeboolClose the milestone on release. Default: false.
fail_on_errorboolFail the pipeline if milestone close fails. Default: false.
name_templatestringMilestone name template (default: "{{ .Tag }}").
repoScmRepoConfigRepository owner/name. Auto-detected from git remote if not set.

monorepo

GoReleaser Pro monorepo configuration.

When configured, tag discovery filters by tag_prefix and the working directory is scoped to dir.

This is DIFFERENT from TagConfig.tag_prefix: - MonorepoConfig.tag_prefix: tags in git already HAVE the prefix (e.g. subproject1/v1.2.3). The prefix is STRIPPED for {{ .Tag }} while {{ .PrefixedTag }} retains the full tag. - TagConfig.tag_prefix: a prefix to PREPEND when constructing {{ .PrefixedTag }} from a plain tag.

When monorepo is configured, it takes precedence over tag.tag_prefix for PrefixedTag / PrefixedPreviousTag behavior.

FieldTypeDefaultDescription
dirstringWorking directory for this subproject.

Used for changelog path filtering (when no explicit changelog.paths or crate.path is configured) and as the default build dir. | | tag_prefix | string | — | Tag prefix for this subproject (e.g. "subproject1/").

Tags matching this prefix are selected during tag discovery, and the prefix is stripped from {{ .Tag }} while {{ .PrefixedTag }} retains the full tag. |

nightly

FieldTypeDefaultDescription
name_templatestringTemplate for the release name. Default: "{{ .ProjectName }}-nightly"
tag_namestringTag name used for the nightly release. Default: "nightly".

notarize

Top-level notarization configuration supporting both cross-platform (rcodesign) and native macOS (codesign + xcrun notarytool) modes.

FieldTypeDefaultDescription
macoslist of MacOSSignNotarizeConfigCross-platform signing/notarization (rcodesign-based, works on any OS).
macos_nativelist of MacOSNativeSignNotarizeConfigNative signing/notarization (codesign + xcrun, macOS only).
skipStringOrBoolSkip all notarization. Accepts bool or template string.

partial

FieldTypeDefaultDescription
bystringHow to split builds: "goos" (by OS, default) or "target" (by full triple). "goos" groups all arch variants for the same OS into one split job. "target" gives each unique target triple its own split job.

publishers

FieldTypeDefaultDescription
argslist of stringArguments passed to the publish command (supports templates).
artifact_typeslist of stringArtifact type filter: only publish artifacts of these types (e.g., "archive", "binary").
checksumboolInclude checksums in published artifacts.
cmdstringCommand to invoke for publishing.
dirstringWorking directory for the publisher command.
envlist of stringEnvironment variables passed to the publish command.
extra_fileslist of ExtraFileSpecExtra files to include in publishing (glob patterns with optional name override).
idslist of stringBuild IDs filter: only publish artifacts from builds whose id is in this list.
metaboolInclude metadata artifacts in published artifacts.
namestringHuman-readable name for this publisher (used in logs).
signatureboolInclude signatures in published artifacts.
skipStringOrBoolTemplate-conditional skip: if rendered result is "true", skip this publisher. Accepts bool or template string (e.g. "{{ if .IsSnapshot }}true{{ endif }}").
templated_extra_fileslist of TemplatedExtraFileExtra files whose contents are rendered through the template engine before publishing. Unlike extra_files which copy as-is, template variables like {{ .Tag }} are expanded. GoReleaser Pro feature.

release

FieldTypeDefaultDescription
discussion_category_namestringGitHub Discussion category name for the release.
draftboolWhen true, create the release as a draft (unpublished).
extra_fileslist of ExtraFileSpecExtra files to upload to the release beyond build artifacts.
footerContentSourceText appended to the release body (inline string, from_file, or from_url).
giteaScmRepoConfigGitea repository to release to (owner and name).
githubScmRepoConfigGitHub repository to release to (owner and name).
gitlabScmRepoConfigGitLab repository to release to (owner and name).
headerContentSourceText prepended to the release body (inline string, from_file, or from_url).
idslist of stringArtifact IDs filter for uploads.
include_metaboolUpload metadata.json and artifacts.json as release assets.
make_latestobjectMark release as latest: true, false, or "auto" (latest non-prerelease).
modestringRelease mode: "keep-existing", "append", "prepend", or "replace".
name_templatestringRelease title template (supports templates).
prereleaseobjectMark release as pre-release: true, false, or "auto" (inferred from tag).
replace_existing_artifactsboolWhen true, replace existing release artifacts with the same name.
replace_existing_draftboolWhen true, replace an existing draft release instead of failing.
skipStringOrBoolSkip the release stage. Accepts bool or template string (e.g. "{{ if IsSnapshot }}true{{ endif }}" for conditional skip). GoReleaser supports template strings here since v1.15.0. Accepts the legacy disable: spelling via serde alias for back-compat with imported GoReleaser configs (GR's release config field is pkg/config/config.go:909 Disable string).
skip_uploadStringOrBoolSkip uploading artifacts: true, false, or "auto" (skip for snapshots). Accepts bool or template string (GoReleaser uses string type).
tagstringOverride the release tag (template string). When set, this tag is used as the tag_name in the GitHub release API instead of the crate's tag_template. Useful in monorepo setups to strip a tag prefix (e.g. "{{ .Tag }}" to publish v1.0.0 instead of myapp/v1.0.0). This is a GoReleaser Pro feature provided for free by anodizer.
target_commitishstringTarget branch or SHA for the release tag.
templated_extra_fileslist of TemplatedExtraFileExtra files whose contents are rendered through the template engine before upload. Unlike extra_files which copy as-is, template variables like {{ .Tag }} are expanded. GoReleaser Pro feature.
upload_concurrencyintegerMaximum number of asset-upload requests in flight simultaneously.

GitHub's secondary rate-limit is triggered by burst traffic. Keeping this value low avoids tripping the limit even for releases with many artifacts. Default: 4. Override at runtime with ANODIZER_GITHUB_UPLOAD_CONCURRENCY. | | use_existing_draft | bool | — | Reuse an existing draft release instead of creating a new one. |

retry

User-facing retry configuration block (retry: at config root).

All fields are optional in YAML; missing fields fall back to GoReleaser's defaults (10 attempts, 10s base delay, 5m cap).

FieldTypeDefaultDescription
attemptsinteger10Total attempts (including the first). Default 10. Values < 1 are clamped up to 1 by the policy layer.
delayHumanDuration10sInitial delay before the second attempt. Default 10s. Subsequent delays grow exponentially (delay × 2^(n-2)) up to [Self::max_delay].
max_delayHumanDuration5mUpper bound on any individual sleep between attempts. Default 5m. Without this cap, an exponential backoff with delay=10s would stretch attempt 9 to ~42 minutes.

sboms

FieldTypeDefaultDescription
argslist of stringCommand-line arguments (supports templates and $artifact, $document vars).
artifactsstringWhich artifacts to catalog: "source", "archive", "binary", "package", "diskimage", "installer", "any" (default: "archive").
cmdstringCommand to run for SBOM generation (default: "syft").
documentslist of stringOutput document path templates (supports templates).
envlist of stringEnvironment variables to pass to the command, as KEY=VALUE strings. Order is preserved. Values are template-rendered before being set.
idstringUnique identifier for this SBOM config (default: "default").
idslist of stringFilter by artifact IDs (ignored if artifacts="source").
skipStringOrBoolSkip this SBOM config. Accepts bool or template string.

signs

FieldTypeDefaultDescription
argslist of stringArguments passed to the signing command (supports templates with ${artifact} and ${signature}).
artifactsstringArtifact types to sign: "all", "archive", "binary", "checksum", "package", "sbom" (default: "none").
certificatestringCertificate file to embed in the signature (Cosign bundle signing).
cmdstringSigning command to invoke (default: "cosign" or "gpg").
envlist of stringEnvironment variables passed to the signing command.
idstringUnique identifier for this sign config.
idslist of stringBuild IDs filter: only sign artifacts from builds whose id is in this list.
ifstringTemplate-conditional: skip this sign config if rendered result is "false" or empty.
outputStringOrBoolCapture and log stdout/stderr of the signing command. Accepts bool or template string (e.g., "{{ .IsSnapshot }}").
signaturestringSignature output filename template (supports templates).
stdinstringContent written to the signing command's stdin.
stdin_filestringPath to a file whose content is written to the signing command's stdin.

snapshot

FieldTypeDefaultDescription
version_templatestringVersion string template for snapshot builds (e.g., "{{ .Commit }}-SNAPSHOT"). F3: accepts the deprecated name_template: GR alias (renamed to version_template upstream). GR ref: internal/pipe/snapshot/snapshot.go:25-28if NameTemplate != "" { VersionTemplate = NameTemplate }. A deprecation warning is emitted at config-load time when the alias is hit (see apply_snapshot_legacy_aliases).

source

FieldTypeDefaultDescription
enabledboolWhen true, generate a source code archive for the release.
fileslist of SourceFileEntry[]Extra files to include in the source archive. Accepts strings (glob patterns) or objects with src/dst/info.
formatstringArchive format for the source tarball: tar.gz, tgz, tar, or zip (default: tar.gz).
name_templatestringFilename template for the source archive (supports templates).
prefix_templatestringPrefix prepended to all paths inside the archive (supports templates). Defaults to name_template value. Use this to set a different prefix than the archive name.

srpms

FieldTypeDefaultDescription
binslist of stringBuild IDs whose binaries are bundled into the source RPM. When set, only artifacts produced by builds with these IDs are packaged. Mirrors GR NFPM.Builds.
build_hoststringOverride the build host recorded in the RPM header. Useful for reproducible builds where the actual hostname leaks build-env detail.
compressionstringCompression algorithm (gzip, xz, zstd, none).
contentslist of NfpmContentAdditional contents to include in the source RPM. Shares the unified [NfpmContent] type with nFPM contents; SRPM-style source: / destination: / type: keys are accepted via serde aliases.
descriptionstringPackage description.
docslist of stringDocumentation files to include.
enabledboolEnable source RPM generation. Default: false.
epochstringRPM epoch.
file_name_templatestringOutput filename template.
groupstringRPM group.
import_pathstringProject import path (Go-style; for Rust this is the canonical repository URL, e.g. github.com/owner/repo). Used in spec file generation for downstream tooling that expects a vcs-rooted path.
licensestringLicense identifier.
license_file_namestringLicense file name to include.
maintainerstringPackage maintainer.
package_namestringPackage name (default: project_name).
packagerstringRPM packager field.
posttransstring%posttrans scriptlet — executed after all packages in the transaction have been installed. Path to a script file.
prefixeslist of stringFilesystem prefixes the package may install to (RPM Prefix: tag). Each entry becomes one Prefix: directive — relocatable RPMs need at least one prefix declared.
prereleasestringPrerelease suffix appended to the version (e.g. rc1, beta2). Mirrors GR NFPM.Prerelease.
pretransstring%pretrans scriptlet — executed on the package transaction before any package in the transaction is installed. Path to a script file.
sectionstringRPM section.
signatureNfpmSignatureConfigRPM signature configuration. Shares the unified [NfpmSignatureConfig] type with nFPM.
skipStringOrBoolSkip this config. Accepts bool or template string.
spec_filestringPath to the RPM spec file template.
summarystringSummary line.
urlstringHomepage URL.
vendorstringPackage vendor.
version_metadatastringBuild metadata appended to the version (e.g. git commit hash). Mirrors GR NFPM.VersionMetadata.

tag

FieldTypeDefaultDescription
branch_historystringBranch history mode for determining the previous tag: "full" or "last".
custom_tagstringCustom version tag to use instead of auto-incrementing.
default_bumpstringDefault version bump type when no conventional commit token is found: "major", "minor", "patch", or "none".
force_without_changesboolWhen true, create a new tag even if no commits have changed since the last tag.
force_without_changes_preboolLike force_without_changes but only for pre-release versions.
git_api_taggingboolWhen true, use the GitHub/GitLab API for tagging instead of git CLI.
initial_versionstringVersion string to use when no previous tag exists (default: "0.1.0").
major_string_tokenstringConventional commit token triggering a major bump (default: "major").
minor_string_tokenstringConventional commit token triggering a minor bump (default: "minor" or "feat").
none_string_tokenstringConventional commit token suppressing a version bump entirely (default: "none").
patch_string_tokenstringConventional commit token triggering a patch bump (default: "patch" or "fix").
prereleaseboolWhen true, apply a pre-release suffix to the generated version.
prerelease_suffixstringSuffix appended to pre-release versions (e.g., "beta").
release_brancheslist of stringBranch name patterns (supports wildcards) that trigger releases (default: ["master", "main"]).
tag_contextstringSource for determining the previous tag: "repo" (default) or "branch".
tag_post_hookslist of HookEntryCommands to run after anodizer tag successfully creates and pushes the tag. Env and template vars same as tag_pre_hooks.
tag_pre_hookslist of HookEntryCommands to run before anodizer tag creates the tag. Useful for updating lockfiles or committing sibling changes that must be part of the tagged commit. Env: ANODIZER_CURRENT_TAG, ANODIZER_PREVIOUS_TAG are set; template vars {{ .Tag }}, {{ .PreviousTag }}, {{ .Version }}, {{ .PrefixedTag }} are available.
tag_prefixstringPrefix prepended to version tags (e.g., "v" produces "v1.2.3").
verboseboolWhen true, print verbose tag calculation output.

template_files

Configuration for a template file that is rendered through the template engine and placed in the dist directory as a release artifact.

GoReleaser Pro feature: all rendered template files are uploaded to the release by default. Both src and dst paths support template rendering.

FieldTypeDefaultDescription
dststringDestination filename, prefixed with the dist directory. Templates: allowed.
idstringIdentifier for this template file entry (default: "default").
modestringFile permissions in octal notation as a string, e.g. "0755" (default: "0655"). Parsed at runtime via parse_octal_mode() to avoid YAML interpreting as decimal.
srcstringSource template file path. The file contents are rendered through the template engine. Templates: allowed (in path itself).

uploads

FieldTypeDefaultDescription
checksumboolInclude checksums in uploaded artifacts.
checksum_headerstringHeader name for the SHA256 checksum of the artifact.
client_x509_certstringPath to PEM-encoded client X.509 certificate for mTLS.
client_x509_keystringPath to PEM-encoded client X.509 key for mTLS.
custom_artifact_nameboolWhen true, use the artifact name as-is (don't append to target URL).
custom_headersmapCustom HTTP headers (each value is template-expanded).
extra_fileslist of ExtraFileSpecExtra files to include in uploading.
extra_files_onlyboolUpload only extra files, skip normal artifacts.
extslist of stringFile extension filter: only upload artifacts with these extensions.
idslist of stringBuild IDs filter: only upload artifacts whose id is in this list.
metaboolInclude metadata artifacts in uploaded artifacts.
methodstringHTTP method: PUT or POST (default: PUT).
modestringUpload mode: "archive" (default) or "binary".
namestringHuman-readable name for this upload config.
passwordstringPassword for HTTP basic auth (env var template strongly recommended; in-config plaintext leaves the value in dist/config.yaml after dry-run). Resolution order: rendered password template → env UPLOAD_{NAME}_SECRET. Mirrors GoReleaser's Upload.Password cascade (added in upstream v2.12).
signatureboolInclude signatures in uploaded artifacts.
skipStringOrBoolSkip condition template (if rendered to "true", skip this upload).
targetstringTarget URL template (supports template variables like {{ .ProjectName }}, {{ .Version }}).
trusted_certificatesstringPath to PEM-encoded trusted CA certificates.
usernamestringUsername for HTTP basic auth. Resolution order: rendered username template → env UPLOAD_{NAME}_USERNAME. Set this to a literal value or a {{ .Env.X }} template.

upx

FieldTypeDefaultDescription
argslist of string[]Extra arguments passed to UPX (e.g., ["-9", "--brute"]).
binarystringupxUPX executable path or name (default: "upx").
bruteboolUse brute-force compression (--brute flag). Very slow but produces smallest output.
compressstringUPX compression level string (e.g., "1"-"9", "best"). Maps to --compress flag.
enabledStringOrBoolWhether to compress binaries with UPX. Accepts a bool or a template string that evaluates to a bool.
idstringUnique identifier for this UPX config.
idslist of stringBuild IDs filter: only compress binaries from builds whose id is in this list.
lzmaboolUse LZMA compression (--lzma flag).
requiredboolfalseWhen true, fail the build if UPX is not found.
targetslist of stringTarget triples to compress binaries for (empty means all targets).

workspaces

A workspace represents an independent project root within a monorepo. Each workspace has its own crates, changelog, and release configuration, allowing independently-versioned components that aren't Cargo workspace members.

FieldTypeDefaultDescription
afterHooksConfigHooks run after this workspace's pipeline completes.
beforeHooksConfigHooks run before this workspace's pipeline starts.
binary_signslist of SignConfig[]Binary-specific signing configs (same shape as signs but only for binary artifacts). The artifacts field on each entry is constrained at parse time to binary / none (or omitted) — a broader filter on binary_signs would silently match nothing because the loop only iterates Binary artifacts. Constraint lives in deserialize_binary_signs.
changelogChangelogConfigChangelog configuration for this workspace.
crateslist of CrateConfig[]Crates belonging to this workspace.
envlist of stringEnvironment variables scoped to this workspace.

List of KEY=VALUE strings. Order is preserved. Values are template-rendered at pipeline startup. | | name | string | — | Workspace identifier used in logs and template variables. | | signs | list of SignConfig | [] | Signing configurations for binaries, archives, and checksums. | | skip | list of string | [] | Pipeline stages to skip when releasing this workspace. Stage names match the CLI --skip flag (e.g., announce, publish). |