blob: 264762678033e0c7885cf88edb847dc16202ae4f [file] [log] [blame]
//go:build ignore
// +build ignore
package main
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"sketch.dev/dockerimg"
)
func main() {
dir, err := os.MkdirTemp("", "sketch-pushdockerimg-*")
if err != nil {
panic(err)
}
defer os.RemoveAll(dir)
name, dockerfile, hash := dockerimg.DefaultImage()
if err := os.WriteFile(filepath.Join(dir, "Dockerfile"), []byte(dockerfile), 0o666); err != nil {
panic(err)
}
fmt.Print(`NOTE: this requires:
brew install colima docker docker-buildx qemu
gh auth token | docker login ghcr.io -u $(gh api user --jq .login) --password-stdin
`)
run := func(args ...string) {
cmd := exec.Command(args[0], args[1:]...)
cmd.Dir = dir
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
fmt.Printf("running %v\n", cmd.Args)
if err := cmd.Run(); err != nil {
panic(err)
}
}
run("colima", "start")
run("docker", "buildx", "create", "--name", "arm", "--use", "--driver", "docker-container", "--bootstrap")
run("docker", "buildx", "use", "arm")
run("docker", "buildx", "build", "--platform", "linux/arm64", "-t", name+"arm64", "--push", ".")
run("docker", "buildx", "rm", "arm")
run("colima", "start", "--profile=intel", "--arch=x86_64", "--vm-type=vz", "--vz-rosetta", "--memory=4", "--disk=15")
run("docker", "context", "use", "colima-intel")
run("docker", "buildx", "create", "--name", "intel", "--use", "--driver", "docker-container", "--bootstrap")
run("docker", "buildx", "use", "intel")
run("docker", "buildx", "build", "--platform", "linux/amd64", "-t", name+"amd64", "--push", ".")
run("docker", "buildx", "rm", "intel")
run("docker", "context", "use", "colima")
run("colima", "stop", "--profile=intel")
run(
"docker", "buildx", "imagetools", "create",
"--annotation", "index:org.opencontainers.image.revision="+hash,
"-t", name, name+"arm64", name+"amd64",
)
run("docker", "buildx", "imagetools", "inspect", name)
}