summaryrefslogtreecommitdiffhomepage
path: root/packages/containers/script
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2026-01-29 23:17:57 -0500
committerDax Raad <[email protected]>2026-01-29 23:17:57 -0500
commitcd664a189b7c1de5232b58c180fca72b86adada6 (patch)
tree0b20295f65a0334664dbd83428df945fb57c851b /packages/containers/script
parent849f488744ae6ba6b1f647e2ace9485bf1e3f214 (diff)
downloadopencode-cd664a189b7c1de5232b58c180fca72b86adada6.tar.gz
opencode-cd664a189b7c1de5232b58c180fca72b86adada6.zip
ci
Diffstat (limited to 'packages/containers/script')
-rw-r--r--packages/containers/script/build.ts50
1 files changed, 43 insertions, 7 deletions
diff --git a/packages/containers/script/build.ts b/packages/containers/script/build.ts
index ff259f2ab..6b880e7a5 100644
--- a/packages/containers/script/build.ts
+++ b/packages/containers/script/build.ts
@@ -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}`)
}
}