Deprecation notices¶
This page is used to list deprecation notices across GoReleaser.
Deprecated options will be removed after ~6 months from the time they were deprecated.
You can check your use of deprecated configurations by running:
goreleaser check
Active deprecation notices¶
--skip
¶
since 2023-09-14
The following goreleaser release
flags were deprecated:
--skip-announce
--skip-before
--skip-docker
--skip-ko
--skip-publish
--skip-sbom
--skip-sign
--skip-validate
By the same token, the following goreleaser build
flags were deprecated:
--skip-before
--skip-post-hooks
--skip-validate
All these flags are now under a single --skip
flag, that accepts multiple values.
goreleaser build --skip-before --skip-validate
goreleaser release --skip-validate --skip-publish
goreleaser build --skip=before,validate
goreleaser release --skip=validate,publish
# or
goreleaser build --skip=before --skip=validate
goreleaser release --skip=validate --skip=publish
You can check goreleaser build --help
and goreleaser release --help
to see the valid options, and shell autocompletion should work properly as well.
scoops.bucket¶
since 2023-06-13 (v1.19.0)
Replace bucket
with repository
.
scoops:
-
bucket:
- name: foo
owner: bar
scoops:
-
repository:
- name: foo
owner: bar
krews.index¶
since 2023-06-13 (v1.19.0)
Replace index
with repository
.
krews:
-
index:
- name: foo
owner: bar
krews:
-
repository:
- name: foo
owner: bar
brews.tap¶
since 2023-06-13 (v1.19.0)
Replace tap
with repository
.
brews:
-
tap:
- name: foo
owner: bar
brews:
-
repository:
- name: foo
owner: bar
archives.rlcp¶
since 2023-06-06 (v1.19.0)
This option is now default and can't be changed. You can remove it from your configuration files.
See this for more info.
source.rlcp¶
since 2023-06-06 (v1.19.0)
This option is now default and can't be changed. You can remove it from your configuration files.
See this for more info.
brews.plist¶
since 2023-06-06 (v1.19.0)
plist
is deprecated by Homebrew, and now on GoReleaser too. Use service
instead.
brews:
-
plist: |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
# etc ...
brews:
-
service: |
run [opt_bin/"mybin"]
keep_alive true
# etc ...
--debug¶
since 2023-05-16 (v1.19.0)
--debug
has been deprecated in favor of --verbose
.
goreleaser release --debug
goreleaser release --verbose
scoop¶
since 2023-04-30 (v1.18.0)
GoReleaser now allows many scoop
configurations, so it should be pluralized accordingly.
scoop:
# ...
scoops:
- # ...
build¶
since 2023-02-09 (v1.16.0)
This option was still being supported, even though undocumented, for a couple of years now. It's finally time to sunset it.
Simply use the pluralized form, builds
, according to the documentation.
build:
# ...
builds:
- # ...
--rm-dist¶
since 2023-01-17 (v1.15.0)
--rm-dist
has been deprecated in favor of --clean
.
goreleaser release --rm-dist
goreleaser release --clean
nfpms.maintainer¶
since 2022-05-07 (v1.9.0)
nFPM will soon make mandatory setting the maintainer field.
nfpms:
- maintainer: ''
nfpms:
- maintainer: 'Name <email>'
Expired deprecation notices¶
The following options were deprecated in the past and were already removed.
archives.rlcp¶
since 2022-12-23 (v1.14.0), removed 2023-06-06 (v1.19.0)
This is not so much a deprecation property (yet), as it is a default behavior change.
The usage of relative longest common path (rlcp
) on the destination side of archive files will be enabled by default by June 2023. Then, this option will be deprecated, and you will have another 6 months (until December 2023) to remove it.
For now, if you want to keep the old behavior, no action is required, but it would be nice to have your opinion here.
If you want to make sure your releases will keep working properly, you can enable this option and test it out with goreleaser release --snapshot --clean
.
archives:
-
rlcp: true
source.rlcp¶
since 2022-12-23 (v1.14.0), removed 2023-06-06 (v1.19.0)
Same as archives.rlcp
.
source:
rlcp: true
nfpms.maintainer¶
since 2022-05-07 (v1.9.0)
nFPM will soon make mandatory setting the maintainer field.
nfpms:
- maintainer: ''
nfpms:
- maintainer: 'Name <email>'
archives.replacements¶
since 2022-11-24 (v1.14.0), removed 2023-06-06 (v1.19.0)
The replacements
will be removed soon from the archives section, as it was never handled correctly when multiple archives were being used, and it also causes confusion in other places.
You can still get the same features by abusing the name_template
property.
archives:
- id: foo
name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
archives:
- id: foo
name_template: >-
{{- .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end -}}
Those two configurations will yield the same results.
Notice that if you are using the archives.name_template
, notice it also has a {{.Version}}
in it. Adjust the new name_template
accordingly.
nfpms.replacements¶
since 2022-11-24 (v1.14.0), removed 2023-06-06 (v1.19.0)
The replacements
will be removed soon from the nFPMs section.
You can still get the same features by abusing the file_name_template
property.
nfpms:
- id: foo
file_name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
nfpms:
- id: foo
file_name_template: >-
{{- .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end -}}
Those two configurations will yield the same results.
Generally speaking, is probably best to use {{ .ConventionalFileName }}
instead of custom templates.
snapcrafts.replacements¶
since 2022-11-24 (v1.14.0), removed 2023-06-06 (v1.19.0)
The replacements
will be removed soon from the Snapcrafts section.
You can still get the same features by abusing the name_template
property.
snapcrafts:
- id: foo
name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
snapcrafts:
- id: foo
name_template: >-
{{ .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
Those two configurations will yield the same results.
Generally speaking, is probably best to use {{ .ConventionalFileName }}
instead of custom templates.
variables¶
since 2022-01-20 (v1.4.0), removed 2023-05-01 (v1.18.0)
On GoReleaser PRO custom variables should now be prefixed with .Var
.
variables:
foo: bar
some_template: 'lala-{{ .foo }}'
variables:
foo: bar
some_template: 'lala-{{ .Var.foo }}'
dockers.use: buildpacks¶
since 2022-03-16 (v1.7.0), removed 2022-09-28 (v1.12.0)
This was removed due to some issues:
- The binary gets rebuild again during the buildpacks build;
- There is no ARM support.
rigs¶
since 2022-03-21 (v1.8.0), removed 2022-08-16 (v1.11.0)
GoFish was deprecated by their authors, therefore, we're removing its support from GoReleaser too.
nfpms.empty_folders¶
since 2021-11-14 (v1.0.0), removed 2022-06-14 (v1.10.0)
nFPM empty folders is now deprecated in favor of a dir
content type:
nfpms:
- empty_folders:
- /foo/bar
nfpms:
- contents:
- dst: /foo/bar
type: dir
builds for windows/arm64¶
since 2021-08-16 (v0.175.0), removed 2022-06-12 (v1.10.0)
Since Go 1.17, windows/arm64
is a valid target.
Prior to v0.175.0, GoReleaser would just ignore this target. Since in Go 1.17 it is now a valid target, GoReleaser will build it if the Go version being used is 1.17 or later.
If you want to make sure it is ignored in the future, you need to add this to your build config:
ignore:
- goos: windows
goarch: arm64
If you try to use new versions of GoReleaser with Go 1.16 or older, it will warn about it until this deprecation warning expires, after that your build will likely fail.
godownloader¶
since 2021-10-13 (all), removed 2022-05-18
GoDownloader, the installation script generator, wasn't updated for a long time and is now officially deprecated. The website and all install scripts will be taken out in 6 months. You can still use any of the other install methods.
This also includes install.goreleaser.com
.
Most common tools installed via that website were probably GoReleaser itself and golangci-lint.
Please follow to the check their documentation for alternative install methods.
dockers.use_buildx¶
since 2021-06-26 (v0.172.0), removed 2022-03-16 (v1.7.0)
use_buildx
is deprecated in favor of the more generalist use
, since now it also allow other options in the future:
Change this:
dockers:
-
use_buildx: true
dockers:
-
use: buildx
builds for darwin/arm64¶
since 2021-02-17 (v0.157.0), removed 2022-03-16 (v1.7.0)
Since Go 1.16, darwin/arm64
is macOS on Apple Silicon instead of iOS
.
Prior to v0.156.0, GoReleaser would just ignore this target. Since in Go 1.16 and later it is a valid target, GoReleaser will now build it if the Go version being used is 1.16 or later.
If you want to make sure it is ignored in the future, you need to add this to your build config:
ignore:
- goos: darwin
goarch: arm64
If you try to use new versions of GoReleaser with Go 1.15 or older, it will warn about it until this deprecation warning expires, after that your build will likely fail.
Skipping SemVer Validations¶
since 2021-02-28 (v0.158.0), removed 2021-09-22 (v0.180.0)
GoReleaser skips SemVer validations when run with --skip-validation
or --snapshot
. This causes other problems later, such as invalid Linux packages. Because of that, once this deprecation expires, GoReleaser will hard fail on non-semver versions, as stated on our limitations page.
docker.builds¶
since 2021-01-07 (v0.154.0), removed 2021-08-13 (v0.175.0)
builds
is deprecated in favor of ids
, since now it also allows to copy nfpm packages:
Change this:
dockers:
-
builds: ['a', 'b']
dockers:
-
ids: ['a', 'b']
docker.binaries¶
since 2021-01-07 (v0.154.0), removed 2021-08-13 (v0.175.0)
binaries
is deprecated and now does nothing. If you want to filter something out, use the ids
property.
Change this:
dockers:
-
binaries: ['foo']
dockers:
-
ids: ['foo']
nfpms.files¶
since 2020-12-21 (v0.149.0), removed 2021-07-26 (v0.172.0)
files
is deprecated in favor of contents
(check this page for more details):
Change this:
nfpms:
-
files:
foo: bar
nfpms:
-
contents:
- src: foo
dst: bar
nfpms.config_files¶
since 2020-12-21 (v0.149.0), removed 2021-07-26 (v0.172.0)
config_files
is deprecated in favor of contents
(check this page for more details):
Change this:
nfpms:
-
config_files:
foo: bar
nfpms:
-
contents:
- src: foo
dst: bar
type: config
nfpms.symlinks¶
since 2020-12-21 (v0.149.0), removed 2021-07-26 (v0.172.0)
symlinks
is deprecated in favor of contents
(check this page for more details):
Change this:
nfpms:
-
symlinks:
foo: bar
nfpms:
-
contents:
- src: foo
dst: bar
type: symlink
nfpms.rpm.ghost_files¶
since 2020-12-21 (v0.149.0), removed 2021-07-26 (v0.172.0)
rpm.ghost_files
is deprecated in favor of contents
(check this page for more details):
Change this:
nfpms:
-
rpm:
ghost_files:
- foo
nfpms:
-
contents:
- dst: bar
type: ghost
packager: rpm # optional
nfpms.rpm.config_noreplace_files¶
since 2020-12-21 (v0.149.0), removed 2021-07-26 (v0.172.0)
rpm.config_noreplace_files
is deprecated in favor of contents
(check this page for more details):
Change this:
nfpms:
-
rpm:
config_noreplace_files:
foo: bar
nfpms:
-
contents:
- src: foo
dst: bar
type: config|noreplace
packager: rpm # optional
nfpms.deb.version_metadata¶
since 2020-12-21 (v0.149.0), removed 2021-07-26 (v0.172.0)
deb.version_metadata
is deprecated in favor of version_metadata
(check this page for more details):
Change this:
nfpms:
-
deb:
version_metadata: beta1
nfpms:
-
version_metadata: beta1
brews.github¶
since 2020-07-06 (v0.139.0), removed 2021-01-04 (v0.152.0)
GitHub section was deprecated in favour of tap
which reflects Homebrew's naming convention. GitHub will be picked automatically when GitHub token is passed.
Change this:
brews:
-
github:
owner: goreleaser
name: homebrew-tap
brews:
-
tap:
owner: goreleaser
name: homebrew-tap
brews.gitlab¶
since 2020-07-06 (v0.139.0), removed 2021-01-04 (v0.152.0)
GitLab section was deprecated in favour of tap
which reflects Homebrew's naming convention. GitLab will be picked automatically when GitLab token is passed.
Change this:
brews:
-
gitlab:
owner: goreleaser
name: homebrew-tap
brews:
-
tap:
owner: goreleaser
name: homebrew-tap
puts¶
since 2019-11-15, removed 2020-04-14 (v0.132.0)
The HTTP upload support was extended to also accept POST
as a method, so the name puts
kind of lost its meaning.
puts:
- ...
uploads:
- ...
Also note that secrets environment variable name prefixes have changed from PUT_
to UPLOAD_
.
nfpms.name_template¶
since 2019-11-15, removed 2020-04-14 (v0.132.0)
The name_template
field was deprecated in favor of a more clear one, file_name_template
.
nfpms:
- name_template: foo
nfpms:
- file_name_template: foo
blob¶
since 2019-08-02, removed 2020-03-22 (v0.130.0)
Blob was deprecated in favor of its plural form. It was already accepting multiple inputs, but its pluralized now so its more clear.
blob:
# etc
blobs:
# etc
sign¶
since 2019-07-20, removed 2020-03-22 (v0.130.0)
Sign was deprecated in favor of its plural form.
sign:
# etc
signs:
-
# etc
brew¶
since 2019-06-09, removed 2020-01-26 (v0.125.0)
Brew was deprecated in favor of its plural form.
Change this:
brew:
# etc
brews:
-
# etc
s3¶
since 2019-06-09, removed 2020-01-07 (v0.125.0)
S3 was deprecated in favor of the new blob
, which supports S3, Azure Blob and GCS.
s3:
-
# etc
blobs:
-
provider: s3
# etc
ACLs should be set on the bucket, the acl
option does not exist anymore.
archive¶
since 2019-04-16, removed 2019-12-27 (v0.124.0)
We now allow multiple archives, so the archive
statement will be removed.
archive:
format: zip
archives:
- id: foo
format: zip
snapcraft¶
since 2019-05-27, removed 2019-12-27 (v0.124.0)
We now allow multiple Snapcraft configs, so the snapcraft
statement will be removed.
snapcraft:
publish: true
# ...
snapcrafts:
-
publish: true
# ...
nfpm¶
since 2019-05-07, removed 2019-12-27 (v0.124.0)
We now allow multiple NFPM config, so the nfpm
statement will be removed.
nfpm:
formats:
- deb
nfpms:
-
formats:
- deb
docker.binary¶
since 2018-10-01, removed 2019-08-02 (v0.114.0)
You can now create a Docker image with multiple binaries.
dockers:
- image: foo/bar
binary: foo
dockers:
- image: foo/bar
binaries:
- foo
docker.image¶
since 2018-10-20, removed 2019-08-02 (v0.114.0)
This property was deprecated in favor of more flexible image_templates
. The idea is to be able to define several images and tags using templates instead of just one image with tag templates. This flexibility allows images to be pushed to multiple registries.
dockers:
- image: foo/bar
tag_templates:
- '{{ .Tag }}'
dockers:
- image_templates:
- 'foo/bar:{{ .Tag }}'
docker.tag_templates¶
since 2018-10-20, removed 2019-08-02 (v0.114.0)
This property was deprecated in favor of more flexible image_templates
. The idea is to be able to define several images and tags using templates instead of just one image with tag templates.
dockers:
- image: foo/bar
tag_templates:
- '{{ .Tag }}'
dockers:
- image_templates:
- 'foo/bar:{{ .Tag }}'
git.short_hash¶
since 2018-10-03, removed 2019-01-19 (v0.98.0)
This property was being used to tell GoReleaser to use short git hashes instead of the full ones. This has been removed in favor of specific template variables (.FullCommit
and .ShortCommit
).
git:
short_hash: true
fake:
foo_template: 'blah {{ .Commit }}'
fake:
foo_template: 'blah {{ .ShortCommit }}'
fpm¶
since 2018-02-17, removed 2017-08-15 (v0.83.0)
FPM is deprecated in favor of nfpm, which is a simpler alternative written in Go. The objective is to remove the ruby dependency thus simplify the CI/CD pipelines.
Just replace the fpm
keyword by nfpm
in your .goreleaser.yaml
file.
fpm:
# ...
nfpm:
# ...
docker.tag_template¶
since 2018-01-19, removed 2017-08-15 (v0.83.0)
This property was deprecated in favor of the pluralized tag_templates
. The idea is to be able to define several tags instead of just one.
dockers:
- image: foo/bar
tag_template: '{{ .Tag }}'
dockers:
- image: foo/bar
tag_templates:
- '{{ .Tag }}'
docker.latest¶
since 2018-01-19, removed 2017-08-15 (v0.83.0)
The latest
field in Docker config is deprecated in favor of the newer tag_templates
field.
dockers:
- image: foo/bar
latest: true
dockers:
- image: foo/bar
tag_templates:
- '{{ .Tag }}'
- latest