Repository: goreleaser/nfpm
Pull request #809 (2024-03-29 14:24:24)

feat(rpm): properly handle optional fields
closes  #619

cloudflare-pages[bot]: ## Deploying nfpm with &nbsp;<a href="https://pages.dev"><img alt="Cloudflare Pages" src="https://user-images.githubusercontent.com/23264/106598434-9e719e00-654f-11eb-9e59-6167043cfa01.png" width="16"></a> &nbsp;Cloudflare Pages

<table><tr><td><strong>Latest commit:</strong> </td><td>
<code>680fefa</code>
</td></tr>
<tr><td><strong>Status:</strong></td><td>&nbsp;✅&nbsp; Deploy successful!</td></tr>
<tr><td><strong>Preview URL:</strong></td><td>
<a href='https://db89ed48.nfpm.pages.dev'>https://db89ed48.nfpm.pages.dev</a>
</td></tr>
<tr><td><strong>Branch Preview URL:</strong></td><td>
<a href='https://rpm-optional.nfpm.pages.dev'>https://rpm-optional.nfpm.pages.dev</a>
</td></tr>
</table>

[View logs](https://dash.cloudflare.com/?to=/:account/pages/view/nfpm/db89ed48-9141-4399-84ba-153315396cbd)

codecov[bot]: ## [Codecov](https://app.codecov.io/gh/goreleaser/nfpm/pull/809?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=goreleaser) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 72.17%. Comparing base [(`1667ef9`)](https://app.codecov.io/gh/goreleaser/nfpm/commit/1667ef9585c38d8e61ac99875211416e7d1f60de?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=goreleaser) to head [(`680fefa`)](https://app.codecov.io/gh/goreleaser/nfpm/pull/809?dropdown=coverage&src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=goreleaser).


<details><summary>Additional details and impacted files</summary>


```diff
@@            Coverage Diff             @@
##             main     #809      +/-   ##
==========================================
+ Coverage   72.13%   72.17%   +0.03%     
==========================================
  Files          20       20              
  Lines        2232     2235       +3     
==========================================
+ Hits         1610     1613       +3     
  Misses        438      438              
  Partials      184      184              
```



</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/goreleaser/nfpm/pull/809?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=goreleaser).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=goreleaser).


Patch:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index a701f44..1a0e7eb 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -15,7 +15,7 @@ jobs:
     runs-on: ubuntu-latest
     needs: goreleaser
     steps:
-      - uses: benc-uk/workflow-dispatch@v121
+      - uses: benc-uk/workflow-dispatch@v1.2.3
         with:
           ref: main
           token: ${{ secrets.GH_PAT }}
@@ -34,7 +34,7 @@ jobs:
       - uses: arduino/setup-task@v2
         with:
           repo-token: ${{ secrets.GITHUB_TOKEN }}
-      - uses: sigstore/cosign-installer@v3.4.0
+      - uses: sigstore/cosign-installer@v3.5.0
       - uses: anchore/sbom-action/download-syft@v0.15.10
       - uses: docker/setup-qemu-action@v3
       - uses: docker/setup-buildx-action@v3
diff --git a/.goreleaser.yml b/.goreleaser.yml
index 5637280..4b39f29 100644
--- a/.goreleaser.yml
+++ b/.goreleaser.yml
@@ -24,7 +24,7 @@ builds:
       - amd64
       - arm64
       - ppc64le
-      - s390
+      - s390x
     mod_timestamp: "{{ .CommitTimestamp }}"
     flags:
       - -trimpath
@@ -85,7 +85,6 @@ archives:
       {{- title .Os }}_
       {{- if eq .Arch "amd64" }}x86_64
       {{- else if eq .Arch "386" }}i386
-      {{- else if eq .Arch "s390" }}s390x
       {{- else }}{{ .Arch }}{{ end }}
     format_overrides:
       - goos: windows
@@ -148,7 +147,7 @@ winget:
       branch: "nfpm-{{.Version}}"
       pull_request:
         enabled: true
-        draft: true
+        draft: false
         check_boxes: true
         base:
           owner: microsoft
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7a5e912..dd82aca 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -38,6 +38,16 @@ If on the ARM tests you are seeing `standard_init_linux.go:211: exec user proces
 sudo docker run --rm --privileged hypriot/qemu-register
 ```
 
+### A note about Docker multi-arch builds
+
+If you want to properly run the Docker tests, or run `goreleaser release
+--snapshot` locally, you might need to setup Docker for it.
+You can do so by running:
+
+```sh
+task docker:setup
+```
+
 ## Test your change
 
 You can create a branch for your changes and try to build from the source as you go:
