From c1bc3a29c8834a7dd6642f733ae7240be94844ef Mon Sep 17 00:00:00 2001 From: Bastien Arata Date: Tue, 20 Aug 2019 14:09:32 +0200 Subject: [PATCH 1/3] add env injection --- src/main.ts | 111 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 64 insertions(+), 47 deletions(-) diff --git a/src/main.ts b/src/main.ts index 2f4a88b9..5bfa2a76 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,12 +1,13 @@ -import { platform } from 'os'; -import { createWriteStream } from 'fs'; -import fetch from 'node-fetch'; -import { debug, error, setFailed, getInput } from '@actions/core'; -import { exec } from '@actions/exec'; +import { platform } from 'os' +import { createWriteStream } from 'fs' +import fetch from 'node-fetch' +import { debug, error, setFailed, getInput } from '@actions/core' +import { exec } from '@actions/exec' +import { ExecOptions } from '@actions/exec/lib/interfaces' -const DOWNLOAD_URL = `https://codeclimate.com/downloads/test-reporter/test-reporter-latest-${platform()}-amd64`; -const EXECUTABLE = './cc-reporter'; -const DEFAULT_COVERAGE_COMMAND = 'yarn coverage'; +const DOWNLOAD_URL = `https://codeclimate.com/downloads/test-reporter/test-reporter-latest-${platform()}-amd64` +const EXECUTABLE = './cc-reporter' +const DEFAULT_COVERAGE_COMMAND = 'yarn coverage' export function downloadToFile( url: string, @@ -15,16 +16,29 @@ export function downloadToFile( ): Promise { return new Promise(async (resolve, reject) => { try { - const response = await fetch(url, { timeout: 2 * 60 * 1000 }); // Timeout in 2 minutes. - const writer = createWriteStream(file, { mode }); - response.body.pipe(writer); + const response = await fetch(url, { timeout: 2 * 60 * 1000 }) // Timeout in 2 minutes. + const writer = createWriteStream(file, { mode }) + response.body.pipe(writer) writer.on('close', () => { - return resolve(); - }); + return resolve() + }) } catch (err) { - return reject(err); + return reject(err) } - }); + }) +} + +function prepareEnv() { + const env: { + [key: string]: string + } = {} + if (process.env.CC_TEST_REPORTER_ID !== undefined) + env.CC_TEST_REPORTER_ID = process.env.CC_TEST_REPORTER_ID + if (process.env.GITHUB_SHA !== undefined) + env.GIT_COMMIT_SHA = process.env.GITHUB_SHA + if (process.env.GITHUB_REF !== undefined) + env.GIT_BRANCH = process.env.GITHUB_REF + return env } export function run( @@ -33,53 +47,56 @@ export function run( coverageCommand: string = DEFAULT_COVERAGE_COMMAND ): Promise { return new Promise(async (resolve, reject) => { - let lastExitCode = 1; + let lastExitCode = 1 try { - debug(`ℹ️ Downloading CC Reporter from ${downloadUrl} ...`); - await downloadToFile(downloadUrl, executable); - debug('✅ CC Reporter downloaded...'); + debug(`ℹ️ Downloading CC Reporter from ${downloadUrl} ...`) + await downloadToFile(downloadUrl, executable) + debug('✅ CC Reporter downloaded...') } catch (err) { - error(err.message); - setFailed('🚨 CC Reporter download failed!'); - return reject(err); + error(err.message) + setFailed('🚨 CC Reporter download failed!') + return reject(err) + } + const execOpts: ExecOptions = { + env: prepareEnv() } try { - lastExitCode = await exec(executable, ['before-build']); - debug('✅ CC Reporter before-build checkin completed...'); + lastExitCode = await exec(executable, ['before-build'], execOpts) + debug('✅ CC Reporter before-build checkin completed...') } catch (err) { - error(err); - setFailed('🚨 CC Reporter before-build checkin failed!'); - return reject(err); + error(err) + setFailed('🚨 CC Reporter before-build checkin failed!') + return reject(err) } try { - lastExitCode = await exec(coverageCommand); + lastExitCode = await exec(coverageCommand, undefined, execOpts) if (lastExitCode !== 0) { - throw new Error(`Coverage run exited with code ${lastExitCode}`); + throw new Error(`Coverage run exited with code ${lastExitCode}`) } - debug('✅ Coverage run completed...'); + debug('✅ Coverage run completed...') } catch (err) { - error(err); - setFailed('🚨 Coverage run failed!'); - return reject(err); + error(err) + setFailed('🚨 Coverage run failed!') + return reject(err) } try { - await exec(executable, [ - 'after-build', - '--exit-code', - lastExitCode.toString() - ]); - debug('✅ CC Reporter after-build checkin completed!'); - return resolve(); + await exec( + executable, + ['after-build', '--exit-code', lastExitCode.toString()], + execOpts + ) + debug('✅ CC Reporter after-build checkin completed!') + return resolve() } catch (err) { - error(err); - setFailed('🚨 CC Reporter before-build checkin failed!'); - return reject(err); + error(err) + setFailed('🚨 CC Reporter before-build checkin failed!') + return reject(err) } - }); + }) } if (!module.parent) { - let coverageCommand = getInput('coverageCommand', { required: false }); - if (!coverageCommand.length) coverageCommand = DEFAULT_COVERAGE_COMMAND; - run(DOWNLOAD_URL, EXECUTABLE, coverageCommand); + let coverageCommand = getInput('coverageCommand', { required: false }) + if (!coverageCommand.length) coverageCommand = DEFAULT_COVERAGE_COMMAND + run(DOWNLOAD_URL, EXECUTABLE, coverageCommand) } From 58dc2bff34589149dd0ad6763d6912c6b7c6cbbe Mon Sep 17 00:00:00 2001 From: Bastien Arata Date: Tue, 20 Aug 2019 14:25:49 +0200 Subject: [PATCH 2/3] fix env not initialized --- src/main.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main.ts b/src/main.ts index 5bfa2a76..d384e948 100644 --- a/src/main.ts +++ b/src/main.ts @@ -29,15 +29,13 @@ export function downloadToFile( } function prepareEnv() { - const env: { - [key: string]: string - } = {} - if (process.env.CC_TEST_REPORTER_ID !== undefined) - env.CC_TEST_REPORTER_ID = process.env.CC_TEST_REPORTER_ID + const env = process.env as { [key: string]: string } + if (process.env.GITHUB_SHA !== undefined) env.GIT_COMMIT_SHA = process.env.GITHUB_SHA if (process.env.GITHUB_REF !== undefined) env.GIT_BRANCH = process.env.GITHUB_REF + return env } From 1449c1aac37b38fa4cbc704c3e2137b376397294 Mon Sep 17 00:00:00 2001 From: Bastien Arata Date: Wed, 21 Aug 2019 13:37:35 +0200 Subject: [PATCH 3/3] run format --- src/main.ts | 98 ++++++++++++++++++++++++++--------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/src/main.ts b/src/main.ts index d384e948..1a6400cd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,13 +1,13 @@ -import { platform } from 'os' -import { createWriteStream } from 'fs' -import fetch from 'node-fetch' -import { debug, error, setFailed, getInput } from '@actions/core' -import { exec } from '@actions/exec' -import { ExecOptions } from '@actions/exec/lib/interfaces' +import { platform } from 'os'; +import { createWriteStream } from 'fs'; +import fetch from 'node-fetch'; +import { debug, error, setFailed, getInput } from '@actions/core'; +import { exec } from '@actions/exec'; +import { ExecOptions } from '@actions/exec/lib/interfaces'; -const DOWNLOAD_URL = `https://codeclimate.com/downloads/test-reporter/test-reporter-latest-${platform()}-amd64` -const EXECUTABLE = './cc-reporter' -const DEFAULT_COVERAGE_COMMAND = 'yarn coverage' +const DOWNLOAD_URL = `https://codeclimate.com/downloads/test-reporter/test-reporter-latest-${platform()}-amd64`; +const EXECUTABLE = './cc-reporter'; +const DEFAULT_COVERAGE_COMMAND = 'yarn coverage'; export function downloadToFile( url: string, @@ -16,27 +16,27 @@ export function downloadToFile( ): Promise { return new Promise(async (resolve, reject) => { try { - const response = await fetch(url, { timeout: 2 * 60 * 1000 }) // Timeout in 2 minutes. - const writer = createWriteStream(file, { mode }) - response.body.pipe(writer) + const response = await fetch(url, { timeout: 2 * 60 * 1000 }); // Timeout in 2 minutes. + const writer = createWriteStream(file, { mode }); + response.body.pipe(writer); writer.on('close', () => { - return resolve() - }) + return resolve(); + }); } catch (err) { - return reject(err) + return reject(err); } - }) + }); } function prepareEnv() { - const env = process.env as { [key: string]: string } + const env = process.env as { [key: string]: string }; if (process.env.GITHUB_SHA !== undefined) - env.GIT_COMMIT_SHA = process.env.GITHUB_SHA + env.GIT_COMMIT_SHA = process.env.GITHUB_SHA; if (process.env.GITHUB_REF !== undefined) - env.GIT_BRANCH = process.env.GITHUB_REF + env.GIT_BRANCH = process.env.GITHUB_REF; - return env + return env; } export function run( @@ -45,56 +45,56 @@ export function run( coverageCommand: string = DEFAULT_COVERAGE_COMMAND ): Promise { return new Promise(async (resolve, reject) => { - let lastExitCode = 1 + let lastExitCode = 1; try { - debug(`ℹ️ Downloading CC Reporter from ${downloadUrl} ...`) - await downloadToFile(downloadUrl, executable) - debug('✅ CC Reporter downloaded...') + debug(`ℹ️ Downloading CC Reporter from ${downloadUrl} ...`); + await downloadToFile(downloadUrl, executable); + debug('✅ CC Reporter downloaded...'); } catch (err) { - error(err.message) - setFailed('🚨 CC Reporter download failed!') - return reject(err) + error(err.message); + setFailed('🚨 CC Reporter download failed!'); + return reject(err); } const execOpts: ExecOptions = { env: prepareEnv() - } + }; try { - lastExitCode = await exec(executable, ['before-build'], execOpts) - debug('✅ CC Reporter before-build checkin completed...') + lastExitCode = await exec(executable, ['before-build'], execOpts); + debug('✅ CC Reporter before-build checkin completed...'); } catch (err) { - error(err) - setFailed('🚨 CC Reporter before-build checkin failed!') - return reject(err) + error(err); + setFailed('🚨 CC Reporter before-build checkin failed!'); + return reject(err); } try { - lastExitCode = await exec(coverageCommand, undefined, execOpts) + lastExitCode = await exec(coverageCommand, undefined, execOpts); if (lastExitCode !== 0) { - throw new Error(`Coverage run exited with code ${lastExitCode}`) + throw new Error(`Coverage run exited with code ${lastExitCode}`); } - debug('✅ Coverage run completed...') + debug('✅ Coverage run completed...'); } catch (err) { - error(err) - setFailed('🚨 Coverage run failed!') - return reject(err) + error(err); + setFailed('🚨 Coverage run failed!'); + return reject(err); } try { await exec( executable, ['after-build', '--exit-code', lastExitCode.toString()], execOpts - ) - debug('✅ CC Reporter after-build checkin completed!') - return resolve() + ); + debug('✅ CC Reporter after-build checkin completed!'); + return resolve(); } catch (err) { - error(err) - setFailed('🚨 CC Reporter before-build checkin failed!') - return reject(err) + error(err); + setFailed('🚨 CC Reporter before-build checkin failed!'); + return reject(err); } - }) + }); } if (!module.parent) { - let coverageCommand = getInput('coverageCommand', { required: false }) - if (!coverageCommand.length) coverageCommand = DEFAULT_COVERAGE_COMMAND - run(DOWNLOAD_URL, EXECUTABLE, coverageCommand) + let coverageCommand = getInput('coverageCommand', { required: false }); + if (!coverageCommand.length) coverageCommand = DEFAULT_COVERAGE_COMMAND; + run(DOWNLOAD_URL, EXECUTABLE, coverageCommand); }