Skip to content

Commit

Permalink
docs: announce v1.24 (#4602)
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
caarlos0 committed Feb 5, 2024
1 parent f77eea3 commit 00c2ff7
Show file tree
Hide file tree
Showing 15 changed files with 566 additions and 95 deletions.
63 changes: 63 additions & 0 deletions www/docs/blog/posts/2024-02-05-goreleaser-v1.24.md
@@ -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
2 changes: 1 addition & 1 deletion www/docs/cmd/goreleaser_release.md
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions www/docs/customization/builds.md
Expand Up @@ -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 }}"
Expand Down
10 changes: 10 additions & 0 deletions www/docs/customization/chocolatey.md
Expand Up @@ -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).
#
Expand Down
65 changes: 65 additions & 0 deletions www/docs/customization/dmg.md
@@ -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/).
5 changes: 5 additions & 0 deletions www/docs/customization/homebrew.md
Expand Up @@ -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.
Expand Down
143 changes: 143 additions & 0 deletions www/docs/customization/msi.md
@@ -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
23 changes: 12 additions & 11 deletions www/docs/customization/sbom.md
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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}`)
Expand All @@ -113,4 +115,3 @@ templates:

Container images generated by GoReleaser are not available to be cataloged by
the SBOM tool.

0 comments on commit 00c2ff7

Please sign in to comment.