diff --git a/Taskfile.yml b/Taskfile.yml
index a1679db..0b54c50 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -17,6 +17,11 @@ tasks:
     cmds:
       - go mod tidy
 
+  docker:setup:
+    desc: Setup Docker for multi-arch image builds
+    cmds:
+      - docker run --privileged --rm tonistiigi/binfmt --install all
+
   build:
     desc: Build the binary
     sources:
@@ -169,3 +174,14 @@ tasks:
       - git tag {{.NEXT}}
       - echo {{.NEXT}}
       - git push origin --tags
+
+  nix:flake:update-vendor:
+    desc: update default flake package vendor hash
+    cmds:
+      - bash ./scripts/nix-update-flake.sh
+    generates:
+      - flake.nix
+    sources:
+      - flake.lock
+      - go.mod
+      - go.sum
diff --git a/apk/apk.go b/apk/apk.go
index d2c987b..b715b8c 100644
--- a/apk/apk.go
+++ b/apk/apk.go
@@ -281,7 +281,10 @@ func createSignatureBuilder(digest []byte, info *nfpm.Info) func(*tar.Writer) er
 				return errNoKeyAddress
 			}
 
-			keyname = addr.Address + ".rsa.pub"
+			keyname = addr.Address
+		}
+		if !strings.HasSuffix(keyname, ".rsa.pub") {
+			keyname += ".rsa.pub"
 		}
 
 		// In principle apk supports RSA signatures over SHA256/512 keys, but in
