capture build scan url on failed build

This commit is contained in:
Paul Merlin 2019-09-23 12:11:18 +02:00
parent 091093ee61
commit 0a56b592f2
2 changed files with 17 additions and 11 deletions

View file

@ -4,10 +4,11 @@ import * as exec from "@actions/exec";
export async function execute(executable: string, root: string, argv: string[]): Promise<BuildResult> { export async function execute(executable: string, root: string, argv: string[]): Promise<BuildResult> {
let publishing = false; 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, cwd: root,
ignoreReturnCode: true,
listeners: { listeners: {
stdline: (line: string) => { stdline: (line: string) => {
if (line.startsWith("Publishing build scan...")) { if (line.startsWith("Publishing build scan...")) {
@ -17,24 +18,25 @@ export async function execute(executable: string, root: string, argv: string[]):
publishing = false publishing = false
} }
if (publishing && line.startsWith("http")) { if (publishing && line.startsWith("http")) {
buildScanLink = line.trim(); buildScanUrl = line.trim();
publishing = false publishing = false
} }
} }
} }
}); });
if (buildScanLink != null) { return new BuildResultImpl(status, buildScanUrl);
return new BuildResultImpl(buildScanLink.toString());
}
return new BuildResultImpl(null as unknown as string);
} }
export interface BuildResult { export interface BuildResult {
buildScanUrl: string readonly status: number
readonly buildScanUrl?: string
} }
class BuildResultImpl implements BuildResult { class BuildResultImpl implements BuildResult {
constructor(readonly buildScanUrl: string) { constructor(
readonly status: number,
readonly buildScanUrl?: string
) {
} }
} }

View file

@ -8,7 +8,7 @@ import * as provision from "./provision";
// Invoked by Github Actions // Invoked by Github Actions
async function run() { export async function run() {
try { try {
const baseDirectory = process.env[`GITHUB_WORKSPACE`] || ""; const baseDirectory = process.env[`GITHUB_WORKSPACE`] || "";
@ -19,10 +19,14 @@ async function run() {
parseCommandLineArguments() parseCommandLineArguments()
); );
if (result.buildScanUrl != null) { if (result.buildScanUrl) {
core.setOutput("build-scan-url", result.buildScanUrl); core.setOutput("build-scan-url", result.buildScanUrl);
} }
if (result.status != 0) {
core.setFailed(`Gradle process exited with status ${result.status}`)
}
} catch (error) { } catch (error) {
core.setFailed(error.message); core.setFailed(error.message);
} }