#!/usr/bin/env -S deno run --allow-env --allow-net --allow-run 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(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, ], );