diff --git a/lib/init-action-post.js b/lib/init-action-post.js index 42985a5d80..ebb33f2cb9 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -129786,6 +129786,9 @@ function appendExtraQueryExclusions(extraQueryExclusions, cliConfig) { } return augmentedConfig; } +function isCodeScanningEnabled(config) { + return config.analysisKinds.includes("code-scanning" /* CodeScanning */); +} // src/setup-codeql.ts var fs12 = __toESM(require("fs")); @@ -133750,6 +133753,11 @@ async function tryUploadSarifIfRunFailed(config, repositoryNwo, features, logger "CODEQL_ACTION_JOB_STATUS" /* JOB_STATUS */, process.env["CODEQL_ACTION_JOB_STATUS" /* JOB_STATUS */] ?? "JOB_STATUS_CONFIGURATION_ERROR" /* ConfigErrorStatus */ ); + if (!isCodeScanningEnabled(config)) { + return { + upload_failed_run_skipped_because: "Code Scanning is not enabled." + }; + } try { return await maybeUploadFailedSarif( config, diff --git a/src/init-action-post-helper.test.ts b/src/init-action-post-helper.test.ts index 1c1cbcb684..b0afb9b8b9 100644 --- a/src/init-action-post-helper.test.ts +++ b/src/init-action-post-helper.test.ts @@ -2,6 +2,7 @@ import test, { ExecutionContext } from "ava"; import * as sinon from "sinon"; import * as actionsUtil from "./actions-util"; +import { AnalysisKind } from "./analyses"; import * as codeql from "./codeql"; import * as configUtils from "./config-utils"; import { Feature } from "./feature-flags"; @@ -28,12 +29,13 @@ test("post: init action with debug mode off", async (t) => { const gitHubVersion: util.GitHubVersion = { type: util.GitHubVariant.DOTCOM, }; - sinon.stub(configUtils, "getConfig").resolves({ - debugMode: false, - gitHubVersion, - languages: [], - packs: [], - } as unknown as configUtils.Config); + sinon.stub(configUtils, "getConfig").resolves( + createTestConfig({ + debugMode: false, + gitHubVersion, + languages: [], + }), + ); const uploadAllAvailableDebugArtifactsSpy = sinon.spy(); const printDebugLogsSpy = sinon.spy(); @@ -295,6 +297,17 @@ test("uploading failed SARIF run fails when workflow does not reference github/c t.truthy(result.upload_failed_run_stack_trace); }); +test("not uploading failed SARIF when `code-scanning` is not an enabled analysis kind", async (t) => { + const result = await testFailedSarifUpload(t, createTestWorkflow([]), { + analysisKinds: [AnalysisKind.CodeQuality], + expectUpload: false, + }); + t.is( + result.upload_failed_run_skipped_because, + "Code Scanning is not enabled.", + ); +}); + function createTestWorkflow( steps: workflow.WorkflowJobStep[], ): workflow.Workflow { @@ -327,20 +340,22 @@ async function testFailedSarifUpload( expectUpload = true, exportDiagnosticsEnabled = false, matrix = {}, + analysisKinds = [AnalysisKind.CodeScanning], }: { category?: string; databaseExists?: boolean; expectUpload?: boolean; exportDiagnosticsEnabled?: boolean; matrix?: { [key: string]: string }; + analysisKinds?: AnalysisKind[]; } = {}, ): Promise { - const config = { + const config = createTestConfig({ + analysisKinds, codeQLCmd: "codeql", debugMode: true, languages: [], - packs: [], - } as unknown as configUtils.Config; + }); if (databaseExists) { config.dbLocation = "path/to/database"; } diff --git a/src/init-action-post-helper.ts b/src/init-action-post-helper.ts index 7d46095e91..68bfda9a29 100644 --- a/src/init-action-post-helper.ts +++ b/src/init-action-post-helper.ts @@ -7,7 +7,7 @@ import * as actionsUtil from "./actions-util"; import { CodeScanning } from "./analyses"; import { getApiClient } from "./api-client"; import { CodeQL, getCodeQL } from "./codeql"; -import { Config } from "./config-utils"; +import { Config, isCodeScanningEnabled } from "./config-utils"; import * as dependencyCaching from "./dependency-caching"; import { EnvVar } from "./environment"; import { Feature, FeatureEnablement } from "./feature-flags"; @@ -139,6 +139,15 @@ export async function tryUploadSarifIfRunFailed( EnvVar.JOB_STATUS, process.env[EnvVar.JOB_STATUS] ?? JobStatus.ConfigErrorStatus, ); + + // If the only enabled analysis kind is `code-quality`, then we shouldn't + // upload the failed SARIF to Code Scanning. + if (!isCodeScanningEnabled(config)) { + return { + upload_failed_run_skipped_because: "Code Scanning is not enabled.", + }; + } + try { return await maybeUploadFailedSarif( config,