Skip to content

Commit 19506da

Browse files
committed
Integrate goreleaser to automate the building and publishing of multi-arch container images
1 parent f7ffd6a commit 19506da

File tree

3 files changed

+128
-0
lines changed

3 files changed

+128
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,3 +455,5 @@ apiserver.key
455455

456456
!vendor/**
457457
test/e2e-local.image.tar
458+
459+
dist/

.goreleaser.yml

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
env:
2+
- GO111MODULE=on
3+
- CGO_ENABLED=0
4+
before:
5+
hooks:
6+
- go mod tidy
7+
- go mod vendor
8+
builds:
9+
- id: olm
10+
main: ./cmd/olm
11+
binary: olm
12+
goos:
13+
- linux
14+
goarch:
15+
- amd64
16+
- arm64
17+
tags:
18+
- json1
19+
flags:
20+
- -mod=vendor
21+
ldflags:
22+
- -X {{ .Env.PKG }}/pkg/version.GitCommit={{ .FullCommit }}
23+
- -X {{ .Env.PKG }}/pkg/version.OLMVersion={{ .Tag }}
24+
- id: catalog
25+
main: ./cmd/catalog
26+
binary: catalog
27+
goos:
28+
- linux
29+
goarch:
30+
- amd64
31+
- arm64
32+
tags:
33+
- json1
34+
flags:
35+
- -mod=vendor
36+
ldflags:
37+
- -X {{ .Env.PKG }}/pkg/version.GitCommit={{ .FullCommit }}
38+
- -X {{ .Env.PKG }}/pkg/version.OLMVersion={{ .Tag }}
39+
- id: cpb
40+
main: ./util/cpb
41+
binary: cpb
42+
goos:
43+
- linux
44+
goarch:
45+
- amd64
46+
- arm64
47+
tags:
48+
- json1
49+
flags:
50+
- -mod=vendor
51+
ldflags:
52+
- -X {{ .Env.PKG }}/pkg/version.GitCommit={{ .FullCommit }}
53+
- -X {{ .Env.PKG }}/pkg/version.OLMVersion={{ .Tag }}
54+
- id: package-server
55+
main: ./cmd/package-server
56+
binary: package-server
57+
goos:
58+
- linux
59+
goarch:
60+
- amd64
61+
- arm64
62+
tags:
63+
- json1
64+
flags:
65+
- -mod=vendor
66+
ldflags:
67+
- -X {{ .Env.PKG }}/pkg/version.GitCommit={{ .FullCommit }}
68+
- -X {{ .Env.PKG }}/pkg/version.OLMVersion={{ .Tag }}
69+
dockers:
70+
- image_templates:
71+
- quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}-amd64
72+
dockerfile: Dockerfile.goreleaser
73+
use: buildx
74+
goos: linux
75+
goarch: amd64
76+
build_flag_templates:
77+
- --platform=linux/amd64
78+
- image_templates:
79+
- quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}-arm64
80+
dockerfile: Dockerfile.goreleaser
81+
use: buildx
82+
goos: linux
83+
goarch: arm64
84+
build_flag_templates:
85+
- --platform=linux/arm64
86+
docker_manifests:
87+
- name_template: quay.io/{{ .Env.IMAGE_REPO }}:v{{ .Major }}.{{ .Minor }}
88+
image_templates:
89+
- quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}-amd64
90+
- quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}-arm64
91+
- name_template: quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}
92+
image_templates:
93+
- quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}-amd64
94+
- quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}-arm64
95+
96+
- name_template: quay.io/{{ .Env.IMAGE_REPO }}:latest
97+
image_templates:
98+
- quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}-amd64
99+
- quay.io/{{ .Env.IMAGE_REPO }}:{{ .Tag }}-arm64
100+
create_flags:
101+
- --amend
102+
checksum:
103+
name_template: 'checksums.txt'
104+
snapshot:
105+
name_template: "{{ .Tag }}"
106+
changelog:
107+
sort: asc
108+
filters:
109+
exclude:
110+
- '^doc:'
111+
- '^test:'
112+
release:
113+
draft: true

Dockerfile.goreleaser

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM --platform=$BUILDPLATFORM gcr.io/distroless/static:debug
2+
LABEL stage=olm
3+
WORKDIR /
4+
# bundle unpack Jobs require cp at /bin/cp
5+
RUN ["/busybox/ln", "-s", "/busybox/cp", "/bin/cp"]
6+
# copy goreleaser built binaries
7+
COPY olm /bin/olm
8+
COPY catalog /bin/catalog
9+
COPY package-server /bin/package-server
10+
COPY cpb /bin/cpb
11+
EXPOSE 8080
12+
EXPOSE 5443
13+
ENTRYPOINT ["/bin/olm"]

0 commit comments

Comments
 (0)