diff --git a/lib/analyze-action.js b/lib/analyze-action.js index 182230563a..3e29b6c2c1 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -94111,7 +94111,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi action_ref: actionRef, action_started_at: actionStartedAt.toISOString(), action_version: getActionVersion(), - analysis_kinds: config?.analysisKinds.join(","), + analysis_kinds: config?.analysisKinds?.join(","), analysis_key, build_mode: config?.buildMode, commit_oid: commitOid, @@ -94134,7 +94134,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi logger.warning(`Could not determine the workflow event name: ${e}.`); } if (config) { - statusReport.languages = config.languages.join(","); + statusReport.languages = config.languages?.join(","); } if (diskInfo) { statusReport.runner_available_disk_space_bytes = diskInfo.numAvailableBytes; diff --git a/lib/autobuild-action.js b/lib/autobuild-action.js index acdcdd44d0..376db2e4de 100644 --- a/lib/autobuild-action.js +++ b/lib/autobuild-action.js @@ -79812,7 +79812,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi action_ref: actionRef, action_started_at: actionStartedAt.toISOString(), action_version: getActionVersion(), - analysis_kinds: config?.analysisKinds.join(","), + analysis_kinds: config?.analysisKinds?.join(","), analysis_key, build_mode: config?.buildMode, commit_oid: commitOid, @@ -79835,7 +79835,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi logger.warning(`Could not determine the workflow event name: ${e}.`); } if (config) { - statusReport.languages = config.languages.join(","); + statusReport.languages = config.languages?.join(","); } if (diskInfo) { statusReport.runner_available_disk_space_bytes = diskInfo.numAvailableBytes; diff --git a/lib/init-action-post.js b/lib/init-action-post.js index 3795e4c5d4..9f480cf7a8 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -131587,7 +131587,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi action_ref: actionRef, action_started_at: actionStartedAt.toISOString(), action_version: getActionVersion(), - analysis_kinds: config?.analysisKinds.join(","), + analysis_kinds: config?.analysisKinds?.join(","), analysis_key, build_mode: config?.buildMode, commit_oid: commitOid, @@ -131610,7 +131610,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi logger.warning(`Could not determine the workflow event name: ${e}.`); } if (config) { - statusReport.languages = config.languages.join(","); + statusReport.languages = config.languages?.join(","); } if (diskInfo) { statusReport.runner_available_disk_space_bytes = diskInfo.numAvailableBytes; diff --git a/lib/init-action.js b/lib/init-action.js index cc78a9e14c..5c1a810de9 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -90265,7 +90265,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi action_ref: actionRef, action_started_at: actionStartedAt.toISOString(), action_version: getActionVersion(), - analysis_kinds: config?.analysisKinds.join(","), + analysis_kinds: config?.analysisKinds?.join(","), analysis_key, build_mode: config?.buildMode, commit_oid: commitOid, @@ -90288,7 +90288,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi logger.warning(`Could not determine the workflow event name: ${e}.`); } if (config) { - statusReport.languages = config.languages.join(","); + statusReport.languages = config.languages?.join(","); } if (diskInfo) { statusReport.runner_available_disk_space_bytes = diskInfo.numAvailableBytes; diff --git a/lib/resolve-environment-action.js b/lib/resolve-environment-action.js index af32f15fac..d3dcf7a8eb 100644 --- a/lib/resolve-environment-action.js +++ b/lib/resolve-environment-action.js @@ -79439,7 +79439,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi action_ref: actionRef, action_started_at: actionStartedAt.toISOString(), action_version: getActionVersion(), - analysis_kinds: config?.analysisKinds.join(","), + analysis_kinds: config?.analysisKinds?.join(","), analysis_key, build_mode: config?.buildMode, commit_oid: commitOid, @@ -79462,7 +79462,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi logger.warning(`Could not determine the workflow event name: ${e}.`); } if (config) { - statusReport.languages = config.languages.join(","); + statusReport.languages = config.languages?.join(","); } if (diskInfo) { statusReport.runner_available_disk_space_bytes = diskInfo.numAvailableBytes; diff --git a/lib/start-proxy-action.js b/lib/start-proxy-action.js index a315dd2577..1437fef44d 100644 --- a/lib/start-proxy-action.js +++ b/lib/start-proxy-action.js @@ -95087,8 +95087,7 @@ var LANGUAGE_TO_REGISTRY_TYPE = { rust: ["cargo_registry"], go: ["goproxy_server", "git_source"] }; -function getCredentials(logger, registrySecrets, registriesCredentials, languageString) { - const language = languageString ? parseLanguage(languageString) : void 0; +function getCredentials(logger, registrySecrets, registriesCredentials, language) { const registryTypeForLanguage = language ? LANGUAGE_TO_REGISTRY_TYPE[language] : void 0; let credentialsStr; if (registriesCredentials !== void 0) { @@ -95589,7 +95588,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi action_ref: actionRef, action_started_at: actionStartedAt.toISOString(), action_version: getActionVersion(), - analysis_kinds: config?.analysisKinds.join(","), + analysis_kinds: config?.analysisKinds?.join(","), analysis_key, build_mode: config?.buildMode, commit_oid: commitOid, @@ -95612,7 +95611,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi logger.warning(`Could not determine the workflow event name: ${e}.`); } if (config) { - statusReport.languages = config.languages.join(","); + statusReport.languages = config.languages?.join(","); } if (diskInfo) { statusReport.runner_available_disk_space_bytes = diskInfo.numAvailableBytes; @@ -95755,12 +95754,12 @@ function generateCertificateAuthority() { const key = import_node_forge.pki.privateKeyToPem(keys.privateKey); return { cert: pem, key }; } -async function sendSuccessStatusReport(startedAt, registry_types, logger) { +async function sendSuccessStatusReport(startedAt, config, registry_types, logger) { const statusReportBase = await createStatusReportBase( "start-proxy" /* StartProxy */, "success", startedAt, - void 0, + config, await checkDiskUsage(logger), logger ); @@ -95776,15 +95775,18 @@ async function runWrapper() { const startedAt = /* @__PURE__ */ new Date(); persistInputs(); const logger = getActionsLogger(); + let language; try { const tempDir = getTemporaryDirectory(); const proxyLogFilePath = path.resolve(tempDir, "proxy.log"); core11.saveState("proxy-log-file", proxyLogFilePath); + const languageInput = getOptionalInput("language"); + language = languageInput ? parseLanguage(languageInput) : void 0; const credentials = getCredentials( logger, getOptionalInput("registry_secrets"), getOptionalInput("registries_credentials"), - getOptionalInput("language") + language ); if (credentials.length === 0) { logger.info("No credentials found, skipping proxy setup."); @@ -95803,6 +95805,9 @@ async function runWrapper() { await startProxy(proxyBin, proxyConfig, proxyLogFilePath, logger); await sendSuccessStatusReport( startedAt, + { + languages: language && [language] + }, proxyConfig.all_credentials.map((c) => c.type), logger ); @@ -95813,7 +95818,9 @@ async function runWrapper() { "start-proxy" /* StartProxy */, getActionsStatus(error2), startedAt, - void 0, + { + languages: language && [language] + }, await checkDiskUsage(logger), logger ); diff --git a/lib/upload-sarif-action.js b/lib/upload-sarif-action.js index 77c8baf84d..c9888f0965 100644 --- a/lib/upload-sarif-action.js +++ b/lib/upload-sarif-action.js @@ -89856,7 +89856,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi action_ref: actionRef, action_started_at: actionStartedAt.toISOString(), action_version: getActionVersion(), - analysis_kinds: config?.analysisKinds.join(","), + analysis_kinds: config?.analysisKinds?.join(","), analysis_key, build_mode: config?.buildMode, commit_oid: commitOid, @@ -89879,7 +89879,7 @@ async function createStatusReportBase(actionName, status, actionStartedAt, confi logger.warning(`Could not determine the workflow event name: ${e}.`); } if (config) { - statusReport.languages = config.languages.join(","); + statusReport.languages = config.languages?.join(","); } if (diskInfo) { statusReport.runner_available_disk_space_bytes = diskInfo.numAvailableBytes; diff --git a/src/start-proxy-action.ts b/src/start-proxy-action.ts index 966c954b44..013382716b 100644 --- a/src/start-proxy-action.ts +++ b/src/start-proxy-action.ts @@ -7,11 +7,14 @@ import { pki } from "node-forge"; import * as actionsUtil from "./actions-util"; import { getApiDetails, getAuthorizationHeaderFor } from "./api-client"; +import { Config } from "./config-utils"; +import { KnownLanguage } from "./languages"; import { getActionsLogger, Logger } from "./logging"; import { Credential, getCredentials, getDownloadUrl, + parseLanguage, UPDATEJOB_PROXY, } from "./start-proxy"; import { @@ -98,6 +101,7 @@ interface StartProxyStatus extends StatusReportBase { async function sendSuccessStatusReport( startedAt: Date, + config: Partial, registry_types: string[], logger: Logger, ) { @@ -105,7 +109,7 @@ async function sendSuccessStatusReport( ActionName.StartProxy, "success", startedAt, - undefined, + config, await util.checkDiskUsage(logger), logger, ); @@ -125,6 +129,7 @@ async function runWrapper() { actionsUtil.persistInputs(); const logger = getActionsLogger(); + let language: KnownLanguage | undefined; try { // Setup logging for the proxy @@ -133,11 +138,13 @@ async function runWrapper() { core.saveState("proxy-log-file", proxyLogFilePath); // Get the configuration options + const languageInput = actionsUtil.getOptionalInput("language"); + language = languageInput ? parseLanguage(languageInput) : undefined; const credentials = getCredentials( logger, actionsUtil.getOptionalInput("registry_secrets"), actionsUtil.getOptionalInput("registries_credentials"), - actionsUtil.getOptionalInput("language"), + language, ); if (credentials.length === 0) { @@ -165,6 +172,9 @@ async function runWrapper() { // Report success if we have reached this point. await sendSuccessStatusReport( startedAt, + { + languages: language && [language], + }, proxyConfig.all_credentials.map((c) => c.type), logger, ); @@ -178,7 +188,9 @@ async function runWrapper() { ActionName.StartProxy, getActionsStatus(error), startedAt, - undefined, + { + languages: language && [language], + }, await util.checkDiskUsage(logger), logger, ); diff --git a/src/start-proxy.test.ts b/src/start-proxy.test.ts index dfd55d72fc..edd1377c00 100644 --- a/src/start-proxy.test.ts +++ b/src/start-proxy.test.ts @@ -109,7 +109,7 @@ test("getCredentials filters by language when specified", async (t) => { getRunnerLogger(true), undefined, toEncodedJSON(mixedCredentials), - "java", + KnownLanguage.java, ); t.is(credentials.length, 1); t.is(credentials[0].type, "maven_repository"); @@ -120,7 +120,7 @@ test("getCredentials returns all for a language when specified", async (t) => { getRunnerLogger(true), undefined, toEncodedJSON(mixedCredentials), - "go", + KnownLanguage.go, ); t.is(credentials.length, 2); diff --git a/src/start-proxy.ts b/src/start-proxy.ts index dd1e443b76..2888e1a58d 100644 --- a/src/start-proxy.ts +++ b/src/start-proxy.ts @@ -79,9 +79,8 @@ export function getCredentials( logger: Logger, registrySecrets: string | undefined, registriesCredentials: string | undefined, - languageString: string | undefined, + language: KnownLanguage | undefined, ): Credential[] { - const language = languageString ? parseLanguage(languageString) : undefined; const registryTypeForLanguage = language ? LANGUAGE_TO_REGISTRY_TYPE[language] : undefined; diff --git a/src/status-report.test.ts b/src/status-report.test.ts index b535ef2126..8421dcceef 100644 --- a/src/status-report.test.ts +++ b/src/status-report.test.ts @@ -92,6 +92,49 @@ test("createStatusReportBase", async (t) => { }); }); +test("createStatusReportBase - empty configuration", async (t) => { + await withTmpDir(async (tmpDir: string) => { + setupEnvironmentAndStub(tmpDir); + + const statusReport = await createStatusReportBase( + ActionName.StartProxy, + "success", + new Date("May 19, 2023 05:19:00"), + {}, + { numAvailableBytes: 100, numTotalBytes: 500 }, + getRunnerLogger(false), + ); + + if (t.truthy(statusReport)) { + t.is(statusReport.action_name, ActionName.StartProxy); + t.is(statusReport.status, "success"); + } + }); +}); + +test("createStatusReportBase - partial configuration", async (t) => { + await withTmpDir(async (tmpDir: string) => { + setupEnvironmentAndStub(tmpDir); + + const statusReport = await createStatusReportBase( + ActionName.StartProxy, + "success", + new Date("May 19, 2023 05:19:00"), + { + languages: ["go"], + }, + { numAvailableBytes: 100, numTotalBytes: 500 }, + getRunnerLogger(false), + ); + + if (t.truthy(statusReport)) { + t.is(statusReport.action_name, ActionName.StartProxy); + t.is(statusReport.status, "success"); + t.is(statusReport.languages, "go"); + } + }); +}); + test("createStatusReportBase_firstParty", async (t) => { await withTmpDir(async (tmpDir: string) => { setupEnvironmentAndStub(tmpDir); diff --git a/src/status-report.ts b/src/status-report.ts index 9bfd14677d..46b16a5ef1 100644 --- a/src/status-report.ts +++ b/src/status-report.ts @@ -260,7 +260,7 @@ export async function createStatusReportBase( actionName: ActionName, status: ActionStatus, actionStartedAt: Date, - config: Config | undefined, + config: Partial | undefined, diskInfo: DiskUsage | undefined, logger: Logger, cause?: string, @@ -299,7 +299,7 @@ export async function createStatusReportBase( action_ref: actionRef, action_started_at: actionStartedAt.toISOString(), action_version: getActionVersion(), - analysis_kinds: config?.analysisKinds.join(","), + analysis_kinds: config?.analysisKinds?.join(","), analysis_key, build_mode: config?.buildMode, commit_oid: commitOid, @@ -324,7 +324,7 @@ export async function createStatusReportBase( } if (config) { - statusReport.languages = config.languages.join(","); + statusReport.languages = config.languages?.join(","); } if (diskInfo) {