diff --git a/lib/resolve-environment-action.js b/lib/resolve-environment-action.js index 75dd52a29..471574db0 100644 --- a/lib/resolve-environment-action.js +++ b/lib/resolve-environment-action.js @@ -24,16 +24,46 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const core = __importStar(require("@actions/core")); +const actions_util_1 = require("./actions-util"); +const api_client_1 = require("./api-client"); +const configUtils = __importStar(require("./config-utils")); +const languages_1 = require("./languages"); +const logging_1 = require("./logging"); +const resolve_environment_1 = require("./resolve-environment"); const util_1 = require("./util"); +const workflow_1 = require("./workflow"); +const actionName = "resolve-environment"; async function run() { - return; + const startedAt = new Date(); + const logger = (0, logging_1.getActionsLogger)(); + const language = (0, languages_1.resolveAlias)((0, actions_util_1.getRequiredInput)("language")); + try { + const workflowErrors = await (0, workflow_1.validateWorkflow)(logger); + if (!(await (0, actions_util_1.sendStatusReport)(await (0, actions_util_1.createStatusReportBase)(actionName, "starting", startedAt, workflowErrors)))) { + return; + } + const gitHubVersion = await (0, api_client_1.getGitHubVersion)(); + (0, util_1.checkGitHubVersionInRange)(gitHubVersion, logger); + const config = await configUtils.getConfig((0, actions_util_1.getTemporaryDirectory)(), logger); + if (config === undefined) { + throw new Error("Config file could not be found at expected location. Has the 'init' action been called?"); + } + const result = await (0, resolve_environment_1.runResolveBuildEnvironment)(config.codeQLCmd, logger, language); + core.setOutput("configuration", result); + } + catch (unwrappedError) { + const error = (0, util_1.wrapError)(unwrappedError); + core.setFailed(error.message); + await (0, actions_util_1.sendStatusReport)(await (0, actions_util_1.createStatusReportBase)(actionName, "aborted", startedAt, error.message, error.stack)); + return; + } } async function runWrapper() { try { await run(); } catch (error) { - core.setFailed(`resolve environment action failed: ${(0, util_1.wrapError)(error).message}`); + core.setFailed(`${actionName} action failed: ${(0, util_1.wrapError)(error).message}`); } await (0, util_1.checkForTimeout)(); } diff --git a/lib/resolve-environment-action.js.map b/lib/resolve-environment-action.js.map index 38fbe5875..c857f0bec 100644 --- a/lib/resolve-environment-action.js.map +++ b/lib/resolve-environment-action.js.map @@ -1 +1 @@ -{"version":3,"file":"resolve-environment-action.js","sourceRoot":"","sources":["../src/resolve-environment-action.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AAEtC,iCAAoD;AAEpD,KAAK,UAAU,GAAG;IAChB,OAAO;AACT,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI;QACF,MAAM,GAAG,EAAE,CAAC;KACb;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CACZ,sCAAsC,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CACjE,CAAC;KACH;IACD,MAAM,IAAA,sBAAe,GAAE,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"resolve-environment-action.js","sourceRoot":"","sources":["../src/resolve-environment-action.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AAEtC,iDAKwB;AACxB,6CAAgD;AAChD,4DAA8C;AAC9C,2CAAqD;AACrD,uCAA6C;AAC7C,+DAAmE;AACnE,iCAA+E;AAC/E,yCAA8C;AAE9C,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,KAAK,UAAU,GAAG;IAChB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAA,0BAAgB,GAAE,CAAC;IAClC,MAAM,QAAQ,GAAa,IAAA,wBAAY,EAAC,IAAA,+BAAgB,EAAC,UAAU,CAAC,CAAC,CAAC;IAEtE,IAAI;QACF,MAAM,cAAc,GAAG,MAAM,IAAA,2BAAgB,EAAC,MAAM,CAAC,CAAC;QAEtD,IACE,CAAC,CAAC,MAAM,IAAA,+BAAgB,EACtB,MAAM,IAAA,qCAAsB,EAC1B,UAAU,EACV,UAAU,EACV,SAAS,EACT,cAAc,CACf,CACF,CAAC,EACF;YACA,OAAO;SACR;QAED,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAgB,GAAE,CAAC;QAC/C,IAAA,gCAAyB,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAA,oCAAqB,GAAE,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;SACH;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,gDAA0B,EAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;KACzC;IAAC,OAAO,cAAc,EAAE;QACvB,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,IAAA,+BAAgB,EACpB,MAAM,IAAA,qCAAsB,EAC1B,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,CACZ,CACF,CAAC;QACF,OAAO;KACR;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI;QACF,MAAM,GAAG,EAAE,CAAC;KACb;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,mBAAmB,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC5E;IACD,MAAM,IAAA,sBAAe,GAAE,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"} \ No newline at end of file diff --git a/resolve-environment/action.yml b/resolve-environment/action.yml index e97468f25..ef000dceb 100644 --- a/resolve-environment/action.yml +++ b/resolve-environment/action.yml @@ -1,6 +1,13 @@ name: 'CodeQL: Resolve Build Environment' description: 'Attempt to infer a suitable environment configuration for the autobuilder' author: 'GitHub' +inputs: + language: + description: The language to infer the build environment configuration for. + required: true +outputs: + configuration: + description: The inferred build environment configuration. runs: using: 'node16' main: '../lib/resolve-environment-action.js' diff --git a/src/resolve-environment-action.ts b/src/resolve-environment-action.ts index 2aa32f518..5435909f7 100644 --- a/src/resolve-environment-action.ts +++ b/src/resolve-environment-action.ts @@ -1,18 +1,75 @@ import * as core from "@actions/core"; -import { checkForTimeout, wrapError } from "./util"; +import { + createStatusReportBase, + getRequiredInput, + getTemporaryDirectory, + sendStatusReport, +} from "./actions-util"; +import { getGitHubVersion } from "./api-client"; +import * as configUtils from "./config-utils"; +import { Language, resolveAlias } from "./languages"; +import { getActionsLogger } from "./logging"; +import { runResolveBuildEnvironment } from "./resolve-environment"; +import { checkForTimeout, checkGitHubVersionInRange, wrapError } from "./util"; +import { validateWorkflow } from "./workflow"; + +const actionName = "resolve-environment"; async function run() { - return; + const startedAt = new Date(); + const logger = getActionsLogger(); + const language: Language = resolveAlias(getRequiredInput("language")); + + try { + const workflowErrors = await validateWorkflow(logger); + + if ( + !(await sendStatusReport( + await createStatusReportBase( + actionName, + "starting", + startedAt, + workflowErrors + ) + )) + ) { + return; + } + + const gitHubVersion = await getGitHubVersion(); + checkGitHubVersionInRange(gitHubVersion, logger); + + const config = await configUtils.getConfig(getTemporaryDirectory(), logger); + if (config === undefined) { + throw new Error( + "Config file could not be found at expected location. Has the 'init' action been called?" + ); + } + + const result = await runResolveBuildEnvironment(config.codeQLCmd, logger, language); + core.setOutput("configuration", result); + } catch (unwrappedError) { + const error = wrapError(unwrappedError); + core.setFailed(error.message); + await sendStatusReport( + await createStatusReportBase( + actionName, + "aborted", + startedAt, + error.message, + error.stack + ) + ); + return; + } } async function runWrapper() { try { await run(); } catch (error) { - core.setFailed( - `resolve environment action failed: ${wrapError(error).message}` - ); + core.setFailed(`${actionName} action failed: ${wrapError(error).message}`); } await checkForTimeout(); }