summaryrefslogtreecommitdiff
path: root/worker/scripts/build_image
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2025-05-10 16:57:03 -0700
committerElizabeth Alexander Hunt <me@liz.coffee>2025-05-10 16:57:03 -0700
commitfa8f3f9465e87d499f7d6428323f496a884b7818 (patch)
treeab477dfa52ef30282029c4f136bf605cb24d67a9 /worker/scripts/build_image
downloadci-fa8f3f9465e87d499f7d6428323f496a884b7818.tar.gz
ci-fa8f3f9465e87d499f7d6428323f496a884b7818.zip
initial commit
Diffstat (limited to 'worker/scripts/build_image')
-rw-r--r--worker/scripts/build_image67
1 files changed, 67 insertions, 0 deletions
diff --git a/worker/scripts/build_image b/worker/scripts/build_image
new file mode 100644
index 0000000..ba1ec8f
--- /dev/null
+++ b/worker/scripts/build_image
@@ -0,0 +1,67 @@
+#!/usr/bin/env -S deno run --allow-env --allow-net
+
+import type { BuildDockerImageJobProps } from "@liz-ci/model";
+import {
+ BitwardenSession,
+ getRequiredEnv,
+ getStdout,
+ type LoginItem,
+} from "@liz-ci/utils";
+
+const args: BuildDockerImageJobProps = {
+ registry: getRequiredEnv("registry"),
+ namespace: getRequiredEnv("namespace"),
+ repository: getRequiredEnv("repository"),
+ imageTag: getRequiredEnv("imageTag"),
+
+ context: getRequiredEnv("context"),
+ dockerfile: getRequiredEnv("dockerfile"),
+ buildTarget: getRequiredEnv("buildTarget"),
+};
+
+const bitwardenSession = new BitwardenSession();
+const { username: registryUsername, password: registryPassword } =
+ (await bitwardenSession.getItem<LoginItem>(args.registry))?.login ?? {};
+if (!(registryUsername && registryPassword)) {
+ throw new Error("where's the login info bruh");
+}
+
+await getStdout(
+ [
+ "docker",
+ "login",
+ "--username",
+ registryUsername,
+ "--password",
+ registryPassword,
+ args.registry,
+ ],
+);
+
+const tag =
+ `${args.registry}/${args.namespace}/${args.repository}:${args.imageTag}`;
+await getStdout(
+ [
+ "docker",
+ "build",
+ "--target",
+ args.buildTarget,
+ "-t",
+ tag,
+ "-f",
+ `${args.dockerfile}`,
+ `${args.context}`,
+ ],
+ {
+ clearEnv: true,
+ env: {},
+ },
+);
+
+await getStdout(
+ [
+ "docker",
+ "push",
+ tag,
+ ],
+);