diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 3c6d14f71..2e552907f 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 598310387..34e5865d6 100644 --- a/lib/analyze-action-post.js +++ b/lib/analyze-action-post.js @@ -119255,7 +119255,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( @@ -119457,17 +119457,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) { @@ -120990,7 +120990,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 4de550f5d..23c0f4f8d 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) { @@ -88968,15 +88968,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 @@ -89065,7 +89065,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." ); @@ -89118,6 +89118,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) { @@ -89125,7 +89128,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(); @@ -90158,7 +90161,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 @@ -91748,7 +91751,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; } @@ -93202,7 +93205,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; @@ -93217,7 +93220,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; } @@ -93232,7 +93235,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 dc7d0de52..a66b499fa 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) { @@ -84269,15 +84269,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 @@ -84366,7 +84366,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." ); @@ -84419,6 +84419,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 c1ee30d74..21429db2c 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -122165,7 +122165,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( @@ -122667,17 +122667,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) { @@ -123709,15 +123709,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 @@ -123806,7 +123806,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." ); @@ -123859,6 +123859,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() { @@ -124635,7 +124638,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 @@ -125710,7 +125713,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." ); @@ -127184,7 +127187,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; @@ -127199,7 +127202,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; } @@ -127214,7 +127217,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 006379abd..6ec4876f4 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 { @@ -86382,15 +86382,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 @@ -86479,7 +86479,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." ); @@ -86532,6 +86532,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) { @@ -86542,7 +86545,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(); @@ -88435,7 +88438,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 f674fcabe..cf895cd39 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 3d7cb5668..be78dd617 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) { @@ -84172,15 +84172,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 @@ -84269,7 +84269,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." ); @@ -84322,6 +84322,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()); @@ -85267,7 +85270,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 a880762bb..b568b6aba 100644 --- a/lib/start-proxy-action-post.js +++ b/lib/start-proxy-action-post.js @@ -119234,7 +119234,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( @@ -119340,17 +119340,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) { @@ -119853,7 +119853,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 1d866be1e..b898da848 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) { @@ -87983,7 +87983,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 @@ -90054,7 +90054,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; @@ -90069,7 +90069,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; } @@ -90084,7 +90084,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 f7da24462..cc13354d6 100644 --- a/lib/upload-sarif-action-post.js +++ b/lib/upload-sarif-action-post.js @@ -119234,7 +119234,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( @@ -119344,17 +119344,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) { @@ -119925,7 +119925,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 4c2397884..fb874ee7d 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) { @@ -87122,15 +87122,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 @@ -87219,7 +87219,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." ); @@ -87272,6 +87272,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")); @@ -88501,7 +88504,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 @@ -90572,7 +90575,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; @@ -90587,7 +90590,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; } @@ -90602,7 +90605,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 58da998e1..7d80ec2a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1799,6 +1799,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-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.48.1", "@typescript-eslint/types": "8.48.1", @@ -3162,6 +3164,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" }, @@ -3737,6 +3740,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -4590,6 +4594,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", @@ -4644,6 +4649,7 @@ "version": "8.3.0", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -4915,6 +4921,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", @@ -7350,6 +7357,7 @@ "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -8343,6 +8351,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -8551,6 +8560,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8624,6 +8634,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 d3a5ce2bc..073f68ff1 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 600da1ed6..32a6a080b 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 d99df14c3..ab0e2636a 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 ae9f079ca..11e7ba538 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); + 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); - const defaultCliVersion = await features.getDefaultCliVersion( - GitHubVariant.DOTCOM, - ); - t.deepEqual(defaultCliVersion, { - cliVersion: defaults.cliVersion, - tagName: defaults.bundleVersion, - toolsFeatureFlagsValid: false, + const defaultCliVersion = await features.getDefaultCliVersion(variant); + 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, + ); }); }); -}); - -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( - 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, - ); - }); -}); +} 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 59f1c4869..4aba66426 100644 --- a/src/feature-flags.ts +++ b/src/feature-flags.ts @@ -492,8 +492,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, @@ -501,7 +501,7 @@ class GitHubFeatureFlags { }; } - async getDefaultDotcomCliVersion(): Promise { + async getDefaultCliVersionFromFlags(): Promise { const response = await this.getAllFeatures(); const enabledFeatureFlagCliVersions = Object.entries(response) @@ -627,10 +627,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.", ); @@ -696,3 +693,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 16375421a..2a39673d9 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 2a8d941ec..1376ae780 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 7bcdb4162..ffaa957fa 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",