From 0a56b592f268b47839d8d670746d6520a2594f0e Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Mon, 23 Sep 2019 12:11:18 +0200 Subject: [PATCH] capture build scan url on failed build --- src/execution.ts | 20 +++++++++++--------- src/main.ts | 8 ++++++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/execution.ts b/src/execution.ts index 4389441..dc1364d 100644 --- a/src/execution.ts +++ b/src/execution.ts @@ -4,10 +4,11 @@ import * as exec from "@actions/exec"; export async function execute(executable: string, root: string, argv: string[]): Promise { let publishing = false; - let buildScanLink: any = null; + let buildScanUrl: string | undefined; - await exec.exec(executable, argv, { + const status: number = await exec.exec(executable, argv, { cwd: root, + ignoreReturnCode: true, listeners: { stdline: (line: string) => { if (line.startsWith("Publishing build scan...")) { @@ -17,24 +18,25 @@ export async function execute(executable: string, root: string, argv: string[]): publishing = false } if (publishing && line.startsWith("http")) { - buildScanLink = line.trim(); + buildScanUrl = line.trim(); publishing = false } } } }); - if (buildScanLink != null) { - return new BuildResultImpl(buildScanLink.toString()); - } - return new BuildResultImpl(null as unknown as string); + return new BuildResultImpl(status, buildScanUrl); } export interface BuildResult { - buildScanUrl: string + readonly status: number + readonly buildScanUrl?: string } class BuildResultImpl implements BuildResult { - constructor(readonly buildScanUrl: string) { + constructor( + readonly status: number, + readonly buildScanUrl?: string + ) { } } diff --git a/src/main.ts b/src/main.ts index 174d97b..82f048f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -8,7 +8,7 @@ import * as provision from "./provision"; // Invoked by Github Actions -async function run() { +export async function run() { try { const baseDirectory = process.env[`GITHUB_WORKSPACE`] || ""; @@ -19,10 +19,14 @@ async function run() { parseCommandLineArguments() ); - if (result.buildScanUrl != null) { + if (result.buildScanUrl) { core.setOutput("build-scan-url", result.buildScanUrl); } + if (result.status != 0) { + core.setFailed(`Gradle process exited with status ${result.status}`) + } + } catch (error) { core.setFailed(error.message); }