1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-02-07 13:31:37 +02:00

docs: announce v1.24 (#4602)

v1.24 announcement, release planned for tomorrow.
This also includes the updated docs generated from goreleaser pro source
code.

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
This commit is contained in:
Carlos Alexandro Becker 2024-02-05 09:18:01 -03:00 committed by GitHub
parent f77eea3cca
commit 00c2ff7337
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 566 additions and 95 deletions

View File

@ -0,0 +1,63 @@
---
date: 2024-02-05
slug: goreleaser-v1.24
categories: [announcements]
authors: [caarlos0]
---
# Announcing GoReleaser v1.24 - the first of 2024
Happy new year!
The first release of 2024 is here!
<!-- more -->
## Highlights
- **security**: goreleaser would log environment variables in some
configurations when run with `--verbose`. Note that we only recommend using
the `--verbose` flag locally, to debug possible issues.
[CVE-2024-23840](https://nvd.nist.gov/vuln/detail/CVE-2024-23840)
- **new**: create DMG images (with `hdutil`/`mkisofs`) (only on [Pro][pro])
- **new**: create MSI installers (with `wix`/`msitools`) (only on [Pro][pro])
- **blog**: we fully migrated our blog from Medium to [mkdocs](/blog)
- **git**: options to ignore tag prefixes (only on [Pro][pro])
- **blob**: ACLs, cache control, and content disposition
- **nfpm**: add libraries to packages
- **artifactory**: allow to publish source archives
- **brew**: improve handling of single OS
- **nix**: improved generated derivations, use `stdenvNoCC` by default
- **jsonschema**: we now validate our jsonschema every time it changes to make
sure it is still valid
- **deprecations**: we deprecated some options in the `changelog` and `blobs`
sections. [Details](/deprecations)
As always, bug fixes, dependency updates, housekeeping, and documentation
updates are included in this release as well.
## Other news
- GoReleaser now has ~12.6k stars and 370 contributors! Thanks, everyone!
- We eventually discuss new features in our Discord server. 
[Join the conversation][discord]!
- nFPM had new releases as well, 
[check it out](https://github.com/goreleaser/nfpm/releases).
## Download
You can [install][] or upgrade using your favorite package manager, or see the
full release notes and download the pre-compiled binaries [here][oss-rel] and
[here (for Pro)][pro-rel].
## Helping out
You can help by reporting issues, contributing features, documentation
improvements, and bug fixes.
You can also [sponsor the project](/sponsor), or get a
[GoReleaser Pro licence][pro].
[pro]: /pro
[install]: https://goreleaser.com/install
[pro-rel]: https://github.com/goreleaser/goreleaser-pro/releases/tag/v1.24.0-pro
[oss-rel]: https://github.com/goreleaser/goreleaser/releases/tag/v1.24.0
[discord]: https://goreleaser.com/discord

View File

@ -26,7 +26,7 @@ goreleaser release [flags]
--release-notes string Load custom release notes from a markdown file (will skip GoReleaser changelog generation)
--release-notes-tmpl string Load custom release notes from a templated markdown file (overrides --release-notes)
--single-target Builds only for current GOOS and GOARCH, regardless of what's set in the configuration file (implies --skip-publish) (Pro only)
--skip strings Skip the given options (valid options are: after, announce, aur, before, chocolatey, docker, fury, homebrew, ko, nfpm, nix, publish, sbom, scoop, sign, snapcraft, validate, winget)
--skip strings Skip the given options (valid options are: after, announce, aur, before, chocolatey, dmg, docker, fury, homebrew, ko, msi, nfpm, nix, publish, sbom, scoop, sign, snapcraft, validate, winget)
--snapshot Generate an unversioned snapshot release, skipping all validations and without publishing any artifacts (implies --skip=announce,publish,validate)
--split Split the build so it can be merged and published later (implies --prepare) (Pro only)
--timeout duration Timeout to the entire release process (default 30m0s)

View File

@ -182,8 +182,8 @@ builds:
command: test
# Set the modified timestamp on the output binary, typically
# you would do this to ensure a build was reproducible. Pass
# empty string to skip modifying the output.
# you would do this to ensure a build was reproducible.
# Pass an empty string to skip modifying the output.
#
# Templates: allowed.
mod_timestamp: "{{ .CommitTimestamp }}"

View File

@ -45,6 +45,16 @@ chocolateys:
# It is a required field.
project_url: https://example.com/
# Which format to use.
#
# Valid options are:
# - 'msi': msi installers (requires the MSI pipe configured, Pro only)
# - 'archive': archives (only if format is zip),
#
# Default: 'archive'
# Since: v1.24 (pro)
use: msi
# URL which is determined by the given Token (github,
# gitlab or gitea).
#

View File

@ -0,0 +1,65 @@
# DMG
> Since: v1.24 pro
!!! success "GoReleaser Pro"
The dmg feature is available only in [GoReleaser Pro feature](/pro/).
GoReleaser can create DMG images for macOS using `mkisofs` or `hdiutil`.
The `dmg` section specifies how the images should be created:
```yaml
# .goreleaser.yaml
dmg:
- # ID of the resulting image.
#
# Default: the project name
id: foo
# Filename of the image (without the extension).
#
# Default: '{{.ProjectName}}_{{.Arch}}'
# Templates: allowed
name: "myproject-{{.Arch}}"
# IDs of the archives to use.
# Empty means all IDs.
ids:
- foo
- bar
# GOAMD64 to specify which amd64 version to use if there are multiple
# versions from the build section.
#
# Default: v1
goamd64: v1
# More files that will be available in the context in which the image
# will be built.
extra_files:
- logo.ico
# Whether to remove the archives from the artifact list.
# If left as false, your end release will have both the archives and the
# dmg files.
replace: true
# Set the modified timestamp on the output image, typically
# you would do this to ensure a build was reproducible. Pass an
# empty string to skip modifying the output.
#
# Templates: allowed.
mod_timestamp: "{{ .CommitTimestamp }}"
```
## Limitations
1. Due to the way symbolic links are handled on Windows, the `/Applications`
link inside the image might not work if the image was built on Windows.
1. If running outside macOS, make sure to have `mkisofs` installed.
!!! tip
Learn more about the [name template engine](/customization/templates/).

View File

@ -37,6 +37,11 @@ brews:
- foo
- bar
# Sets the app file within a DMG.
#
# Since: 1.24 (pro)
app: MyApp.app
# GOARM to specify which 32-bit arm version to use if there are multiple
# versions from the build section. Brew formulas support only one 32-bit
# version.

View File

@ -0,0 +1,143 @@
# MSI
> Since: v1.24 pro
!!! success "GoReleaser Pro"
The msi feature is available only in [GoReleaser Pro feature](/pro/).
GoReleaser can create MSI installers for windows binaries using [msitools][].
The `msi` section specifies how the **installers** should be created:
```yaml
# .goreleaser.yaml
msi:
- # ID of the resulting installer.
#
# Default: the project name
id: foo
# Filename of the installer (without the extension).
#
# Default: '{{.ProjectName}}_{{.MsiArch}}'
# Templates: allowed
name: "myproject-{{.MsiArch}}"
# The WXS file used to create the installers.
# The file contents go through the templating engine, so you can do things
# like `{{.Version}}` inside of it.
#
# Templates: allowed
# Required.
wxs: ./windows/app.wsx
# IDs of the archives to use.
# Empty means all IDs.
ids:
- foo
- bar
# GOAMD64 to specify which amd64 version to use if there are multiple
# versions from the build section.
#
# Default: v1
goamd64: v1
# More files that will be available in the context in which the installer
# will be built.
extra_files:
- logo.ico
# Whether to remove the archives from the artifact list.
# If left as false, your end release will have both the zip and the msi
# files.
replace: true
# Set the modified timestamp on the output installer, typically
# you would do this to ensure a build was reproducible.
# Pass an empty string to skip modifying the output.
#
# Templates: allowed.
mod_timestamp: "{{ .CommitTimestamp }}"
```
On Windows, it'll try to use the `candle` and `light` binaries from the
[Wix Toolkit][wix] instead.
Here's an example `wsx` file that you can build upon:
```xml
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product
Name='{{.ProjectName}} {{.Version}}'
Id='ABCDDCBA-86C7-4D14-AEC0-86413A69ABDE'
UpgradeCode='ABCDDCBA-7349-453F-94F6-BCB5110BA8FD'
Language='1033'
Codepage='1252'
Version='{{.Version}}'
Manufacturer='My Company'>
<Package
Id='*'
Keywords='Installer'
Description="{{.ProjectName}} installer"
Comments=''
Manufacturer='My Company'
InstallerVersion='200'
Languages='1033'
Compressed='yes'
SummaryCodepage='1252'
/>
<Media
Id='1'
Cabinet='Sample.cab'
EmbedCab='yes'
DiskPrompt="CD-ROM #1"
/>
<Property
Id='DiskPrompt'
Value="{{.ProjectName}} {{.Version}} Installation [1]"
/>
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFiles{{ if eq .Arch "amd64" }}64{{ end }}Folder' Name='PFiles'>
<Directory Id='{{.ProjectName}}' Name='{{.ProjectName}}'>
<Component
Id='MainExecutable'
Guid='ABCDDCBA-83F1-4F22-985B-FDB3C8ABD474'
>
<File
Id='{{.Binary}}.exe'
Name='{{.Binary}}.exe'
DiskId='1'
Source='{{.Binary}}.exe'
KeyPath='yes'
/>
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id='Complete' Level='1'>
<ComponentRef Id='MainExecutable' />
</Feature>
</Product>
</Wix>
```
## Limitations
1. Some options available in the [Wix Toolset][wix] won't work with
[msitools][], run a snapshot build and verify the generated installers.
1. Only `amd64` and `386` are supported.
!!! tip
Learn more about the [name template engine](/customization/templates/).
[msitools]: https://wiki.gnome.org/msitools
[wix]: https://wixtoolset.org

View File

@ -27,8 +27,7 @@ To customize the artifact cataloging pipeline you can use the following options:
```yaml
# .goreleaser.yml
sboms:
-
# ID of the sbom config, must be unique.
- # ID of the sbom config, must be unique.
#
# Default: 'default'
id: foo
@ -75,14 +74,17 @@ sboms:
- FOO=bar
- HONK=honkhonk
# Which artifacts to catalog
# Which artifacts to catalog.
#
# any: let the SBOM tool decide what artifacts available in the cwd
# should be cataloged
# source: source archive
# package: linux packages (deb, rpm, apk)
# archive: archives from archive pipe
# binary: binaries output from the build stage
# Valid options are:
# - any: let the SBOM tool decide which artifacts available in
# the cwd should be cataloged
# - source: source archive
# - package: Linux packages (deb, rpm, apk, etc)
# - installer: Windows MSI installers (Pro only)
# - diskimage: macOS DMG disk images (Pro only)
# - archive: archives from archive pipe
# - binary: binaries output from the build stage
#
# Default: 'archive'
artifacts: archive
@ -104,7 +106,7 @@ templates:
"artifacts" config item is "any")
- `${artifactID}`: the ID of the artifact that will be cataloged (unless
"artifacts" config item is "any")
- `${document}`: the SBOM filename generated (corresponds to `${document0}` if
- `${document}`: the SBOM filename generated (corresponds to `${document0}` if
the "artifacts" config item is "any")
- `${document#}`: the SBOM filenames generated, where `#` corresponds to the
list index under the "documents" config item (e.g. `${document0}`)
@ -113,4 +115,3 @@ templates:
Container images generated by GoReleaser are not available to be cataloged by
the SBOM tool.

View File

@ -33,6 +33,16 @@ scoops:
# In short, it's generally better to leave this empty.
folder: Scoops
# Which format to use.
#
# Valid options are:
# - 'msi': msi installers (requires the MSI pipe configured, Pro only)
# - 'archive': archives (only if format is zip),
#
# Default: 'archive'
# Since: v1.24 (pro)
use: msi
# Git author used to commit to the repository.
commit_author:
name: goreleaserbot
@ -77,13 +87,13 @@ scoops:
# An array of dependencies.
#
# Since GoReleaser v1.16
# Since: v1.16
depends: ["git", "foo"]
# A two-dimensional array of string, specifies the shortcut values to make available in the startmenu.
# The array has to contain an executable/label pair. The third and fourth element are optional.
#
# Since GoReleaser v1.17.0.
# Since: v1.17
shortcuts: [["drumroll.exe", "drumroll"]]
# GOAMD64 to specify which amd64 version to use if there are multiple versions

View File

@ -54,14 +54,17 @@ signs:
# Which artifacts to sign
#
# all: all artifacts
# none: no signing
# checksum: only checksum file(s)
# source: source archive
# package: linux packages (deb, rpm, apk)
# archive: archives from archive pipe
# binary: binaries if archiving format is set to binary
# sbom: any Software Bill of Materials generated for other artifacts
# Valid options are:
# - none no signing
# - all: all artifacts
# - checksum: checksum files
# - source: source archive
# - package: Linux packages (deb, rpm, apk, etc)
# - installer: Windows MSI installers (Pro only)
# - diskimage: macOS DMG disk images (Pro only)
# - archive: archives from archive pipe
# - binary: binaries output from the build stage
# - sbom: any SBOMs generated for other artifacts
#
# Default: 'none'
artifacts: all

View File

@ -9,7 +9,7 @@ Here's how to use it:
```yaml
# .goreleaser.yaml
universal_binaries:
- # ID of resulting universal binary.
- # ID of the resulting universal binary.
#
# Default: the project name
id: foo
@ -31,13 +31,13 @@ universal_binaries:
name_template: "{{.ProjectName}}_{{.Version}}"
# Whether to remove the previous single-arch binaries from the artifact list.
# If left as false, your end release might have both several macOS archives:
# amd64, arm64 and all.
# If left as false, your end release might have as much as three
# archives for macOS: 'amd64', 'arm64' and 'all'.
replace: true
# Set the modified timestamp on the output binary, typically
# you would do this to ensure a build was reproducible. Pass
# empty string to skip modifying the output.
# you would do this to ensure a build was reproducible.
# Pass an empty string to skip modifying the output.
#
# Templates: allowed.
# Since: v1.20

View File

@ -57,12 +57,31 @@ winget:
- foo
- bar
# Which format to use.
#
# Valid options are:
# - '': archives or binaries
# - 'msi': msi installers (requires the MSI pipe configured, Pro only)
# - 'archive': archives (only if format is zip),
# - 'binary': binaries
#
# Default: ''
# Since: v1.24 (pro)
use: msi
# GOAMD64 to specify which amd64 version to use if there are multiple
# versions from the build section.
#
# Default: v1
goamd64: v1
# Product code to be used.
#
# Usually needed when `use: msi`.
#
# Since: v1.24 (pro)
product_code: AAAA-BBB-CCC-DDD-EEEFFF
# URL which is determined by the given Token (github, gitlab or gitea).
#
# Default depends on the client.

View File

@ -3,7 +3,9 @@
GoReleaser Pro is a paid, closed-source GoReleaser distribution with some
additional features:
- [x] `goreleaser release --single-target` to build the whole pipeline for a
- [x] Create [macOS disk images (DMGs)](/customization/dmg);
- [x] Create [Windows installers](/customization/msi);
- [x] Use `goreleaser release --single-target` to build the whole pipeline for a
single architecture locally;
- [x] Check boxes in pull request templates;
- [x] [Template entire files](/customization/templatefiles) and add them to the
@ -50,11 +52,9 @@ additional features:
We don't have a properly organized public road map (_yet_), but these are some
of the things we plan to work on, in one form or another:
- [x] `--single-target` & friends for `goreleaser release`;
- [ ] `--dry-run` to test the release locally, possibly skipping the actual
build of the binaries to focus on faster iteration of the other parts;
- [ ] first-class macOS signing;
- [ ] create Windows installers;
That said, your input is always welcome!
Once you buy it, feel free to

161
www/docs/static/schema-pro.json generated vendored
View File

@ -436,7 +436,13 @@
"type": "boolean"
},
"buildmode": {
"type": "string"
"type": "string",
"enum": [
"c-archive",
"c-shared",
""
],
"default": ""
},
"ldflags": {
"$ref": "#/$defs/StringArray"
@ -497,7 +503,13 @@
"type": "string"
},
"buildmode": {
"type": "string"
"type": "string",
"enum": [
"c-archive",
"c-shared",
""
],
"default": ""
},
"ldflags": {
"$ref": "#/$defs/StringArray"
@ -597,7 +609,7 @@
"type": "boolean"
}
],
"description": "use disable_disable instead"
"description": "use disable instead"
}
},
"additionalProperties": false,
@ -751,6 +763,14 @@
},
"goamd64": {
"type": "string"
},
"use": {
"type": "string",
"enum": [
"archive",
"msi"
],
"default": "archive"
}
},
"additionalProperties": false,
@ -842,6 +862,42 @@
},
"type": "array"
},
"DMG": {
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"ids": {
"items": {
"type": "string"
},
"type": "array"
},
"goamd64": {
"type": "string"
},
"extra_files": {
"items": {
"type": "string"
},
"type": "array"
},
"replace": {
"type": "boolean"
},
"mod_timestamp": {
"type": "string"
}
},
"additionalProperties": false,
"type": "object",
"required": [
"name"
]
},
"Discord": {
"properties": {
"enabled": {
@ -1408,6 +1464,9 @@
},
"type": "array"
},
"app": {
"type": "string"
},
"tap": {
"$ref": "#/$defs/RepoRef",
"description": "use repository instead"
@ -1760,6 +1819,21 @@
"additionalProperties": false,
"type": "object"
},
"Libdirs": {
"properties": {
"header": {
"type": "string"
},
"carchive": {
"type": "string"
},
"cshared": {
"type": "string"
}
},
"additionalProperties": false,
"type": "object"
},
"LinkedIn": {
"properties": {
"enabled": {
@ -1772,6 +1846,46 @@
"additionalProperties": false,
"type": "object"
},
"MSI": {
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"wxs": {
"type": "string"
},
"ids": {
"items": {
"type": "string"
},
"type": "array"
},
"goamd64": {
"type": "string"
},
"extra_files": {
"items": {
"type": "string"
},
"type": "array"
},
"replace": {
"type": "boolean"
},
"mod_timestamp": {
"type": "string"
}
},
"additionalProperties": false,
"type": "object",
"required": [
"name",
"wxs"
]
},
"Mastodon": {
"properties": {
"enabled": {
@ -1987,6 +2101,9 @@
"bindir": {
"type": "string"
},
"libdirs": {
"$ref": "#/$defs/Libdirs"
},
"changelog": {
"type": "string"
},
@ -2508,6 +2625,18 @@
},
"type": "array"
},
"msi": {
"items": {
"$ref": "#/$defs/MSI"
},
"type": "array"
},
"dmg": {
"items": {
"$ref": "#/$defs/DMG"
},
"type": "array"
},
"aurs": {
"items": {
"$ref": "#/$defs/AUR"
@ -3025,9 +3154,10 @@
"enum": [
"source",
"package",
"diskimage",
"installer",
"archive",
"binary",
"any",
"any"
],
"default": "archive"
@ -3159,6 +3289,14 @@
"goamd64": {
"type": "string"
},
"use": {
"type": "string",
"enum": [
"archive",
"msi"
],
"default": "archive"
},
"bucket": {
"$ref": "#/$defs/RepoRef",
"description": "use repository instead"
@ -3195,7 +3333,9 @@
"package",
"archive",
"binary",
"sbom"
"sbom",
"installer",
"diskimage"
]
},
"ids": {
@ -4019,6 +4159,17 @@
"$ref": "#/$defs/WingetDependency"
},
"type": "array"
},
"product_code": {
"type": "string"
},
"use": {
"type": "string",
"enum": [
"archive",
"binary",
"msi"
]
}
},
"additionalProperties": false,

View File

@ -78,13 +78,13 @@ extra:
nav:
- Home: index.md
- Getting Started:
- intro.md
- install.md
- quick-start.md
- how-it-works.md
- Limitations:
- limitations/cgo.md
- limitations/semver.md
- intro.md
- install.md
- quick-start.md
- how-it-works.md
- Limitations:
- limitations/cgo.md
- limitations/semver.md
- Customization:
- customization/index.md
- Basics:
@ -106,6 +106,8 @@ nav:
- Packaging and Archiving:
- customization/archive.md
- customization/nfpm.md
- customization/dmg.md
- customization/msi.md
- customization/checksum.md
- customization/snapcraft.md
- customization/chocolatey.md
@ -170,58 +172,57 @@ nav:
- ci/travis.md
- ci/woodpecker.md
- More resources:
- sponsors.md
- users.md
- deprecations.md
- Common errors:
- errors/dirty.md
- errors/multiple-tokens.md
- errors/release-upload.md
- errors/docker-build.md
- errors/no-main.md
- errors/build.md
- errors/resource-not-accessible-by-integration.md
- errors/no-history.md
- errors/multiple-binaries-archive.md
- errors/scoop-archive.md
- Cookbooks:
- About: cookbooks/index.md
- Blog Posts: cookbooks/blog-posts.md
- Add a new cookbook: cookbooks/contributing.md
- cookbooks/private-monorepo-public-release.md
- cookbooks/multi-platform-docker-images.md
- cookbooks/build-go-modules.md
- cookbooks/cgo-and-crosscompiling.md
- cookbooks/debconf-templates.md
- cookbooks/using-jfrog-cli-to-publish-to-artifactory.md
- cookbooks/publish-to-nexus.md
- cookbooks/release-a-library.md
- cookbooks/semantic-release.md
- cookbooks/set-a-custom-git-tag.md
- cookbooks/using-main.version.md
- cookbooks/override-image-name.md
- cookbooks/goreleaser-xx.md
- Command Line Usage:
- cmd/goreleaser.md
- cmd/goreleaser_init.md
- cmd/goreleaser_healthcheck.md
- cmd/goreleaser_check.md
- cmd/goreleaser_changelog.md
- cmd/goreleaser_build.md
- cmd/goreleaser_release.md
- cmd/goreleaser_continue.md
- cmd/goreleaser_publish.md
- cmd/goreleaser_announce.md
- cmd/goreleaser_completion.md
- cmd/goreleaser_completion_bash.md
- cmd/goreleaser_completion_fish.md
- cmd/goreleaser_completion_powershell.md
- cmd/goreleaser_completion_zsh.md
- cmd/goreleaser_jsonschema.md
- contributing.md
- links.md
- sponsors.md
- users.md
- deprecations.md
- Common errors:
- errors/dirty.md
- errors/multiple-tokens.md
- errors/release-upload.md
- errors/docker-build.md
- errors/no-main.md
- errors/build.md
- errors/resource-not-accessible-by-integration.md
- errors/no-history.md
- errors/multiple-binaries-archive.md
- errors/scoop-archive.md
- Cookbooks:
- About: cookbooks/index.md
- Blog Posts: cookbooks/blog-posts.md
- Add a new cookbook: cookbooks/contributing.md
- cookbooks/private-monorepo-public-release.md
- cookbooks/multi-platform-docker-images.md
- cookbooks/build-go-modules.md
- cookbooks/cgo-and-crosscompiling.md
- cookbooks/debconf-templates.md
- cookbooks/using-jfrog-cli-to-publish-to-artifactory.md
- cookbooks/publish-to-nexus.md
- cookbooks/release-a-library.md
- cookbooks/semantic-release.md
- cookbooks/set-a-custom-git-tag.md
- cookbooks/using-main.version.md
- cookbooks/override-image-name.md
- cookbooks/goreleaser-xx.md
- Command Line Usage:
- cmd/goreleaser.md
- cmd/goreleaser_init.md
- cmd/goreleaser_healthcheck.md
- cmd/goreleaser_check.md
- cmd/goreleaser_changelog.md
- cmd/goreleaser_build.md
- cmd/goreleaser_release.md
- cmd/goreleaser_continue.md
- cmd/goreleaser_publish.md
- cmd/goreleaser_announce.md
- cmd/goreleaser_completion.md
- cmd/goreleaser_completion_bash.md
- cmd/goreleaser_completion_fish.md
- cmd/goreleaser_completion_powershell.md
- cmd/goreleaser_completion_zsh.md
- cmd/goreleaser_jsonschema.md
- contributing.md
- links.md
- Get Pro: pro.md
- Blog:
- blog/index.md