From 6c5e29d8485c56f3f8d1cb2197b657959dd6e032 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Fri, 13 Jun 2025 18:26:47 +0200 Subject: [PATCH] skip builder creation if one already exists with the same name Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- src/main.ts | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/main.ts b/src/main.ts index 9f10f5a..cb69816 100644 --- a/src/main.ts +++ b/src/main.ts @@ -124,22 +124,26 @@ actionsToolkit.run( if (inputs.driver !== 'docker') { await core.group(`Creating a new builder instance`, async () => { - const certsDriverOpts = Buildx.resolveCertsDriverOpts(inputs.driver, inputs.endpoint, { - cacert: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_CACERT`], - cert: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_CERT`], - key: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_KEY`] - }); - if (certsDriverOpts.length > 0) { - inputs.driverOpts = [...inputs.driverOpts, ...certsDriverOpts]; - } - const createCmd = await toolkit.buildx.getCommand(await context.getCreateArgs(inputs, toolkit)); - await Exec.getExecOutput(createCmd.command, createCmd.args, { - ignoreReturnCode: true - }).then(res => { - if (res.stderr.length > 0 && res.exitCode != 0) { - throw new Error(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'); + if (await toolkit.builder.exists(inputs.name)) { + core.info(`Builder ${inputs.name} already exists, skipping creation`); + } else { + const certsDriverOpts = Buildx.resolveCertsDriverOpts(inputs.driver, inputs.endpoint, { + cacert: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_CACERT`], + cert: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_CERT`], + key: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_KEY`] + }); + if (certsDriverOpts.length > 0) { + inputs.driverOpts = [...inputs.driverOpts, ...certsDriverOpts]; } - }); + const createCmd = await toolkit.buildx.getCommand(await context.getCreateArgs(inputs, toolkit)); + await Exec.getExecOutput(createCmd.command, createCmd.args, { + ignoreReturnCode: true + }).then(res => { + if (res.stderr.length > 0 && res.exitCode != 0) { + throw new Error(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'); + } + }); + } }); }