|
|
@@ -19,23 +19,59 @@ if (!bun) throw new Error("packageManager must be bun@<version>")
|
|
|
|
|
|
const images = ["base", "bun-node", "rust", "tauri-linux", "publish"]
|
|
|
|
|
|
+const setup = async () => {
|
|
|
+ if (!push) return
|
|
|
+ const list = await $`docker buildx ls`.text()
|
|
|
+ if (list.includes("opencode")) {
|
|
|
+ await $`docker buildx use opencode`
|
|
|
+ return
|
|
|
+ }
|
|
|
+ await $`docker buildx create --name opencode --use`
|
|
|
+}
|
|
|
+
|
|
|
+await setup()
|
|
|
+
|
|
|
+const platform = "linux/amd64,linux/arm64"
|
|
|
+
|
|
|
for (const name of images) {
|
|
|
const image = `${reg}/build/${name}:${tag}`
|
|
|
const file = `packages/containers/${name}/Dockerfile`
|
|
|
if (name === "base") {
|
|
|
- console.log(`docker build -f ${file} -t ${image} .`)
|
|
|
- await $`docker build -f ${file} -t ${image} .`
|
|
|
+ if (push) {
|
|
|
+ console.log(`docker buildx build --platform ${platform} -f ${file} -t ${image} --push .`)
|
|
|
+ await $`docker buildx build --platform ${platform} -f ${file} -t ${image} --push .`
|
|
|
+ }
|
|
|
+ if (!push) {
|
|
|
+ console.log(`docker build -f ${file} -t ${image} .`)
|
|
|
+ await $`docker build -f ${file} -t ${image} .`
|
|
|
+ }
|
|
|
}
|
|
|
if (name === "bun-node") {
|
|
|
- console.log(`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} .`)
|
|
|
- await $`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} .`
|
|
|
+ if (push) {
|
|
|
+ console.log(
|
|
|
+ `docker buildx build --platform ${platform} -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} --push .`,
|
|
|
+ )
|
|
|
+ await $`docker buildx build --platform ${platform} -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} --push .`
|
|
|
+ }
|
|
|
+ if (!push) {
|
|
|
+ console.log(`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} .`)
|
|
|
+ await $`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} .`
|
|
|
+ }
|
|
|
}
|
|
|
if (name !== "base" && name !== "bun-node") {
|
|
|
- console.log(`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} .`)
|
|
|
- await $`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} .`
|
|
|
+ if (push) {
|
|
|
+ console.log(
|
|
|
+ `docker buildx build --platform ${platform} -f ${file} -t ${image} --build-arg REGISTRY=${reg} --push .`,
|
|
|
+ )
|
|
|
+ await $`docker buildx build --platform ${platform} -f ${file} -t ${image} --build-arg REGISTRY=${reg} --push .`
|
|
|
+ }
|
|
|
+ if (!push) {
|
|
|
+ console.log(`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} .`)
|
|
|
+ await $`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} .`
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (push) {
|
|
|
- await $`docker push ${image}`
|
|
|
+ console.log(`pushed ${image}`)
|
|
|
}
|
|
|
}
|