Skip to content

Commit 5a6c066

Browse files
authoredAug 22, 2024··
feat: Build multiarch images (#1257)
Signed-off-by: Jose I. Paris <[email protected]>
1 parent e6997ba commit 5a6c066

File tree

2 files changed

+113
-9
lines changed

2 files changed

+113
-9
lines changed
 

‎.github/workflows/build_and_package.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ jobs:
6363
with:
6464
go-version: "1.22.5"
6565

66+
# install qemu binaries for multiarch builds (needed by goreleaser/buildx)
67+
- name: Setup qemu
68+
id: qemu
69+
uses: docker/setup-qemu-action@v3
70+
6671
- name: Run GoReleaser
6772
id: release
6873
uses: goreleaser/goreleaser-action@b508e2e3ef3b19d4e4146d4f8fb3ba9db644a757 # v3.2.0

‎.goreleaser.yml

+108-9
Original file line numberDiff line numberDiff line change
@@ -85,35 +85,134 @@ docker_signs:
8585
args: ["sign", "--key=env://COSIGN_KEY", "--yes", "${artifact}"]
8686
artifacts: all
8787

88+
# Build multiplatform images https://goreleaser.com/cookbooks/multi-platform-docker-images/
8889
dockers:
90+
# control-plane
8991
- dockerfile: app/controlplane/Dockerfile.goreleaser
9092
ids:
9193
- control-plane
9294
- chainloop-plugin-discord-webhook
9395
- chainloop-plugin-smtp
9496
- chainloop-plugin-dependency-track
9597
image_templates:
96-
- "ghcr.io/chainloop-dev/chainloop/control-plane:{{ .Tag }}"
97-
- "ghcr.io/chainloop-dev/chainloop/control-plane:latest"
98-
# Container image meant to perform migrations on the database at deployment time
98+
- "ghcr.io/chainloop-dev/chainloop/control-plane:{{ .Tag }}-amd64"
99+
use: buildx
100+
build_flag_templates:
101+
- "--pull"
102+
- "--platform=linux/amd64"
103+
- dockerfile: app/controlplane/Dockerfile.goreleaser
104+
ids:
105+
- control-plane
106+
- chainloop-plugin-discord-webhook
107+
- chainloop-plugin-smtp
108+
- chainloop-plugin-dependency-track
109+
image_templates:
110+
- "ghcr.io/chainloop-dev/chainloop/control-plane:{{ .Tag }}-arm64"
111+
use: buildx
112+
build_flag_templates:
113+
- "--pull"
114+
- "--platform=linux/arm64"
115+
116+
# migrations: Container image meant to perform migrations on the database at deployment time
99117
- dockerfile: app/controlplane/Dockerfile.migrations
100118
extra_files:
101119
- app/controlplane/pkg/data/ent/migrate/migrations
102120
image_templates:
103-
- "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:{{ .Tag }}"
104-
- "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:latest"
121+
- "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:{{ .Tag }}-amd64"
122+
use: buildx
123+
build_flag_templates:
124+
- "--pull"
125+
- "--platform=linux/amd64"
126+
- dockerfile: app/controlplane/Dockerfile.migrations
127+
extra_files:
128+
- app/controlplane/pkg/data/ent/migrate/migrations
129+
image_templates:
130+
- "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:{{ .Tag }}-arm64"
131+
use: buildx
132+
build_flag_templates:
133+
- "--pull"
134+
- "--platform=linux/arm64"
135+
136+
# cas
137+
- dockerfile: app/artifact-cas/Dockerfile.goreleaser
138+
ids:
139+
- artifact-cas
140+
image_templates:
141+
- "ghcr.io/chainloop-dev/chainloop/artifact-cas:{{ .Tag }}-amd64"
142+
use: buildx
143+
build_flag_templates:
144+
- "--pull"
145+
- "--platform=linux/amd64"
105146
- dockerfile: app/artifact-cas/Dockerfile.goreleaser
106147
ids:
107148
- artifact-cas
108149
image_templates:
109-
- "ghcr.io/chainloop-dev/chainloop/artifact-cas:{{ .Tag }}"
110-
- "ghcr.io/chainloop-dev/chainloop/artifact-cas:latest"
150+
- "ghcr.io/chainloop-dev/chainloop/artifact-cas:{{ .Tag }}-arm64"
151+
use: buildx
152+
build_flag_templates:
153+
- "--pull"
154+
- "--platform=linux/arm64"
155+
156+
# CLI
157+
- dockerfile: app/cli/Dockerfile.goreleaser
158+
ids:
159+
- cli
160+
image_templates:
161+
- "ghcr.io/chainloop-dev/chainloop/cli:{{ .Tag }}-amd64"
162+
use: buildx
163+
build_flag_templates:
164+
- "--pull"
165+
- "--platform=linux/amd64"
111166
- dockerfile: app/cli/Dockerfile.goreleaser
112167
ids:
113168
- cli
114169
image_templates:
115-
- "ghcr.io/chainloop-dev/chainloop/cli:{{ .Tag }}"
116-
- "ghcr.io/chainloop-dev/chainloop/cli:latest"
170+
- "ghcr.io/chainloop-dev/chainloop/cli:{{ .Tag }}-arm64"
171+
use: buildx
172+
build_flag_templates:
173+
- "--pull"
174+
- "--platform=linux/arm64"
175+
176+
docker_manifests:
177+
# control-plane
178+
- name_template: "ghcr.io/chainloop-dev/chainloop/control-plane:{{ .Tag }}"
179+
image_templates:
180+
- "ghcr.io/chainloop-dev/chainloop/control-plane:{{ .Tag }}-amd64"
181+
- "ghcr.io/chainloop-dev/chainloop/control-plane:{{ .Tag }}-arm64"
182+
- name_template: "ghcr.io/chainloop-dev/chainloop/control-plane:latest"
183+
image_templates:
184+
- "ghcr.io/chainloop-dev/chainloop/control-plane:{{ .Tag }}-amd64"
185+
- "ghcr.io/chainloop-dev/chainloop/control-plane:{{ .Tag }}-arm64"
186+
187+
# artifact-cas
188+
- name_template: "ghcr.io/chainloop-dev/chainloop/artifact-cas:{{ .Tag }}"
189+
image_templates:
190+
- "ghcr.io/chainloop-dev/chainloop/artifact-cas:{{ .Tag }}-amd64"
191+
- "ghcr.io/chainloop-dev/chainloop/artifact-cas:{{ .Tag }}-arm64"
192+
- name_template: "ghcr.io/chainloop-dev/chainloop/artifact-cas:latest"
193+
image_templates:
194+
- "ghcr.io/chainloop-dev/chainloop/artifact-cas:{{ .Tag }}-amd64"
195+
- "ghcr.io/chainloop-dev/chainloop/artifact-cas:{{ .Tag }}-arm64"
196+
197+
# control-plane-migrations
198+
- name_template: "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:{{ .Tag }}"
199+
image_templates:
200+
- "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:{{ .Tag }}-amd64"
201+
- "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:{{ .Tag }}-arm64"
202+
- name_template: "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:latest"
203+
image_templates:
204+
- "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:{{ .Tag }}-amd64"
205+
- "ghcr.io/chainloop-dev/chainloop/control-plane-migrations:{{ .Tag }}-arm64"
206+
207+
# cli
208+
- name_template: "ghcr.io/chainloop-dev/chainloop/cli:{{ .Tag }}"
209+
image_templates:
210+
- "ghcr.io/chainloop-dev/chainloop/cli:{{ .Tag }}-amd64"
211+
- "ghcr.io/chainloop-dev/chainloop/cli:{{ .Tag }}-arm64"
212+
- name_template: "ghcr.io/chainloop-dev/chainloop/cli:latest"
213+
image_templates:
214+
- "ghcr.io/chainloop-dev/chainloop/cli:{{ .Tag }}-amd64"
215+
- "ghcr.io/chainloop-dev/chainloop/cli:{{ .Tag }}-arm64"
117216

118217
release:
119218
extra_files:

0 commit comments

Comments
 (0)
Please sign in to comment.