blob: 264762678033e0c7885cf88edb847dc16202ae4f [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
22 name, dockerfile, hash := dockerimg.DefaultImage()
23 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
43 run("colima", "start")
44 run("docker", "buildx", "create", "--name", "arm", "--use", "--driver", "docker-container", "--bootstrap")
45 run("docker", "buildx", "use", "arm")
46 run("docker", "buildx", "build", "--platform", "linux/arm64", "-t", name+"arm64", "--push", ".")
47 run("docker", "buildx", "rm", "arm")
48 run("colima", "start", "--profile=intel", "--arch=x86_64", "--vm-type=vz", "--vz-rosetta", "--memory=4", "--disk=15")
49 run("docker", "context", "use", "colima-intel")
50 run("docker", "buildx", "create", "--name", "intel", "--use", "--driver", "docker-container", "--bootstrap")
51 run("docker", "buildx", "use", "intel")
52 run("docker", "buildx", "build", "--platform", "linux/amd64", "-t", name+"amd64", "--push", ".")
53 run("docker", "buildx", "rm", "intel")
54 run("docker", "context", "use", "colima")
55 run("colima", "stop", "--profile=intel")
56 run(
57 "docker", "buildx", "imagetools", "create",
58 "--annotation", "index:org.opencontainers.image.revision="+hash,
59 "-t", name, name+"arm64", name+"amd64",
60 )
61 run("docker", "buildx", "imagetools", "inspect", name)
62}