-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.goreleaser.yaml
More file actions
228 lines (213 loc) · 6.93 KB
/
Copy path.goreleaser.yaml
File metadata and controls
228 lines (213 loc) · 6.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# GoReleaser for kzero — same flow as pgwd: merge develop → main, tag v0.2.x, push tag (CI runs release).
# Local: make release-check && make release (on main only).
# Snapshot: make snapshot → artifacts under dist/
version: 2
project_name: kzero
before:
hooks:
- sh -c 'gzip -c contrib/man/man1/kzero.1 > contrib/man/man1/kzero.1.gz'
builds:
- id: kzero
main: ./cmd/kzero
binary: kzero
goos:
- linux
- darwin
- windows
- freebsd
- openbsd
goarch:
- amd64
- arm64
ignore:
- goos: windows
goarch: arm64
env:
- CGO_ENABLED=0
ldflags:
- -s
- -w
- -X github.com/hrodrig/kzero/internal/cli.Version=v{{ .Version }}
- -X github.com/hrodrig/kzero/internal/notify.AppVersion=v{{ .Version }}
- -X github.com/hrodrig/kzero/internal/cli.Commit={{ .ShortCommit }}
- -X github.com/hrodrig/kzero/internal/cli.BuildDate={{ .Date }}
- -X github.com/hrodrig/kzero/internal/cli.Branch={{ .Branch }}
# kubectl-kzero: same main, second basename (groot #64 pattern). kubectl
# plugin discovery picks kubectl-<name> on PATH for `kubectl kzero …`.
- id: kubectl-kzero
main: ./cmd/kzero
binary: kubectl-kzero
goos:
- linux
- darwin
- windows
- freebsd
- openbsd
goarch:
- amd64
- arm64
ignore:
- goos: windows
goarch: arm64
env:
- CGO_ENABLED=0
ldflags:
- -s
- -w
- -X github.com/hrodrig/kzero/internal/cli.Version=v{{ .Version }}
- -X github.com/hrodrig/kzero/internal/notify.AppVersion=v{{ .Version }}
- -X github.com/hrodrig/kzero/internal/cli.Commit={{ .ShortCommit }}
- -X github.com/hrodrig/kzero/internal/cli.BuildDate={{ .Date }}
- -X github.com/hrodrig/kzero/internal/cli.Branch={{ .Branch }}
archives:
- id: default
ids:
- kzero
- kubectl-kzero
formats: [tar.gz]
format_overrides:
- goos: windows
formats: [zip]
name_template: "{{ .ProjectName }}_{{ if .IsSnapshot }}v{{ .Version }}{{ else }}{{ .Tag }}{{ end }}_{{ .Os }}_{{ .Arch }}"
files:
- src: contrib/man/man1/kzero.1
dst: share/man/man1/kzero.1
- src: LICENSE
dst: share/doc/kzero/LICENSE
- src: configs/kzero.sample.yml
dst: share/examples/kzero/kzero.sample.yml
checksum:
name_template: checksums.txt
# Cosign keyless signing (GitHub Actions OIDC). Requires `id-token: write`
# in release.yml and sigstore/cosign-installer. Signs checksums.txt and
# container images pushed to ghcr.io.
signs:
- cmd: cosign
env:
- COSIGN_EXPERIMENTAL=1
certificate: "${artifact}.pem"
args:
- sign-blob
- "--output-signature=${signature}"
- "--output-certificate=${certificate}"
- "${artifact}"
- --yes
artifacts: checksum
# SBOM (Software Bill of Materials) generation via syft.
# One SPDX + one CycloneDX document per release (source tree catalog).
# Container image SBOM attestation deferred (docker driver limit; same as groot).
sboms:
- id: kzero-sbom-spdx
artifacts: source
documents:
- "kzero_{{ .Version }}_sbom.spdx.json"
args: ["$artifact", "--output", "spdx-json=$document"]
- id: kzero-sbom-cdx
artifacts: source
documents:
- "kzero_{{ .Version }}_sbom.cyclonedx.json"
args: ["$artifact", "--output", "cyclonedx-json=$document"]
# .deb / .rpm for Linux (same pattern as pgwd nfpms).
nfpms:
- id: default
package_name: kzero
ids:
- kzero
- kubectl-kzero
scripts:
preremove: contrib/deb/prerm.sh
postremove: contrib/deb/postrm.sh
file_name_template: "{{ .ProjectName }}_{{ if .IsSnapshot }}v{{ .Version }}{{ else }}{{ .Tag }}{{ end }}_{{ .Os }}_{{ .Arch }}"
description: Declarative Kubernetes workload shutdown and startup pipelines (also ships the kubectl-kzero plugin)
vendor: "Hermes Rodríguez"
maintainer: "Hermes Rodríguez <hrodrig@usb.ve>"
homepage: https://github.com/hrodrig/kzero
license: MIT
formats:
- deb
- rpm
contents:
- src: contrib/man/man1/kzero.1.gz
dst: /usr/share/man/man1/
# Example profile at a fixed path; operators edit after install. config|noreplace on upgrades.
- src: configs/kzero.sample.yml
dst: /etc/kzero/kzero.yaml
type: config|noreplace
snapshot:
version_template: "{{ .Env.KZERO_SNAPSHOT_VERSION }}"
changelog:
sort: asc
filters:
exclude:
- "^docs:"
- "^chore:"
- "^test:"
release:
github:
owner: hrodrig
name: kzero
# Multi-arch image to ghcr.io (same GITHUB_TOKEN in Actions). Snapshots skip Docker.
# sbom: false — GitHub Actions buildx docker driver lacks attestation support.
dockers_v2:
- disable: "{{ .IsSnapshot }}"
sbom: false
dockerfile: Dockerfile.release
ids:
- kzero
images:
- ghcr.io/hrodrig/kzero
tags:
- "v{{ .Version }}"
- "{{ if not .IsSnapshot }}latest{{ end }}"
labels:
org.opencontainers.image.title: "kzero"
org.opencontainers.image.description: "Declarative Kubernetes workload shutdown and startup pipelines"
org.opencontainers.image.source: "https://github.com/hrodrig/kzero"
org.opencontainers.image.version: "{{ .Version }}"
org.opencontainers.image.revision: "{{ .FullCommit }}"
org.opencontainers.image.created: "{{ .Date }}"
# Cosign keyless signing for container manifests built by dockers_v2.
docker_signs:
- cmd: cosign
env:
- COSIGN_EXPERIMENTAL=1
args:
- sign
- "${artifact}@${digest}"
- --yes
# Homebrew: publish cask to https://github.com/hrodrig/homebrew-kzero (brew install hrodrig/kzero/kzero).
# CI: set repo secret HOMEBREW_TAP_TOKEN (PAT with contents:write on the tap repo; GITHUB_TOKEN cannot push there).
homebrew_casks:
- name: kzero
ids:
- default
binaries:
- kzero
- kubectl-kzero
directory: Casks
homepage: "https://github.com/hrodrig/kzero"
description: "Declarative Kubernetes workload down/up/reset pipelines from YAML (also ships kubectl-kzero)"
commit_msg_template: "Brew cask update for {{ .ProjectName }} version {{ .Tag }}"
commit_author:
name: Hermes Rodríguez
email: hrodrig@usb.ve
repository:
owner: hrodrig
name: homebrew-kzero
branch: main
token: "{{ .Env.HOMEBREW_TAP_TOKEN }}"
url:
verified: "github.com/hrodrig/kzero/"
manpages:
- share/man/man1/kzero.1
caveats: |
Sample configuration is not bundled with the Homebrew cask.
Generate it with `kzero --print-sample-config > kzero.yaml`.
kubectl plugin: `kubectl plugin list | grep kzero` after install.
hooks:
post:
install: |
if OS.mac?
system_command "/usr/bin/xattr", args: ["-dr", "com.apple.quarantine", "#{staged_path}/kzero"]
system_command "/usr/bin/xattr", args: ["-dr", "com.apple.quarantine", "#{staged_path}/kubectl-kzero"]
end