From dc25d8b2ee29ab528b1123092b56cc3ec9324569 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:09:07 +0200 Subject: [PATCH] throw error message instead of exit code Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- package.json | 1 - src/main.ts | 66 ++++++++++++++++++++++++++++++++++------------------ 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 24ed734..414a69e 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "license": "Apache-2.0", "dependencies": { "@actions/core": "^1.10.1", - "@actions/exec": "^1.1.1", "@docker/actions-toolkit": "^0.20.0", "js-yaml": "^4.1.0", "uuid": "^9.0.1" diff --git a/src/main.ts b/src/main.ts index 6e61933..bd8c597 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,11 +1,11 @@ import * as fs from 'fs'; import * as yaml from 'js-yaml'; import * as core from '@actions/core'; -import * as exec from '@actions/exec'; import * as actionsToolkit from '@docker/actions-toolkit'; import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx'; import {Builder} from '@docker/actions-toolkit/lib/buildx/builder'; import {Docker} from '@docker/actions-toolkit/lib/docker/docker'; +import {Exec} from '@docker/actions-toolkit/lib/exec'; import {Toolkit} from '@docker/actions-toolkit/lib/toolkit'; import {Util} from '@docker/actions-toolkit/lib/util'; import {Node} from '@docker/actions-toolkit/lib/types/builder'; @@ -77,7 +77,13 @@ actionsToolkit.run( inputs.driverOpts = [...inputs.driverOpts, ...certsDriverOpts]; } const createCmd = await toolkit.buildx.getCommand(await context.getCreateArgs(inputs, toolkit)); - await exec.exec(createCmd.command, createCmd.args); + 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'); + } + }); }); } @@ -95,7 +101,13 @@ actionsToolkit.run( node['driver-opts'] = [...(node['driver-opts'] || []), ...certsDriverOpts]; } const appendCmd = await toolkit.buildx.getCommand(await context.getAppendArgs(inputs, node, toolkit)); - await exec.exec(appendCmd.command, appendCmd.args); + await Exec.getExecOutput(appendCmd.command, appendCmd.args, { + ignoreReturnCode: true + }).then(res => { + if (res.stderr.length > 0 && res.exitCode != 0) { + throw new Error(`Failed to append node ${node.name}: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`); + } + }); nodeIndex++; } }); @@ -103,7 +115,13 @@ actionsToolkit.run( await core.group(`Booting builder`, async () => { const inspectCmd = await toolkit.buildx.getCommand(await context.getInspectArgs(inputs, toolkit)); - await exec.exec(inspectCmd.command, inspectCmd.args); + await Exec.getExecOutput(inspectCmd.command, inspectCmd.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 (inputs.install) { @@ -112,7 +130,13 @@ actionsToolkit.run( } await core.group(`Setting buildx as default builder`, async () => { const installCmd = await toolkit.buildx.getCommand(['install']); - await exec.exec(installCmd.command, installCmd.args); + await Exec.getExecOutput(installCmd.command, installCmd.args, { + ignoreReturnCode: true + }).then(res => { + if (res.stderr.length > 0 && res.exitCode != 0) { + throw new Error(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'); + } + }); }); } @@ -155,15 +179,13 @@ actionsToolkit.run( async () => { if (stateHelper.IsDebug && stateHelper.containerName.length > 0) { await core.group(`BuildKit container logs`, async () => { - await exec - .getExecOutput('docker', ['logs', `${stateHelper.containerName}`], { - ignoreReturnCode: true - }) - .then(res => { - if (res.stderr.length > 0 && res.exitCode != 0) { - core.warning(res.stderr.trim()); - } - }); + await Exec.getExecOutput('docker', ['logs', `${stateHelper.containerName}`], { + ignoreReturnCode: true + }).then(res => { + if (res.stderr.length > 0 && res.exitCode != 0) { + core.warning(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'); + } + }); }); } @@ -177,15 +199,13 @@ actionsToolkit.run( const builder = new Builder({buildx: buildx}); if (await builder.exists(stateHelper.builderName)) { const rmCmd = await buildx.getCommand(['rm', stateHelper.builderName]); - await exec - .getExecOutput(rmCmd.command, rmCmd.args, { - ignoreReturnCode: true - }) - .then(res => { - if (res.stderr.length > 0 && res.exitCode != 0) { - core.warning(res.stderr.trim()); - } - }); + await Exec.getExecOutput(rmCmd.command, rmCmd.args, { + ignoreReturnCode: true + }).then(res => { + if (res.stderr.length > 0 && res.exitCode != 0) { + core.warning(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'); + } + }); } else { core.info(`${stateHelper.builderName} does not exist`); }