blob: cd9e54336ed1c454f4d43b48d0b30d9c84bf7407 [file] [log] [blame]
David Crawshaw11129492025-04-25 20:41:53 -07001//go:build ignore
2// +build ignore
3
4package main
5
6import (
7 "fmt"
8 "os"
9 "os/exec"
10 "path/filepath"
11
12 "sketch.dev/dockerimg"
13)
14
15func main() {
16 dir, err := os.MkdirTemp("", "sketch-pushdockerimg-*")
17 if err != nil {
18 panic(err)
19 }
20 defer os.RemoveAll(dir)
21
David Crawshaw2a5bd6d2025-04-30 14:29:46 -070022 name, dockerfile, tag := dockerimg.DefaultImage()
David Crawshaw11129492025-04-25 20:41:53 -070023 if err := os.WriteFile(filepath.Join(dir, "Dockerfile"), []byte(dockerfile), 0o666); err != nil {
24 panic(err)
25 }
26
27 fmt.Print(`NOTE: this requires:
28 brew install colima docker docker-buildx qemu
29 gh auth token | docker login ghcr.io -u $(gh api user --jq .login) --password-stdin
30`)
31
32 run := func(args ...string) {
33 cmd := exec.Command(args[0], args[1:]...)
34 cmd.Dir = dir
35 cmd.Stdout = os.Stdout
36 cmd.Stderr = os.Stderr
37 fmt.Printf("running %v\n", cmd.Args)
38 if err := cmd.Run(); err != nil {
39 panic(err)
40 }
41 }
42
David Crawshaw2a5bd6d2025-04-30 14:29:46 -070043 path := name + ":" + tag
44
David Crawshaw11129492025-04-25 20:41:53 -070045 run("colima", "start")
46 run("docker", "buildx", "create", "--name", "arm", "--use", "--driver", "docker-container", "--bootstrap")
47 run("docker", "buildx", "use", "arm")
David Crawshaw2a5bd6d2025-04-30 14:29:46 -070048 run("docker", "buildx", "build", "--platform", "linux/arm64", "-t", path+"arm64", "--push", ".")
David Crawshaw11129492025-04-25 20:41:53 -070049 run("docker", "buildx", "rm", "arm")
50 run("colima", "start", "--profile=intel", "--arch=x86_64", "--vm-type=vz", "--vz-rosetta", "--memory=4", "--disk=15")
51 run("docker", "context", "use", "colima-intel")
52 run("docker", "buildx", "create", "--name", "intel", "--use", "--driver", "docker-container", "--bootstrap")
53 run("docker", "buildx", "use", "intel")
David Crawshaw2a5bd6d2025-04-30 14:29:46 -070054 run("docker", "buildx", "build", "--platform", "linux/amd64", "-t", path+"amd64", "--push", ".")
David Crawshaw11129492025-04-25 20:41:53 -070055 run("docker", "buildx", "rm", "intel")
56 run("docker", "context", "use", "colima")
57 run("colima", "stop", "--profile=intel")
58 run(
59 "docker", "buildx", "imagetools", "create",
David Crawshaw2a5bd6d2025-04-30 14:29:46 -070060 "-t", path, path+"arm64", path+"amd64",
David Crawshaw11129492025-04-25 20:41:53 -070061 )
David Crawshaw2a5bd6d2025-04-30 14:29:46 -070062 run("docker", "buildx", "imagetools", "inspect", path)
David Crawshaw11129492025-04-25 20:41:53 -070063}