Skip to content

Commit 22a177d

Browse files
committed
[ci] Build and publish APIServer for linux/arm64
1 parent c098e71 commit 22a177d

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

ci/main.go

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -296,9 +296,8 @@ func (m *ApoxyCli) BuildEdgeRuntime(
296296
// PullEdgeRuntime pulls the edge runtime image from dockerhub.
297297
func (m *ApoxyCli) PullEdgeRuntime(
298298
ctx context.Context,
299-
platform string,
299+
p dagger.Platform,
300300
) *dagger.Container {
301-
p := dagger.Platform(platform)
302301
return dag.Container(dagger.ContainerOpts{Platform: p}).
303302
From("docker.io/supabase/edge-runtime:v1.62.2")
304303
}
@@ -307,20 +306,25 @@ func (m *ApoxyCli) PullEdgeRuntime(
307306
func (m *ApoxyCli) BuildAPIServer(
308307
ctx context.Context,
309308
src *dagger.Directory,
309+
// +optional
310+
platform string,
310311
) *dagger.Container {
311-
platform := dagger.Platform("linux/amd64")
312-
goarch := "amd64"
313-
targetArch := "x86_64"
312+
if platform == "" {
313+
platform = runtime.GOOS + "/" + runtime.GOARCH
314+
}
315+
p := dagger.Platform(platform)
316+
goarch := archOf(p)
317+
314318
builder := m.BuilderContainer(ctx, src).
315319
WithEnvVariable("GOARCH", goarch).
316320
WithEnvVariable("GOOS", "linux").
317321
WithEnvVariable("CGO_ENABLED", "1").
318-
WithEnvVariable("CC", fmt.Sprintf("zig-wrapper cc --target=%s-linux-musl", targetArch)).
322+
WithEnvVariable("CC", fmt.Sprintf("zig-wrapper cc --target=%s-linux-musl", canonArchFromGoArch(goarch))).
319323
WithExec([]string{"go", "build", "-o", "apiserver", "./cmd/apiserver"})
320324

321-
runtimeCtr := m.PullEdgeRuntime(ctx, string(platform))
325+
runtimeCtr := m.PullEdgeRuntime(ctx, p)
322326

323-
return dag.Container(dagger.ContainerOpts{Platform: platform}).
327+
return dag.Container(dagger.ContainerOpts{Platform: p}).
324328
From("cgr.dev/chainguard/wolfi-base:latest").
325329
WithFile("/bin/apiserver", builder.File("/src/apiserver")).
326330
WithFile("/bin/edge-runtime", runtimeCtr.File("/usr/local/bin/edge-runtime")).
@@ -372,7 +376,7 @@ func (m *ApoxyCli) BuildBackplane(
372376
WithExec([]string{"go", "build", "-o", "/src/" + otelOut}).
373377
WithWorkdir("/src")
374378

375-
runtimeCtr := m.PullEdgeRuntime(ctx, platform)
379+
runtimeCtr := m.PullEdgeRuntime(ctx, p)
376380

377381
return dag.Container(dagger.ContainerOpts{Platform: p}).
378382
From("cgr.dev/chainguard/wolfi-base:latest").
@@ -434,14 +438,20 @@ func (m *ApoxyCli) PublishImages(
434438
registryPassword *dagger.Secret,
435439
tag string,
436440
) error {
437-
aCtr := m.BuildAPIServer(ctx, src)
438-
addr, err := aCtr.
441+
var apiCtrs []*dagger.Container
442+
for _, platform := range []string{"linux/amd64", "linux/arm64"} {
443+
apiCtrs = append(apiCtrs, m.BuildAPIServer(ctx, src, platform))
444+
}
445+
446+
addr, err := dag.Container().
439447
WithRegistryAuth(
440448
"registry-1.docker.io",
441449
"apoxy",
442450
registryPassword,
443451
).
444-
Publish(ctx, "docker.io/apoxy/apiserver:"+tag)
452+
Publish(ctx, "docker.io/apoxy/apiserver:"+tag, dagger.ContainerPublishOpts{
453+
PlatformVariants: apiCtrs,
454+
})
445455
if err != nil {
446456
return err
447457
}
@@ -450,8 +460,7 @@ func (m *ApoxyCli) PublishImages(
450460

451461
var bCtrs []*dagger.Container
452462
for _, platform := range []string{"linux/amd64", "linux/arm64"} {
453-
bCtr := m.BuildBackplane(ctx, src, platform)
454-
bCtrs = append(bCtrs, bCtr)
463+
bCtrs = append(bCtrs, m.BuildBackplane(ctx, src, platform))
455464
}
456465

457466
addr, err = dag.Container().
@@ -471,8 +480,7 @@ func (m *ApoxyCli) PublishImages(
471480

472481
var tpCtrs []*dagger.Container
473482
for _, platform := range []string{"linux/amd64", "linux/arm64"} {
474-
tpCtr := m.BuildTunnelproxy(ctx, src, platform)
475-
tpCtrs = append(tpCtrs, tpCtr)
483+
tpCtrs = append(tpCtrs, m.BuildTunnelproxy(ctx, src, platform))
476484
}
477485

478486
addr, err = dag.Container().

0 commit comments

Comments
 (0)