diff --git a/flake.lock b/flake.lock
index 14efb3c..491e53f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -5,11 +5,11 @@
         "systems": "systems"
       },
       "locked": {
-        "lastModified": 1701680307,
-        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+        "lastModified": 1710146030,
+        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
         "type": "github"
       },
       "original": {
@@ -20,11 +20,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1703438236,
-        "narHash": "sha256-aqVBq1u09yFhL7bj1/xyUeJjzr92fXVvQSSEx6AdB1M=",
+        "lastModified": 1711703276,
+        "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "5f64a12a728902226210bf01d25ec6cbb9d9265b",
+        "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
         "type": "github"
       },
       "original": {
@@ -37,24 +37,7 @@
     "root": {
       "inputs": {
         "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs",
-        "staging": "staging"
-      }
-    },
-    "staging": {
-      "locked": {
-        "lastModified": 1703777495,
-        "narHash": "sha256-ISkNWa58+6Uk/nQ47omTETrV+yhKFbnU/wR9n+3ux8g=",
-        "owner": "caarlos0",
-        "repo": "nixpkgs",
-        "rev": "e1d1738a056a052aedb6560c240b2749af33fee0",
-        "type": "github"
-      },
-      "original": {
-        "owner": "caarlos0",
-        "ref": "wip",
-        "repo": "nixpkgs",
-        "type": "github"
+        "nixpkgs": "nixpkgs"
       }
     },
     "systems": {
diff --git a/flake.nix b/flake.nix
index a4bce48..bb62192 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,14 +1,12 @@
 {
   inputs = {
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
-    staging.url = "github:caarlos0/nixpkgs/wip";
     flake-utils.url = "github:numtide/flake-utils";
   };
-  outputs = { nixpkgs, staging, flake-utils, ... }:
+  outputs = { nixpkgs, flake-utils, ... }:
     flake-utils.lib.eachDefaultSystem (system:
       let
         pkgs = nixpkgs.legacyPackages.${system};
-        staging-pkgs = staging.legacyPackages.${system};
       in
       {
         packages.default = pkgs.buildGoModule {
@@ -17,7 +15,7 @@
           src = ./.;
           ldflags = [ "-s" "-w" "-X main.version=dev" "-X main.builtBy=flake" ];
           doCheck = false;
-          vendorHash = "sha256-P9jSQG6EyVGMZKtThy8Q7Y/pV7mbMl2eGrylea0VHRc=";
+          vendorHash = "sha256-g57tLk2+WWcdG0COqkQD7eLYG0TdC0RnlhLF6Qt4woY=";
         };
 
         devShells.default = pkgs.mkShell {
@@ -25,6 +23,7 @@
             go
             go-task
             gofumpt
+            nix-prefetch
           ];
           shellHook = "go mod tidy";
         };
diff --git a/go.mod b/go.mod
index d33c5fc..d4de690 100644
--- a/go.mod
+++ b/go.mod
@@ -11,17 +11,17 @@ require (
 	github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb
 	github.com/caarlos0/go-rpmutils v0.2.1-0.20240105125627-01185134a559
 	github.com/caarlos0/go-version v0.1.1
-	github.com/google/rpmpack v0.6.0
+	github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a
 	github.com/goreleaser/chglog v0.5.0
 	github.com/goreleaser/fileglob v1.3.0
 	github.com/invopop/jsonschema v0.12.0
-	github.com/klauspost/compress v1.17.7
+	github.com/klauspost/compress v1.17.8
 	github.com/klauspost/pgzip v1.2.6
 	github.com/muesli/mango-cobra v1.2.0
 	github.com/muesli/roff v0.1.0
 	github.com/spf13/cobra v1.8.0
 	github.com/stretchr/testify v1.9.0
-	github.com/ulikunitz/xz v0.5.11
+	github.com/ulikunitz/xz v0.5.12
 	github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8
 	golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb
 	gopkg.in/yaml.v3 v3.0.1
diff --git a/go.sum b/go.sum
index f1375f2..2488af6 100644
--- a/go.sum
+++ b/go.sum
@@ -66,8 +66,8 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/rpmpack v0.6.0 h1:LoQuqlw6kHRwg25n3M0xtYrW+z2pTkR0ae1xx11hRw8=
-github.com/google/rpmpack v0.6.0/go.mod h1:uqVAUVQLq8UY2hCDfmJ/+rtO3aw7qyhc90rCVEabEfI=
+github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a h1:JJBdjSfqSy3mnDT0940ASQFghwcZ4y4cb6ttjAoXqwE=
+github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a/go.mod h1:uqVAUVQLq8UY2hCDfmJ/+rtO3aw7qyhc90rCVEabEfI=
 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
 github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -92,8 +92,8 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7
 github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
 github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
 github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
-github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
-github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
+github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
 github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
 github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -153,8 +153,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
 github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
 github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
-github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
+github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
+github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
 github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
 github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
 github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
diff --git a/rpm/rpm.go b/rpm/rpm.go
index 8dfed1a..5ec04d1 100644
--- a/rpm/rpm.go
+++ b/rpm/rpm.go
@@ -208,8 +208,13 @@ func buildRPMMeta(info *nfpm.Info) (*rpmpack.RPMMetaData, error) {
 	if info.RPM.Compression == "" {
 		info.RPM.Compression = "gzip:-1"
 	}
-	if epoch, err = strconv.ParseUint(defaultTo(info.Epoch, "0"), 10, 32); err != nil {
-		return nil, err
+
+	if info.Epoch == "" {
+		epoch = uint64(rpmpack.NoEpoch)
+	} else {
+		if epoch, err = strconv.ParseUint(info.Epoch, 10, 32); err != nil {
+			return nil, err
+		}
 	}
 	if provides, err = toRelation(info.Provides); err != nil {
 		return nil, err
diff --git a/scripts/nix-update-flake.sh b/scripts/nix-update-flake.sh
new file mode 100755
index 0000000..5f4b911
--- /dev/null
+++ b/scripts/nix-update-flake.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+NEW_HASH="$(nix-prefetch \
+	--option extra-experimental-features flakes \
+	'{ sha256 }: (builtins.getFlake (toString ./.)).packages.x86_64-linux.default.goModules.overrideAttrs (_: { vendorSha256 = sha256; })')"
+
+sed -i "s|vendorHash = \".*\"|vendorHash = \"${NEW_HASH}\"|" ./flake.nix


Test patch:
diff --git a/apk/apk_test.go b/apk/apk_test.go
index b3b6900..a0ce0a2 100644
--- a/apk/apk_test.go
+++ b/apk/apk_test.go
@@ -315,6 +315,28 @@ func TestControl(t *testing.T) {
 	require.Equal(t, string(bts), w.String())
 }
 
+func TestSignatureName(t *testing.T) {
+	info := exampleInfo()
+	info.APK.Signature.KeyFile = "../internal/sign/testdata/rsa.priv"
+	info.APK.Signature.KeyName = "testkey"
+	info.APK.Signature.KeyPassphrase = "hunter2"
+	err := nfpm.PrepareForPackager(info, "apk")
+	require.NoError(t, err)
+
+	digest := sha1.New().Sum(nil) // nolint:gosec
+
+	var signatureTarGz bytes.Buffer
+	tw := tar.NewWriter(&signatureTarGz)
+	require.NoError(t, createSignatureBuilder(digest, info)(tw))
+
+	signature := extractFromTar(t, signatureTarGz.Bytes(), ".SIGN.RSA.testkey.rsa.pub")
+	err = sign.RSAVerifySHA1Digest(digest, signature, "../internal/sign/testdata/rsa.pub")
+	require.NoError(t, err)
+
+	err = Default.Package(info, io.Discard)
+	require.NoError(t, err)
+}
+
 func TestSignature(t *testing.T) {
 	info := exampleInfo()
 	info.APK.Signature.KeyFile = "../internal/sign/testdata/rsa.priv"
diff --git a/rpm/rpm_test.go b/rpm/rpm_test.go
index 9af8cc6..ac02ab1 100644
--- a/rpm/rpm_test.go
+++ b/rpm/rpm_test.go
@@ -29,6 +29,8 @@ func exampleInfo() *nfpm.Info {
 		Priority:    "extra",
 		Maintainer:  "Carlos A Becker <pkg@carlosbecker.com>",
 		Version:     "1.0.0",
+		Release:     "1",
+		Epoch:       "0",
 		Section:     "default",
 		Homepage:    "http://carlosbecker.com",
 		Vendor:      "nope",
@@ -78,6 +80,7 @@ func exampleInfo() *nfpm.Info {
 				PostRemove:  "../testdata/scripts/postremove.sh",
 			},
 			RPM: nfpm.RPM{
+				Group:    "foo",
 				Prefixes: []string{"/opt"},
 				Scripts: nfpm.RPMScripts{
 					PreTrans:  "../testdata/scripts/pretrans.sh",
@@ -134,7 +137,7 @@ func TestRPM(t *testing.T) {
 
 	group, err := rpm.Header.GetString(rpmutils.GROUP)
 	require.NoError(t, err)
-	require.Equal(t, "", group)
+	require.Equal(t, "foo", group)
 
 	summary, err := rpm.Header.GetString(rpmutils.SUMMARY)
 	require.NoError(t, err)
@@ -145,6 +148,60 @@ func TestRPM(t *testing.T) {
 	require.Equal(t, "Foo does things", description)
 }
 
+func TestRPMMandatoryFieldsOnly(t *testing.T) {
+	f, err := os.CreateTemp(t.TempDir(), "test.rpm")
+	require.NoError(t, err)
+	require.NoError(t, Default.Package(&nfpm.Info{
+		Name:        "foo",
+		Arch:        "amd64",
+		Version:     "1.2",
+		Release:     "1",
+		Description: "summary\nfoo bar\nlong description",
+		License:     "MIT",
+	}, f))
+
+	file, err := os.OpenFile(f.Name(), os.O_RDONLY, 0o600) //nolint:gosec
+	require.NoError(t, err)
+	defer func() {
+		f.Close()
+		file.Close()
+		err = os.Remove(file.Name())
+		require.NoError(t, err)
+	}()
+	rpm, err := rpmutils.ReadRpm(file)
+	require.NoError(t, err)
+
+	os, err := rpm.Header.GetString(rpmutils.OS)
+	require.NoError(t, err)
+	require.Equal(t, "linux", os)
+
+	arch, err := rpm.Header.GetString(rpmutils.ARCH)
+	require.NoError(t, err)
+	require.Equal(t, archToRPM["amd64"], arch)
+
+	version, err := rpm.Header.GetString(rpmutils.VERSION)
+	require.NoError(t, err)
+	require.Equal(t, "1.2", version)
+
+	release, err := rpm.Header.GetString(rpmutils.RELEASE)
+	require.NoError(t, err)
+	require.Equal(t, "1", release)
+
+	_, err = rpm.Header.Get(rpmutils.EPOCH)
+	require.Error(t, err, "epoch should not be set")
+
+	_, err = rpm.Header.GetString(rpmutils.GROUP)
+	require.Error(t, err, "group should not be set")
+
+	summary, err := rpm.Header.GetString(rpmutils.SUMMARY)
+	require.NoError(t, err)
+	require.Equal(t, "summary", summary)
+
+	description, err := rpm.Header.GetString(rpmutils.DESCRIPTION)
+	require.NoError(t, err)
+	require.Equal(t, "summary\nfoo bar\nlong description", description)
+}
+
 func TestRPMPlatform(t *testing.T) {
 	f, err := os.CreateTemp(t.TempDir(), "test*.rpm")
 	require.NoError(t, err)
diff --git a/www/docs/static/latest b/www/docs/static/latest
index c9a7b2e..0fd3266 100644
--- a/www/docs/static/latest
+++ b/www/docs/static/latest
@@ -1,1 +1,1 @@
-v2.35.3
+v2.36.1