diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 3c6d14f717..2e552907f1 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -34,7 +34,7 @@ Products: Environments: -- **Dotcom** - Impacts CodeQL workflows on `github.com`. +- **Dotcom** - Impacts CodeQL workflows on `github.com` and/or GitHub Enterprise Cloud with Data Residency. - **GHES** - Impacts CodeQL workflows on GitHub Enterprise Server. - **Testing/None** - This change does not impact any CodeQL workflows in production. diff --git a/lib/analyze-action-post.js b/lib/analyze-action-post.js index 37725d00bf..51b4712f18 100644 --- a/lib/analyze-action-post.js +++ b/lib/analyze-action-post.js @@ -119256,7 +119256,7 @@ function parseGitHubUrl(inputUrl) { var CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = "CODEQL_ACTION_WARNED_ABOUT_VERSION"; var hasBeenWarnedAboutVersion = false; function checkGitHubVersionInRange(version, logger) { - if (hasBeenWarnedAboutVersion || version.type !== 1 /* GHES */) { + if (hasBeenWarnedAboutVersion || version.type !== "GitHub Enterprise Server" /* GHES */) { return; } const disallowedAPIVersionReason = apiVersionInRange( @@ -119458,17 +119458,17 @@ function getApiClient() { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -120965,7 +120965,7 @@ async function uploadDebugArtifacts(logger, toUpload, rootDir, artifactName, ghV } } async function getArtifactUploaderClient(logger, ghVariant) { - if (ghVariant === 1 /* GHES */) { + if (ghVariant === "GitHub Enterprise Server" /* GHES */) { logger.info( "Debug artifacts can be consumed with `actions/download-artifact@v3` because the `v4` version is not yet compatible on GHES." ); diff --git a/lib/analyze-action.js b/lib/analyze-action.js index 8206afce01..861dc55db9 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -87417,7 +87417,7 @@ async function checkDiskUsage(logger) { function checkActionVersion(version, githubVersion) { if (!semver.satisfies(version, ">=4") && // do not log error if the customer is already running v4 !process.env["CODEQL_ACTION_DID_LOG_VERSION_DEPRECATION" /* LOG_VERSION_DEPRECATION */]) { - if (githubVersion.type === 0 /* DOTCOM */ || githubVersion.type === 2 /* GHE_DOTCOM */ || githubVersion.type === 1 /* GHES */ && semver.satisfies( + if (githubVersion.type === "GitHub.com" /* DOTCOM */ || githubVersion.type === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ || githubVersion.type === "GitHub Enterprise Server" /* GHES */ && semver.satisfies( semver.coerce(githubVersion.version) ?? "0.0.0", ">=3.20" )) { @@ -87793,17 +87793,17 @@ function getAuthorizationHeaderFor(logger, apiDetails, url2) { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -88945,15 +88945,15 @@ var GitHubFeatureFlags = class { return version; } async getDefaultCliVersion(variant) { - if (variant === 0 /* DOTCOM */) { - return await this.getDefaultDotcomCliVersion(); + if (supportsFeatureFlags(variant)) { + return await this.getDefaultCliVersionFromFlags(); } return { cliVersion, tagName: bundleVersion }; } - async getDefaultDotcomCliVersion() { + async getDefaultCliVersionFromFlags() { const response = await this.getAllFeatures(); const enabledFeatureFlagCliVersions = Object.entries(response).map( ([f, isEnabled]) => isEnabled ? this.getCliVersionFromFeatureFlag(f) : void 0 @@ -89042,7 +89042,7 @@ var GitHubFeatureFlags = class { } } async loadApiResponse() { - if (this.gitHubVersion.type !== 0 /* DOTCOM */ && this.gitHubVersion.type !== 2 /* GHE_DOTCOM */) { + if (!supportsFeatureFlags(this.gitHubVersion.type)) { this.logger.debug( "Not running against github.com. Disabling all toggleable features." ); @@ -89095,6 +89095,9 @@ var GitHubFeatureFlags = class { } } }; +function supportsFeatureFlags(githubVariant) { + return githubVariant === "GitHub.com" /* DOTCOM */ || githubVariant === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */; +} // src/diff-informed-analysis-utils.ts async function getDiffInformedAnalysisBranches(codeql, features, logger) { @@ -89102,7 +89105,7 @@ async function getDiffInformedAnalysisBranches(codeql, features, logger) { return void 0; } const gitHubVersion = await getGitHubVersion(); - if (gitHubVersion.type === 1 /* GHES */ && satisfiesGHESVersion(gitHubVersion.version, "<3.19", true)) { + if (gitHubVersion.type === "GitHub Enterprise Server" /* GHES */ && satisfiesGHESVersion(gitHubVersion.version, "<3.19", true)) { return void 0; } const branches = getPullRequestBranches(); @@ -90134,7 +90137,7 @@ async function getCodeQLSource(toolsInput, defaultCliVersion, apiDetails, varian toolsVersion: cliVersion2 ?? humanReadableVersion }; } - if (variant !== 0 /* DOTCOM */ && !forceShippedTools && !toolsInput) { + if (variant === "GitHub Enterprise Server" /* GHES */ && !forceShippedTools && !toolsInput) { const result = await findOverridingToolsInCache( humanReadableVersion, logger @@ -91686,7 +91689,7 @@ async function cleanupAndUploadDatabases(repositoryNwo, codeql, config, apiDetai logger.debug("In test mode. Skipping database upload."); return; } - if (config.gitHubVersion.type !== 0 /* DOTCOM */ && config.gitHubVersion.type !== 2 /* GHE_DOTCOM */) { + if (config.gitHubVersion.type !== "GitHub.com" /* DOTCOM */ && config.gitHubVersion.type !== "GitHub Enterprise Cloud with data residency" /* GHEC_DR */) { logger.debug("Not running against github.com or GHEC-DR. Skipping upload."); return; } @@ -93140,7 +93143,7 @@ function areAllRunsUnique(sarifObjects) { return true; } async function shouldShowCombineSarifFilesDeprecationWarning(sarifObjects, githubVersion) { - if (githubVersion.type === 1 /* GHES */ && satisfiesGHESVersion(githubVersion.version, "<3.14", true)) { + if (githubVersion.type === "GitHub Enterprise Server" /* GHES */ && satisfiesGHESVersion(githubVersion.version, "<3.14", true)) { return false; } return !areAllRunsUnique(sarifObjects) && !process.env.CODEQL_MERGE_SARIF_DEPRECATION_WARNING; @@ -93155,7 +93158,7 @@ async function throwIfCombineSarifFilesDisabled(sarifObjects, githubVersion) { ); } async function shouldDisableCombineSarifFiles(sarifObjects, githubVersion) { - if (githubVersion.type === 1 /* GHES */) { + if (githubVersion.type === "GitHub Enterprise Server" /* GHES */) { if (satisfiesGHESVersion(githubVersion.version, "<3.18", true)) { return false; } @@ -93170,7 +93173,7 @@ async function combineSarifFilesUsingCLI(sarifFiles, gitHubVersion, features, lo const sarifObjects = sarifFiles.map((sarifFile) => { return JSON.parse(fs15.readFileSync(sarifFile, "utf8")); }); - const deprecationWarningMessage = gitHubVersion.type === 1 /* GHES */ ? "and will be removed in GitHub Enterprise Server 3.18" : "and will be removed in July 2025"; + const deprecationWarningMessage = gitHubVersion.type === "GitHub Enterprise Server" /* GHES */ ? "and will be removed in GitHub Enterprise Server 3.18" : "and will be removed in July 2025"; const deprecationMoreInformationMessage = "For more information, see https://github.blog/changelog/2024-05-06-code-scanning-will-stop-combining-runs-from-a-single-upload"; if (!areAllRunsProducedByCodeQL(sarifObjects)) { await throwIfCombineSarifFilesDisabled(sarifObjects, gitHubVersion); diff --git a/lib/autobuild-action.js b/lib/autobuild-action.js index d4b7fc1f6d..4c913bb505 100644 --- a/lib/autobuild-action.js +++ b/lib/autobuild-action.js @@ -83034,7 +83034,7 @@ function parseGitHubUrl(inputUrl) { var CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = "CODEQL_ACTION_WARNED_ABOUT_VERSION"; var hasBeenWarnedAboutVersion = false; function checkGitHubVersionInRange(version, logger) { - if (hasBeenWarnedAboutVersion || version.type !== 1 /* GHES */) { + if (hasBeenWarnedAboutVersion || version.type !== "GitHub Enterprise Server" /* GHES */) { return; } const disallowedAPIVersionReason = apiVersionInRange( @@ -83161,7 +83161,7 @@ async function checkDiskUsage(logger) { function checkActionVersion(version, githubVersion) { if (!semver.satisfies(version, ">=4") && // do not log error if the customer is already running v4 !process.env["CODEQL_ACTION_DID_LOG_VERSION_DEPRECATION" /* LOG_VERSION_DEPRECATION */]) { - if (githubVersion.type === 0 /* DOTCOM */ || githubVersion.type === 2 /* GHE_DOTCOM */ || githubVersion.type === 1 /* GHES */ && semver.satisfies( + if (githubVersion.type === "GitHub.com" /* DOTCOM */ || githubVersion.type === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ || githubVersion.type === "GitHub Enterprise Server" /* GHES */ && semver.satisfies( semver.coerce(githubVersion.version) ?? "0.0.0", ">=3.20" )) { @@ -83367,17 +83367,17 @@ function getApiClient() { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -84264,15 +84264,15 @@ var GitHubFeatureFlags = class { return version; } async getDefaultCliVersion(variant) { - if (variant === 0 /* DOTCOM */) { - return await this.getDefaultDotcomCliVersion(); + if (supportsFeatureFlags(variant)) { + return await this.getDefaultCliVersionFromFlags(); } return { cliVersion, tagName: bundleVersion }; } - async getDefaultDotcomCliVersion() { + async getDefaultCliVersionFromFlags() { const response = await this.getAllFeatures(); const enabledFeatureFlagCliVersions = Object.entries(response).map( ([f, isEnabled]) => isEnabled ? this.getCliVersionFromFeatureFlag(f) : void 0 @@ -84361,7 +84361,7 @@ var GitHubFeatureFlags = class { } } async loadApiResponse() { - if (this.gitHubVersion.type !== 0 /* DOTCOM */ && this.gitHubVersion.type !== 2 /* GHE_DOTCOM */) { + if (!supportsFeatureFlags(this.gitHubVersion.type)) { this.logger.debug( "Not running against github.com. Disabling all toggleable features." ); @@ -84414,6 +84414,9 @@ var GitHubFeatureFlags = class { } } }; +function supportsFeatureFlags(githubVariant) { + return githubVariant === "GitHub.com" /* DOTCOM */ || githubVariant === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */; +} // src/trap-caching.ts var actionsCache2 = __toESM(require_cache3()); diff --git a/lib/init-action-post.js b/lib/init-action-post.js index 62e78df8a5..587ca4b774 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -122166,7 +122166,7 @@ function parseGitHubUrl(inputUrl) { var CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = "CODEQL_ACTION_WARNED_ABOUT_VERSION"; var hasBeenWarnedAboutVersion = false; function checkGitHubVersionInRange(version, logger) { - if (hasBeenWarnedAboutVersion || version.type !== 1 /* GHES */) { + if (hasBeenWarnedAboutVersion || version.type !== "GitHub Enterprise Server" /* GHES */) { return; } const disallowedAPIVersionReason = apiVersionInRange( @@ -122668,17 +122668,17 @@ function getAuthorizationHeaderFor(logger, apiDetails, url2) { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -123705,15 +123705,15 @@ var GitHubFeatureFlags = class { return version; } async getDefaultCliVersion(variant) { - if (variant === 0 /* DOTCOM */) { - return await this.getDefaultDotcomCliVersion(); + if (supportsFeatureFlags(variant)) { + return await this.getDefaultCliVersionFromFlags(); } return { cliVersion, tagName: bundleVersion }; } - async getDefaultDotcomCliVersion() { + async getDefaultCliVersionFromFlags() { const response = await this.getAllFeatures(); const enabledFeatureFlagCliVersions = Object.entries(response).map( ([f, isEnabled]) => isEnabled ? this.getCliVersionFromFeatureFlag(f) : void 0 @@ -123802,7 +123802,7 @@ var GitHubFeatureFlags = class { } } async loadApiResponse() { - if (this.gitHubVersion.type !== 0 /* DOTCOM */ && this.gitHubVersion.type !== 2 /* GHE_DOTCOM */) { + if (!supportsFeatureFlags(this.gitHubVersion.type)) { this.logger.debug( "Not running against github.com. Disabling all toggleable features." ); @@ -123855,6 +123855,9 @@ var GitHubFeatureFlags = class { } } }; +function supportsFeatureFlags(githubVariant) { + return githubVariant === "GitHub.com" /* DOTCOM */ || githubVariant === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */; +} // src/diff-informed-analysis-utils.ts function getDiffRangesJsonFilePath() { @@ -124630,7 +124633,7 @@ async function getCodeQLSource(toolsInput, defaultCliVersion, apiDetails, varian toolsVersion: cliVersion2 ?? humanReadableVersion }; } - if (variant !== 0 /* DOTCOM */ && !forceShippedTools && !toolsInput) { + if (variant === "GitHub Enterprise Server" /* GHES */ && !forceShippedTools && !toolsInput) { const result = await findOverridingToolsInCache( humanReadableVersion, logger @@ -125688,7 +125691,7 @@ async function uploadDebugArtifacts(logger, toUpload, rootDir, artifactName, ghV } } async function getArtifactUploaderClient(logger, ghVariant) { - if (ghVariant === 1 /* GHES */) { + if (ghVariant === "GitHub Enterprise Server" /* GHES */) { logger.info( "Debug artifacts can be consumed with `actions/download-artifact@v3` because the `v4` version is not yet compatible on GHES." ); @@ -127162,7 +127165,7 @@ function areAllRunsUnique(sarifObjects) { return true; } async function shouldShowCombineSarifFilesDeprecationWarning(sarifObjects, githubVersion) { - if (githubVersion.type === 1 /* GHES */ && satisfiesGHESVersion(githubVersion.version, "<3.14", true)) { + if (githubVersion.type === "GitHub Enterprise Server" /* GHES */ && satisfiesGHESVersion(githubVersion.version, "<3.14", true)) { return false; } return !areAllRunsUnique(sarifObjects) && !process.env.CODEQL_MERGE_SARIF_DEPRECATION_WARNING; @@ -127177,7 +127180,7 @@ async function throwIfCombineSarifFilesDisabled(sarifObjects, githubVersion) { ); } async function shouldDisableCombineSarifFiles(sarifObjects, githubVersion) { - if (githubVersion.type === 1 /* GHES */) { + if (githubVersion.type === "GitHub Enterprise Server" /* GHES */) { if (satisfiesGHESVersion(githubVersion.version, "<3.18", true)) { return false; } @@ -127192,7 +127195,7 @@ async function combineSarifFilesUsingCLI(sarifFiles, gitHubVersion, features, lo const sarifObjects = sarifFiles.map((sarifFile) => { return JSON.parse(fs14.readFileSync(sarifFile, "utf8")); }); - const deprecationWarningMessage = gitHubVersion.type === 1 /* GHES */ ? "and will be removed in GitHub Enterprise Server 3.18" : "and will be removed in July 2025"; + const deprecationWarningMessage = gitHubVersion.type === "GitHub Enterprise Server" /* GHES */ ? "and will be removed in GitHub Enterprise Server 3.18" : "and will be removed in July 2025"; const deprecationMoreInformationMessage = "For more information, see https://github.blog/changelog/2024-05-06-code-scanning-will-stop-combining-runs-from-a-single-upload"; if (!areAllRunsProducedByCodeQL(sarifObjects)) { await throwIfCombineSarifFilesDisabled(sarifObjects, gitHubVersion); diff --git a/lib/init-action.js b/lib/init-action.js index 185510e02e..4823f173fd 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -84534,7 +84534,7 @@ function parseGitHubUrl(inputUrl) { var CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = "CODEQL_ACTION_WARNED_ABOUT_VERSION"; var hasBeenWarnedAboutVersion = false; function checkGitHubVersionInRange(version, logger) { - if (hasBeenWarnedAboutVersion || version.type !== 1 /* GHES */) { + if (hasBeenWarnedAboutVersion || version.type !== "GitHub Enterprise Server" /* GHES */) { return; } const disallowedAPIVersionReason = apiVersionInRange( @@ -84738,7 +84738,7 @@ async function checkDiskUsage(logger) { function checkActionVersion(version, githubVersion) { if (!semver.satisfies(version, ">=4") && // do not log error if the customer is already running v4 !process.env["CODEQL_ACTION_DID_LOG_VERSION_DEPRECATION" /* LOG_VERSION_DEPRECATION */]) { - if (githubVersion.type === 0 /* DOTCOM */ || githubVersion.type === 2 /* GHE_DOTCOM */ || githubVersion.type === 1 /* GHES */ && semver.satisfies( + if (githubVersion.type === "GitHub.com" /* DOTCOM */ || githubVersion.type === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ || githubVersion.type === "GitHub Enterprise Server" /* GHES */ && semver.satisfies( semver.coerce(githubVersion.version) ?? "0.0.0", ">=3.20" )) { @@ -85118,17 +85118,17 @@ function getAuthorizationHeaderFor(logger, apiDetails, url) { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -85350,7 +85350,7 @@ var RepositoryPropertyName = /* @__PURE__ */ ((RepositoryPropertyName2) => { return RepositoryPropertyName2; })(RepositoryPropertyName || {}); async function loadPropertiesFromApi(gitHubVersion, logger, repositoryNwo) { - if (gitHubVersion.type === 1 /* GHES */) { + if (gitHubVersion.type === "GitHub Enterprise Server" /* GHES */) { return {}; } try { @@ -86359,15 +86359,15 @@ var GitHubFeatureFlags = class { return version; } async getDefaultCliVersion(variant) { - if (variant === 0 /* DOTCOM */) { - return await this.getDefaultDotcomCliVersion(); + if (supportsFeatureFlags(variant)) { + return await this.getDefaultCliVersionFromFlags(); } return { cliVersion, tagName: bundleVersion }; } - async getDefaultDotcomCliVersion() { + async getDefaultCliVersionFromFlags() { const response = await this.getAllFeatures(); const enabledFeatureFlagCliVersions = Object.entries(response).map( ([f, isEnabled]) => isEnabled ? this.getCliVersionFromFeatureFlag(f) : void 0 @@ -86456,7 +86456,7 @@ var GitHubFeatureFlags = class { } } async loadApiResponse() { - if (this.gitHubVersion.type !== 0 /* DOTCOM */ && this.gitHubVersion.type !== 2 /* GHE_DOTCOM */) { + if (!supportsFeatureFlags(this.gitHubVersion.type)) { this.logger.debug( "Not running against github.com. Disabling all toggleable features." ); @@ -86509,6 +86509,9 @@ var GitHubFeatureFlags = class { } } }; +function supportsFeatureFlags(githubVariant) { + return githubVariant === "GitHub.com" /* DOTCOM */ || githubVariant === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */; +} // src/diff-informed-analysis-utils.ts async function shouldPerformDiffInformedAnalysis(codeql, features, logger) { @@ -86519,7 +86522,7 @@ async function getDiffInformedAnalysisBranches(codeql, features, logger) { return void 0; } const gitHubVersion = await getGitHubVersion(); - if (gitHubVersion.type === 1 /* GHES */ && satisfiesGHESVersion(gitHubVersion.version, "<3.19", true)) { + if (gitHubVersion.type === "GitHub Enterprise Server" /* GHES */ && satisfiesGHESVersion(gitHubVersion.version, "<3.19", true)) { return void 0; } const branches = getPullRequestBranches(); @@ -88382,7 +88385,7 @@ async function getCodeQLSource(toolsInput, defaultCliVersion, apiDetails, varian toolsVersion: cliVersion2 ?? humanReadableVersion }; } - if (variant !== 0 /* DOTCOM */ && !forceShippedTools && !toolsInput) { + if (variant === "GitHub Enterprise Server" /* GHES */ && !forceShippedTools && !toolsInput) { const result = await findOverridingToolsInCache( humanReadableVersion, logger diff --git a/lib/resolve-environment-action.js b/lib/resolve-environment-action.js index cd65a4bf1c..f9bfcf554f 100644 --- a/lib/resolve-environment-action.js +++ b/lib/resolve-environment-action.js @@ -83034,7 +83034,7 @@ function parseGitHubUrl(inputUrl) { var CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = "CODEQL_ACTION_WARNED_ABOUT_VERSION"; var hasBeenWarnedAboutVersion = false; function checkGitHubVersionInRange(version, logger) { - if (hasBeenWarnedAboutVersion || version.type !== 1 /* GHES */) { + if (hasBeenWarnedAboutVersion || version.type !== "GitHub Enterprise Server" /* GHES */) { return; } const disallowedAPIVersionReason = apiVersionInRange( @@ -83173,7 +83173,7 @@ async function checkDiskUsage(logger) { function checkActionVersion(version, githubVersion) { if (!semver.satisfies(version, ">=4") && // do not log error if the customer is already running v4 !process.env["CODEQL_ACTION_DID_LOG_VERSION_DEPRECATION" /* LOG_VERSION_DEPRECATION */]) { - if (githubVersion.type === 0 /* DOTCOM */ || githubVersion.type === 2 /* GHE_DOTCOM */ || githubVersion.type === 1 /* GHES */ && semver.satisfies( + if (githubVersion.type === "GitHub.com" /* DOTCOM */ || githubVersion.type === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ || githubVersion.type === "GitHub Enterprise Server" /* GHES */ && semver.satisfies( semver.coerce(githubVersion.version) ?? "0.0.0", ">=3.20" )) { @@ -83375,17 +83375,17 @@ function getApiClient() { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { diff --git a/lib/setup-codeql-action.js b/lib/setup-codeql-action.js index 780d2cc6de..1522749770 100644 --- a/lib/setup-codeql-action.js +++ b/lib/setup-codeql-action.js @@ -83091,7 +83091,7 @@ function parseGitHubUrl(inputUrl) { var CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = "CODEQL_ACTION_WARNED_ABOUT_VERSION"; var hasBeenWarnedAboutVersion = false; function checkGitHubVersionInRange(version, logger) { - if (hasBeenWarnedAboutVersion || version.type !== 1 /* GHES */) { + if (hasBeenWarnedAboutVersion || version.type !== "GitHub Enterprise Server" /* GHES */) { return; } const disallowedAPIVersionReason = apiVersionInRange( @@ -83249,7 +83249,7 @@ async function checkDiskUsage(logger) { function checkActionVersion(version, githubVersion) { if (!semver.satisfies(version, ">=4") && // do not log error if the customer is already running v4 !process.env["CODEQL_ACTION_DID_LOG_VERSION_DEPRECATION" /* LOG_VERSION_DEPRECATION */]) { - if (githubVersion.type === 0 /* DOTCOM */ || githubVersion.type === 2 /* GHE_DOTCOM */ || githubVersion.type === 1 /* GHES */ && semver.satisfies( + if (githubVersion.type === "GitHub.com" /* DOTCOM */ || githubVersion.type === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ || githubVersion.type === "GitHub Enterprise Server" /* GHES */ && semver.satisfies( semver.coerce(githubVersion.version) ?? "0.0.0", ">=3.20" )) { @@ -83492,17 +83492,17 @@ function getAuthorizationHeaderFor(logger, apiDetails, url) { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -84167,15 +84167,15 @@ var GitHubFeatureFlags = class { return version; } async getDefaultCliVersion(variant) { - if (variant === 0 /* DOTCOM */) { - return await this.getDefaultDotcomCliVersion(); + if (supportsFeatureFlags(variant)) { + return await this.getDefaultCliVersionFromFlags(); } return { cliVersion, tagName: bundleVersion }; } - async getDefaultDotcomCliVersion() { + async getDefaultCliVersionFromFlags() { const response = await this.getAllFeatures(); const enabledFeatureFlagCliVersions = Object.entries(response).map( ([f, isEnabled]) => isEnabled ? this.getCliVersionFromFeatureFlag(f) : void 0 @@ -84264,7 +84264,7 @@ var GitHubFeatureFlags = class { } } async loadApiResponse() { - if (this.gitHubVersion.type !== 0 /* DOTCOM */ && this.gitHubVersion.type !== 2 /* GHE_DOTCOM */) { + if (!supportsFeatureFlags(this.gitHubVersion.type)) { this.logger.debug( "Not running against github.com. Disabling all toggleable features." ); @@ -84317,6 +84317,9 @@ var GitHubFeatureFlags = class { } } }; +function supportsFeatureFlags(githubVariant) { + return githubVariant === "GitHub.com" /* DOTCOM */ || githubVariant === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */; +} // src/init.ts var toolrunner4 = __toESM(require_toolrunner()); @@ -85261,7 +85264,7 @@ async function getCodeQLSource(toolsInput, defaultCliVersion, apiDetails, varian toolsVersion: cliVersion2 ?? humanReadableVersion }; } - if (variant !== 0 /* DOTCOM */ && !forceShippedTools && !toolsInput) { + if (variant === "GitHub Enterprise Server" /* GHES */ && !forceShippedTools && !toolsInput) { const result = await findOverridingToolsInCache( humanReadableVersion, logger diff --git a/lib/start-proxy-action-post.js b/lib/start-proxy-action-post.js index c78e8262a6..0900ea8c84 100644 --- a/lib/start-proxy-action-post.js +++ b/lib/start-proxy-action-post.js @@ -119235,7 +119235,7 @@ function parseGitHubUrl(inputUrl) { var CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = "CODEQL_ACTION_WARNED_ABOUT_VERSION"; var hasBeenWarnedAboutVersion = false; function checkGitHubVersionInRange(version, logger) { - if (hasBeenWarnedAboutVersion || version.type !== 1 /* GHES */) { + if (hasBeenWarnedAboutVersion || version.type !== "GitHub Enterprise Server" /* GHES */) { return; } const disallowedAPIVersionReason = apiVersionInRange( @@ -119341,17 +119341,17 @@ function getApiClient() { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -119848,7 +119848,7 @@ var glob = __toESM(require_glob3()); // src/debug-artifacts.ts async function getArtifactUploaderClient(logger, ghVariant) { - if (ghVariant === 1 /* GHES */) { + if (ghVariant === "GitHub Enterprise Server" /* GHES */) { logger.info( "Debug artifacts can be consumed with `actions/download-artifact@v3` because the `v4` version is not yet compatible on GHES." ); diff --git a/lib/upload-lib.js b/lib/upload-lib.js index de44834ac9..4f662ac309 100644 --- a/lib/upload-lib.js +++ b/lib/upload-lib.js @@ -86348,17 +86348,17 @@ function getAuthorizationHeaderFor(logger, apiDetails, url2) { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -87977,7 +87977,7 @@ async function getCodeQLSource(toolsInput, defaultCliVersion, apiDetails, varian toolsVersion: cliVersion2 ?? humanReadableVersion }; } - if (variant !== 0 /* DOTCOM */ && !forceShippedTools && !toolsInput) { + if (variant === "GitHub Enterprise Server" /* GHES */ && !forceShippedTools && !toolsInput) { const result = await findOverridingToolsInCache( humanReadableVersion, logger @@ -90031,7 +90031,7 @@ function areAllRunsUnique(sarifObjects) { return true; } async function shouldShowCombineSarifFilesDeprecationWarning(sarifObjects, githubVersion) { - if (githubVersion.type === 1 /* GHES */ && satisfiesGHESVersion(githubVersion.version, "<3.14", true)) { + if (githubVersion.type === "GitHub Enterprise Server" /* GHES */ && satisfiesGHESVersion(githubVersion.version, "<3.14", true)) { return false; } return !areAllRunsUnique(sarifObjects) && !process.env.CODEQL_MERGE_SARIF_DEPRECATION_WARNING; @@ -90046,7 +90046,7 @@ async function throwIfCombineSarifFilesDisabled(sarifObjects, githubVersion) { ); } async function shouldDisableCombineSarifFiles(sarifObjects, githubVersion) { - if (githubVersion.type === 1 /* GHES */) { + if (githubVersion.type === "GitHub Enterprise Server" /* GHES */) { if (satisfiesGHESVersion(githubVersion.version, "<3.18", true)) { return false; } @@ -90061,7 +90061,7 @@ async function combineSarifFilesUsingCLI(sarifFiles, gitHubVersion, features, lo const sarifObjects = sarifFiles.map((sarifFile) => { return JSON.parse(fs11.readFileSync(sarifFile, "utf8")); }); - const deprecationWarningMessage = gitHubVersion.type === 1 /* GHES */ ? "and will be removed in GitHub Enterprise Server 3.18" : "and will be removed in July 2025"; + const deprecationWarningMessage = gitHubVersion.type === "GitHub Enterprise Server" /* GHES */ ? "and will be removed in GitHub Enterprise Server 3.18" : "and will be removed in July 2025"; const deprecationMoreInformationMessage = "For more information, see https://github.blog/changelog/2024-05-06-code-scanning-will-stop-combining-runs-from-a-single-upload"; if (!areAllRunsProducedByCodeQL(sarifObjects)) { await throwIfCombineSarifFilesDisabled(sarifObjects, gitHubVersion); diff --git a/lib/upload-sarif-action-post.js b/lib/upload-sarif-action-post.js index f95b705faf..7f055370a4 100644 --- a/lib/upload-sarif-action-post.js +++ b/lib/upload-sarif-action-post.js @@ -119235,7 +119235,7 @@ function parseGitHubUrl(inputUrl) { var CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = "CODEQL_ACTION_WARNED_ABOUT_VERSION"; var hasBeenWarnedAboutVersion = false; function checkGitHubVersionInRange(version, logger) { - if (hasBeenWarnedAboutVersion || version.type !== 1 /* GHES */) { + if (hasBeenWarnedAboutVersion || version.type !== "GitHub Enterprise Server" /* GHES */) { return; } const disallowedAPIVersionReason = apiVersionInRange( @@ -119345,17 +119345,17 @@ function getApiClient() { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -119920,7 +119920,7 @@ async function uploadDebugArtifacts(logger, toUpload, rootDir, artifactName, ghV } } async function getArtifactUploaderClient(logger, ghVariant) { - if (ghVariant === 1 /* GHES */) { + if (ghVariant === "GitHub Enterprise Server" /* GHES */) { logger.info( "Debug artifacts can be consumed with `actions/download-artifact@v3` because the `v4` version is not yet compatible on GHES." ); diff --git a/lib/upload-sarif-action.js b/lib/upload-sarif-action.js index f8ea28a2d0..b480b8f274 100644 --- a/lib/upload-sarif-action.js +++ b/lib/upload-sarif-action.js @@ -86069,7 +86069,7 @@ async function checkDiskUsage(logger) { function checkActionVersion(version, githubVersion) { if (!semver.satisfies(version, ">=4") && // do not log error if the customer is already running v4 !process.env["CODEQL_ACTION_DID_LOG_VERSION_DEPRECATION" /* LOG_VERSION_DEPRECATION */]) { - if (githubVersion.type === 0 /* DOTCOM */ || githubVersion.type === 2 /* GHE_DOTCOM */ || githubVersion.type === 1 /* GHES */ && semver.satisfies( + if (githubVersion.type === "GitHub.com" /* DOTCOM */ || githubVersion.type === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ || githubVersion.type === "GitHub Enterprise Server" /* GHES */ && semver.satisfies( semver.coerce(githubVersion.version) ?? "0.0.0", ">=3.20" )) { @@ -86394,17 +86394,17 @@ function getAuthorizationHeaderFor(logger, apiDetails, url2) { var cachedGitHubVersion = void 0; async function getGitHubVersionFromApi(apiClient, apiDetails) { if (parseGitHubUrl(apiDetails.url) === GITHUB_DOTCOM_URL) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } const response = await apiClient.rest.meta.get(); if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === void 0) { - return { type: 0 /* DOTCOM */ }; + return { type: "GitHub.com" /* DOTCOM */ }; } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: 2 /* GHE_DOTCOM */ }; + return { type: "GitHub Enterprise Cloud with data residency" /* GHEC_DR */ }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER]; - return { type: 1 /* GHES */, version }; + return { type: "GitHub Enterprise Server" /* GHES */, version }; } async function getGitHubVersion() { if (cachedGitHubVersion === void 0) { @@ -87117,15 +87117,15 @@ var GitHubFeatureFlags = class { return version; } async getDefaultCliVersion(variant) { - if (variant === 0 /* DOTCOM */) { - return await this.getDefaultDotcomCliVersion(); + if (supportsFeatureFlags(variant)) { + return await this.getDefaultCliVersionFromFlags(); } return { cliVersion, tagName: bundleVersion }; } - async getDefaultDotcomCliVersion() { + async getDefaultCliVersionFromFlags() { const response = await this.getAllFeatures(); const enabledFeatureFlagCliVersions = Object.entries(response).map( ([f, isEnabled]) => isEnabled ? this.getCliVersionFromFeatureFlag(f) : void 0 @@ -87214,7 +87214,7 @@ var GitHubFeatureFlags = class { } } async loadApiResponse() { - if (this.gitHubVersion.type !== 0 /* DOTCOM */ && this.gitHubVersion.type !== 2 /* GHE_DOTCOM */) { + if (!supportsFeatureFlags(this.gitHubVersion.type)) { this.logger.debug( "Not running against github.com. Disabling all toggleable features." ); @@ -87267,6 +87267,9 @@ var GitHubFeatureFlags = class { } } }; +function supportsFeatureFlags(githubVariant) { + return githubVariant === "GitHub.com" /* DOTCOM */ || githubVariant === "GitHub Enterprise Cloud with data residency" /* GHEC_DR */; +} // src/status-report.ts var os = __toESM(require("os")); @@ -88495,7 +88498,7 @@ async function getCodeQLSource(toolsInput, defaultCliVersion, apiDetails, varian toolsVersion: cliVersion2 ?? humanReadableVersion }; } - if (variant !== 0 /* DOTCOM */ && !forceShippedTools && !toolsInput) { + if (variant === "GitHub Enterprise Server" /* GHES */ && !forceShippedTools && !toolsInput) { const result = await findOverridingToolsInCache( humanReadableVersion, logger @@ -90549,7 +90552,7 @@ function areAllRunsUnique(sarifObjects) { return true; } async function shouldShowCombineSarifFilesDeprecationWarning(sarifObjects, githubVersion) { - if (githubVersion.type === 1 /* GHES */ && satisfiesGHESVersion(githubVersion.version, "<3.14", true)) { + if (githubVersion.type === "GitHub Enterprise Server" /* GHES */ && satisfiesGHESVersion(githubVersion.version, "<3.14", true)) { return false; } return !areAllRunsUnique(sarifObjects) && !process.env.CODEQL_MERGE_SARIF_DEPRECATION_WARNING; @@ -90564,7 +90567,7 @@ async function throwIfCombineSarifFilesDisabled(sarifObjects, githubVersion) { ); } async function shouldDisableCombineSarifFiles(sarifObjects, githubVersion) { - if (githubVersion.type === 1 /* GHES */) { + if (githubVersion.type === "GitHub Enterprise Server" /* GHES */) { if (satisfiesGHESVersion(githubVersion.version, "<3.18", true)) { return false; } @@ -90579,7 +90582,7 @@ async function combineSarifFilesUsingCLI(sarifFiles, gitHubVersion, features, lo const sarifObjects = sarifFiles.map((sarifFile) => { return JSON.parse(fs12.readFileSync(sarifFile, "utf8")); }); - const deprecationWarningMessage = gitHubVersion.type === 1 /* GHES */ ? "and will be removed in GitHub Enterprise Server 3.18" : "and will be removed in July 2025"; + const deprecationWarningMessage = gitHubVersion.type === "GitHub Enterprise Server" /* GHES */ ? "and will be removed in GitHub Enterprise Server 3.18" : "and will be removed in July 2025"; const deprecationMoreInformationMessage = "For more information, see https://github.blog/changelog/2024-05-06-code-scanning-will-stop-combining-runs-from-a-single-upload"; if (!areAllRunsProducedByCodeQL(sarifObjects)) { await throwIfCombineSarifFilesDisabled(sarifObjects, gitHubVersion); diff --git a/package-lock.json b/package-lock.json index 4c6ca8624d..d433f0a6d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1798,6 +1798,7 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -2568,6 +2569,7 @@ "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.4", "@typescript-eslint/types": "8.46.4", @@ -3164,6 +3166,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3739,6 +3742,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -4592,6 +4596,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4646,6 +4651,7 @@ "version": "8.3.0", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -4917,6 +4923,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, + "peer": true, "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -7351,6 +7358,7 @@ "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -8341,6 +8349,7 @@ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -8549,6 +8558,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8622,6 +8632,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", "dev": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.17.0", "@typescript-eslint/types": "8.17.0", diff --git a/src/api-client.test.ts b/src/api-client.test.ts index d3a5ce2bca..073f68ff1b 100644 --- a/src/api-client.test.ts +++ b/src/api-client.test.ts @@ -95,14 +95,14 @@ test("getGitHubVersion for different domain", async (t) => { t.deepEqual({ type: util.GitHubVariant.DOTCOM }, v3); }); -test("getGitHubVersion for GHE_DOTCOM", async (t) => { +test("getGitHubVersion for GHEC-DR", async (t) => { mockGetMetaVersionHeader("ghe.com"); const gheDotcom = await api.getGitHubVersionFromApi(api.getApiClient(), { auth: "", url: "https://foo.ghe.com", apiURL: undefined, }); - t.deepEqual({ type: util.GitHubVariant.GHE_DOTCOM }, gheDotcom); + t.deepEqual({ type: util.GitHubVariant.GHEC_DR }, gheDotcom); }); test("wrapApiConfigurationError correctly wraps specific configuration errors", (t) => { diff --git a/src/api-client.ts b/src/api-client.ts index 600da1ed6d..32a6a080b7 100644 --- a/src/api-client.ts +++ b/src/api-client.ts @@ -125,7 +125,7 @@ export async function getGitHubVersionFromApi( } if (response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] === "ghe.com") { - return { type: GitHubVariant.GHE_DOTCOM }; + return { type: GitHubVariant.GHEC_DR }; } const version = response.headers[GITHUB_ENTERPRISE_VERSION_HEADER] as string; diff --git a/src/database-upload.ts b/src/database-upload.ts index d99df14c3d..ab0e2636a2 100644 --- a/src/database-upload.ts +++ b/src/database-upload.ts @@ -41,7 +41,7 @@ export async function cleanupAndUploadDatabases( // Do nothing when not running against github.com if ( config.gitHubVersion.type !== util.GitHubVariant.DOTCOM && - config.gitHubVersion.type !== util.GitHubVariant.GHE_DOTCOM + config.gitHubVersion.type !== util.GitHubVariant.GHEC_DR ) { logger.debug("Not running against github.com or GHEC-DR. Skipping upload."); return; diff --git a/src/feature-flags.test.ts b/src/feature-flags.test.ts index ae9f079cab..11e7ba538f 100644 --- a/src/feature-flags.test.ts +++ b/src/feature-flags.test.ts @@ -62,13 +62,13 @@ test(`All features are disabled if running against GHES`, async (t) => { }); }); -test(`Feature flags are requested in Proxima`, async (t) => { +test(`Feature flags are requested in GHEC-DR`, async (t) => { await withTmpDir(async (tmpDir) => { const loggedMessages = []; const features = setUpFeatureFlagTests( tmpDir, getRecordingLogger(loggedMessages), - { type: GitHubVariant.GHE_DOTCOM }, + { type: GitHubVariant.GHEC_DR }, ); mockFeatureFlagApiEndpoint(200, initializeFeatures(true)); @@ -436,97 +436,79 @@ test(`selects CLI from defaults.json on GHES`, async (t) => { }); }); -test("selects CLI v2.20.1 on Dotcom when feature flags enable v2.20.0 and v2.20.1", async (t) => { - await withTmpDir(async (tmpDir) => { - const features = setUpFeatureFlagTests(tmpDir); - const expectedFeatureEnablement = initializeFeatures(true); - expectedFeatureEnablement["default_codeql_version_2_20_0_enabled"] = true; - expectedFeatureEnablement["default_codeql_version_2_20_1_enabled"] = true; - expectedFeatureEnablement["default_codeql_version_2_20_2_enabled"] = false; - expectedFeatureEnablement["default_codeql_version_2_20_3_enabled"] = false; - expectedFeatureEnablement["default_codeql_version_2_20_4_enabled"] = false; - expectedFeatureEnablement["default_codeql_version_2_20_5_enabled"] = false; - mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); +for (const variant of [GitHubVariant.DOTCOM, GitHubVariant.GHEC_DR]) { + test(`selects CLI v2.20.1 on ${variant} when feature flags enable v2.20.0 and v2.20.1`, async (t) => { + await withTmpDir(async (tmpDir) => { + const features = setUpFeatureFlagTests(tmpDir); + const expectedFeatureEnablement = initializeFeatures(true); + expectedFeatureEnablement["default_codeql_version_2_20_0_enabled"] = true; + expectedFeatureEnablement["default_codeql_version_2_20_1_enabled"] = true; + expectedFeatureEnablement["default_codeql_version_2_20_2_enabled"] = + false; + expectedFeatureEnablement["default_codeql_version_2_20_3_enabled"] = + false; + expectedFeatureEnablement["default_codeql_version_2_20_4_enabled"] = + false; + expectedFeatureEnablement["default_codeql_version_2_20_5_enabled"] = + false; + mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); - const defaultCliVersion = await features.getDefaultCliVersion( - GitHubVariant.DOTCOM, - ); - t.deepEqual(defaultCliVersion, { - cliVersion: "2.20.1", - tagName: "codeql-bundle-v2.20.1", - toolsFeatureFlagsValid: true, + const defaultCliVersion = await features.getDefaultCliVersion(variant); + t.deepEqual(defaultCliVersion, { + cliVersion: "2.20.1", + tagName: "codeql-bundle-v2.20.1", + toolsFeatureFlagsValid: true, + }); }); }); -}); -test("includes tag name", async (t) => { - await withTmpDir(async (tmpDir) => { - const features = setUpFeatureFlagTests(tmpDir); - const expectedFeatureEnablement = initializeFeatures(true); - expectedFeatureEnablement["default_codeql_version_2_20_0_enabled"] = true; - mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); + test(`selects CLI from defaults.json on ${variant} when no default version feature flags are enabled`, async (t) => { + await withTmpDir(async (tmpDir) => { + const features = setUpFeatureFlagTests(tmpDir); + const expectedFeatureEnablement = initializeFeatures(true); + mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); - const defaultCliVersion = await features.getDefaultCliVersion( - GitHubVariant.DOTCOM, - ); - t.deepEqual(defaultCliVersion, { - cliVersion: "2.20.0", - tagName: "codeql-bundle-v2.20.0", - toolsFeatureFlagsValid: true, + const defaultCliVersion = await features.getDefaultCliVersion(variant); + t.deepEqual(defaultCliVersion, { + cliVersion: defaults.cliVersion, + tagName: defaults.bundleVersion, + toolsFeatureFlagsValid: false, + }); }); }); -}); - -test(`selects CLI from defaults.json on Dotcom when no default version feature flags are enabled`, async (t) => { - await withTmpDir(async (tmpDir) => { - const features = setUpFeatureFlagTests(tmpDir); - const expectedFeatureEnablement = initializeFeatures(true); - mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); - const defaultCliVersion = await features.getDefaultCliVersion( - GitHubVariant.DOTCOM, - ); - t.deepEqual(defaultCliVersion, { - cliVersion: defaults.cliVersion, - tagName: defaults.bundleVersion, - toolsFeatureFlagsValid: false, - }); - }); -}); + test(`ignores invalid version numbers in default version feature flags on ${variant}`, async (t) => { + await withTmpDir(async (tmpDir) => { + const loggedMessages = []; + const features = setUpFeatureFlagTests( + tmpDir, + getRecordingLogger(loggedMessages), + ); + const expectedFeatureEnablement = initializeFeatures(true); + expectedFeatureEnablement["default_codeql_version_2_20_0_enabled"] = true; + expectedFeatureEnablement["default_codeql_version_2_20_1_enabled"] = true; + expectedFeatureEnablement["default_codeql_version_2_20_invalid_enabled"] = + true; + mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); -test("ignores invalid version numbers in default version feature flags", async (t) => { - await withTmpDir(async (tmpDir) => { - const loggedMessages = []; - const features = setUpFeatureFlagTests( - tmpDir, - getRecordingLogger(loggedMessages), - ); - const expectedFeatureEnablement = initializeFeatures(true); - expectedFeatureEnablement["default_codeql_version_2_20_0_enabled"] = true; - expectedFeatureEnablement["default_codeql_version_2_20_1_enabled"] = true; - expectedFeatureEnablement["default_codeql_version_2_20_invalid_enabled"] = - true; - mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); + const defaultCliVersion = await features.getDefaultCliVersion(variant); + t.deepEqual(defaultCliVersion, { + cliVersion: "2.20.1", + tagName: "codeql-bundle-v2.20.1", + toolsFeatureFlagsValid: true, + }); - const defaultCliVersion = await features.getDefaultCliVersion( - GitHubVariant.DOTCOM, - ); - t.deepEqual(defaultCliVersion, { - cliVersion: "2.20.1", - tagName: "codeql-bundle-v2.20.1", - toolsFeatureFlagsValid: true, + t.assert( + loggedMessages.find( + (v: LoggedMessage) => + v.type === "warning" && + v.message === + "Ignoring feature flag default_codeql_version_2_20_invalid_enabled as it does not specify a valid CodeQL version.", + ) !== undefined, + ); }); - - t.assert( - loggedMessages.find( - (v: LoggedMessage) => - v.type === "warning" && - v.message === - "Ignoring feature flag default_codeql_version_2_20_invalid_enabled as it does not specify a valid CodeQL version.", - ) !== undefined, - ); }); -}); +} test("legacy feature flags should end with _enabled", async (t) => { for (const [feature, config] of Object.entries(featureConfig)) { diff --git a/src/feature-flags.ts b/src/feature-flags.ts index 10e2e296c3..4ad548d11b 100644 --- a/src/feature-flags.ts +++ b/src/feature-flags.ts @@ -486,8 +486,8 @@ class GitHubFeatureFlags { async getDefaultCliVersion( variant: util.GitHubVariant, ): Promise { - if (variant === util.GitHubVariant.DOTCOM) { - return await this.getDefaultDotcomCliVersion(); + if (supportsFeatureFlags(variant)) { + return await this.getDefaultCliVersionFromFlags(); } return { cliVersion: defaults.cliVersion, @@ -495,7 +495,7 @@ class GitHubFeatureFlags { }; } - async getDefaultDotcomCliVersion(): Promise { + async getDefaultCliVersionFromFlags(): Promise { const response = await this.getAllFeatures(); const enabledFeatureFlagCliVersions = Object.entries(response) @@ -621,10 +621,7 @@ class GitHubFeatureFlags { private async loadApiResponse(): Promise { // Do nothing when not running against github.com - if ( - this.gitHubVersion.type !== util.GitHubVariant.DOTCOM && - this.gitHubVersion.type !== util.GitHubVariant.GHE_DOTCOM - ) { + if (!supportsFeatureFlags(this.gitHubVersion.type)) { this.logger.debug( "Not running against github.com. Disabling all toggleable features.", ); @@ -690,3 +687,10 @@ class GitHubFeatureFlags { } } } + +function supportsFeatureFlags(githubVariant: util.GitHubVariant): boolean { + return ( + githubVariant === util.GitHubVariant.DOTCOM || + githubVariant === util.GitHubVariant.GHEC_DR + ); +} diff --git a/src/setup-codeql.ts b/src/setup-codeql.ts index 16375421a7..2a39673d97 100644 --- a/src/setup-codeql.ts +++ b/src/setup-codeql.ts @@ -511,7 +511,7 @@ export async function getCodeQLSource( // different version to save download time if the version hasn't been // specified explicitly (in which case we always honor it). if ( - variant !== util.GitHubVariant.DOTCOM && + variant === util.GitHubVariant.GHES && !forceShippedTools && !toolsInput ) { diff --git a/src/util.test.ts b/src/util.test.ts index 2a8d941ec6..1376ae7801 100644 --- a/src/util.test.ts +++ b/src/util.test.ts @@ -433,8 +433,8 @@ function formatGitHubVersion(version: util.GitHubVersion): string { switch (version.type) { case util.GitHubVariant.DOTCOM: return "dotcom"; - case util.GitHubVariant.GHE_DOTCOM: - return "GHE dotcom"; + case util.GitHubVariant.GHEC_DR: + return "GHEC-DR"; case util.GitHubVariant.GHES: return `GHES ${version.version}`; default: @@ -445,12 +445,12 @@ function formatGitHubVersion(version: util.GitHubVersion): string { const CHECK_ACTION_VERSION_TESTS: Array<[string, util.GitHubVersion, boolean]> = [ ["2.2.1", { type: util.GitHubVariant.DOTCOM }, true], - ["2.2.1", { type: util.GitHubVariant.GHE_DOTCOM }, true], + ["2.2.1", { type: util.GitHubVariant.GHEC_DR }, true], ["2.2.1", { type: util.GitHubVariant.GHES, version: "3.10" }, false], ["2.2.1", { type: util.GitHubVariant.GHES, version: "3.11" }, false], ["2.2.1", { type: util.GitHubVariant.GHES, version: "3.12" }, false], ["3.2.1", { type: util.GitHubVariant.DOTCOM }, true], - ["3.2.1", { type: util.GitHubVariant.GHE_DOTCOM }, true], + ["3.2.1", { type: util.GitHubVariant.GHEC_DR }, true], ["3.2.1", { type: util.GitHubVariant.GHES, version: "3.10" }, false], ["3.2.1", { type: util.GitHubVariant.GHES, version: "3.11" }, false], ["3.2.1", { type: util.GitHubVariant.GHES, version: "3.12" }, false], @@ -458,7 +458,7 @@ const CHECK_ACTION_VERSION_TESTS: Array<[string, util.GitHubVersion, boolean]> = ["3.2.1", { type: util.GitHubVariant.GHES, version: "3.20" }, true], ["3.2.1", { type: util.GitHubVariant.GHES, version: "3.21" }, true], ["4.2.1", { type: util.GitHubVariant.DOTCOM }, false], - ["4.2.1", { type: util.GitHubVariant.GHE_DOTCOM }, false], + ["4.2.1", { type: util.GitHubVariant.GHEC_DR }, false], ["4.2.1", { type: util.GitHubVariant.GHES, version: "3.19" }, false], ["4.2.1", { type: util.GitHubVariant.GHES, version: "3.20" }, false], ["4.2.1", { type: util.GitHubVariant.GHES, version: "3.21" }, false], diff --git a/src/util.ts b/src/util.ts index aefcc5a2af..90e8063ea4 100644 --- a/src/util.ts +++ b/src/util.ts @@ -556,13 +556,17 @@ const CODEQL_ACTION_WARNED_ABOUT_VERSION_ENV_VAR = let hasBeenWarnedAboutVersion = false; export enum GitHubVariant { - DOTCOM, - GHES, - GHE_DOTCOM, + /** [GitHub.com](https://github.com) */ + DOTCOM = "GitHub.com", + /** [GitHub Enterprise Server](https://docs.github.com/en/enterprise-server@latest/admin/overview/about-github-enterprise-server) */ + GHES = "GitHub Enterprise Server", + /** [GitHub Enterprise Cloud with data residency](https://docs.github.com/en/enterprise-cloud@latest/admin/data-residency/about-github-enterprise-cloud-with-data-residency) */ + GHEC_DR = "GitHub Enterprise Cloud with data residency", } + export type GitHubVersion = | { type: GitHubVariant.DOTCOM } - | { type: GitHubVariant.GHE_DOTCOM } + | { type: GitHubVariant.GHEC_DR } | { type: GitHubVariant.GHES; version: string }; export function checkGitHubVersionInRange( @@ -1105,7 +1109,7 @@ export function checkActionVersion( // and should update to CodeQL Action v4. if ( githubVersion.type === GitHubVariant.DOTCOM || - githubVersion.type === GitHubVariant.GHE_DOTCOM || + githubVersion.type === GitHubVariant.GHEC_DR || (githubVersion.type === GitHubVariant.GHES && semver.satisfies( semver.coerce(githubVersion.version) ?? "0.0.0",