forked from epinio/epinio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.goreleaser.yml
352 lines (304 loc) · 10.6 KB
/
.goreleaser.yml
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
# Copyright © 2021 - 2023 SUSE LLC
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
project_name: epinio
archives:
- name_template: >-
{{- .ProjectName }}-
{{- .Os }}-
{{- if eq .Arch "amd64" }}x86_64
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end -}}
format: binary
format_overrides:
- goos: windows
format: zip
before:
hooks:
- go mod download
builds:
- id: epinio
main: ./main.go
binary: epinio
ldflags:
- -w -s
- -X "github.com/epinio/epinio/internal/version.Version={{ .Tag }}"
goos:
- darwin
- linux
- windows
goarch:
- amd64
- arm64
- arm
- s390x
goarm:
- "7"
targets:
- darwin_amd64
- darwin_arm64
- linux_amd64_v1
- linux_arm64
- linux_arm_7
- linux_s390x
- windows_amd64
changelog:
## Delegate Changelog to release-drafter
skip: true
env:
- CGO_ENABLED=0
- DOCKER_CLI_EXPERIMENTAL=enabled
snapshot:
name_template: "{{ .Tag }}-next"
dockers:
-
use: buildx
goos: linux
goarch: amd64
image_templates:
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-amd64"
# Skips the docker push.
#skip_push: "true"
# Path to the Dockerfile (from the project root).
dockerfile: images/unpacker-Dockerfile
# Template of the docker build flags.
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=https://github.com/epinio/epinio"
- "--platform=linux/amd64"
-
use: buildx
goos: linux
goarch: arm64
image_templates:
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-arm64v8"
# Skips the docker push.
#skip_push: "true"
# Path to the Dockerfile (from the project root).
dockerfile: images/unpacker-Dockerfile
# Template of the docker build flags.
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=https://github.com/epinio/epinio"
- "--platform=linux/arm64/v8"
-
use: buildx
goos: linux
goarch: s390x
image_templates:
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-s390x"
# Skips the docker push.
#skip_push: "true"
# Path to the Dockerfile (from the project root).
dockerfile: images/unpacker-Dockerfile
# Template of the docker build flags.
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=https://github.com/epinio/epinio"
- "--platform=linux/s390x"
-
use: buildx
# GOOS of the built binaries/packages that should be used.
goos: linux
# GOARCH of the built binaries/packages that should be used.
goarch: amd64
# IDs to filter the binaries/packages.
ids:
- epinio
# Templates of the Docker image names.
image_templates:
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-amd64"
# Skips the docker push.
#skip_push: "true"
# Path to the Dockerfile (from the project root).
dockerfile: images/Dockerfile
# Template of the docker build flags.
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=https://github.com/epinio/epinio"
- "--build-arg=DIST_BINARY=epinio"
- "--platform=linux/amd64"
# If your Dockerfile copies files other than binaries and packages,
# you should list them here as well.
# Note that GoReleaser will create the same structure inside a temporary
# folder, so if you add `foo/bar.json` here, on your Dockerfile you can
# `COPY foo/bar.json /whatever.json`.
# Also note that the paths here are relative to the folder in which
# GoReleaser is being run (usually the repository root folder).
# This field does not support wildcards, you can add an entire folder here
# and use wildcards when you `COPY`/`ADD` in your Dockerfile.
extra_files: [ "docs/references/api/swagger.json" ]
-
use: buildx
goos: linux
goarch: arm64
ids:
- epinio
image_templates:
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-arm64v8"
dockerfile: images/Dockerfile
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=https://github.com/epinio/epinio"
- "--build-arg=DIST_BINARY=epinio"
- "--platform=linux/arm64/v8"
extra_files: [ "docs/references/api/swagger.json" ]
-
use: buildx
goos: linux
goarch: arm
goarm: "7"
ids:
- epinio
image_templates:
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-armv7"
dockerfile: images/Dockerfile
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=https://github.com/epinio/epinio"
- "--build-arg=DIST_BINARY=epinio"
- "--platform=linux/arm/v7"
extra_files: [ "docs/references/api/swagger.json" ]
-
use: buildx
goos: linux
goarch: s390x
ids:
- epinio
image_templates:
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-s390x"
dockerfile: images/Dockerfile
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=https://github.com/epinio/epinio"
- "--build-arg=DIST_BINARY=epinio"
- "--platform=linux/s390x"
extra_files: [ "docs/references/api/swagger.json" ]
docker_manifests:
# https://goreleaser.com/customization/docker_manifest/
-
name_template: "ghcr.io/epinio/epinio-server:{{ .Tag }}"
image_templates:
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-amd64"
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-arm64v8"
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-armv7"
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-s390x"
-
name_template: "ghcr.io/epinio/epinio-server:latest"
image_templates:
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-amd64"
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-arm64v8"
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-armv7"
- "ghcr.io/epinio/epinio-server:{{ .Tag }}-s390x"
-
name_template: "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}"
image_templates:
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-amd64"
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-arm64v8"
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-s390x"
-
name_template: "ghcr.io/epinio/epinio-unpacker:latest"
image_templates:
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-amd64"
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-arm64v8"
- "ghcr.io/epinio/epinio-unpacker:{{ .Tag }}-s390x"
brews:
- name: epinio
description: "CLI for Epinio, the Application Development Engine for Kubernetes"
homepage: "https://epinio.io/"
license: "Apache-2.0"
tap:
owner: epinio
name: homebrew-tap
token: "{{ .Env.COMMITTER_TOKEN }}"
folder: Formula
url_template: "https://github.com/epinio/epinio/releases/download/{{ .Tag }}/{{ .ArtifactName }}"
test: |
output = shell_output("#{bin}/epinio version 2>&1")
assert_match "Epinio Version: #{version}", output
output = shell_output("#{bin}/epinio settings update-ca 2>&1")
assert_match "failed to get kube config", output
assert_match "no configuration has been provided", output
release:
# Do not auto-publish the release
draft: true
# Replace the existing draft
replace_existing_draft: true
# Keep the release notes
mode: keep-existing
# Detect release candidates, mark as pre-release (and hopefully not as `latest`).
prerelease: auto
extra_files:
- glob: ./helm-charts/chart/epinio/crds/*
# Based on https://blog.goreleaser.com/goreleaser-and-software-supply-chain-security-e8917b26924b
##
# creates SBOMs of all archives and the source tarball using syft
# https://goreleaser.com/customization/sbom
# Two different sbom configurations need two different IDs
sboms:
- id: archive
artifacts: archive
- id: source
artifacts: source
- id: binary
artifacts: binary
# signs our docker images
# https://goreleaser.com/customization/docker_sign
docker_signs:
- cmd: cosign
artifacts: all
output: true
args:
- 'sign'
- '${artifact}@${digest}'
- "--yes" # needed on cosign 2.0.0+
# signs the checksum file and other blobs. all files (including the sboms) are included in the
# checksum, so we don't need to sign each one if we don't want to
# https://goreleaser.com/customization/sign
signs:
- cmd: cosign
certificate: '${artifact}.pem'
args:
- sign-blob
- '--output-certificate=${certificate}'
- '--output-signature=${signature}'
- '${artifact}'
- "--yes" # needed on cosign 2.0.0+
artifacts: checksum
output: true