diff --git a/lib/analyze-action-post.js b/lib/analyze-action-post.js index 3894cba111..e68a990816 100644 --- a/lib/analyze-action-post.js +++ b/lib/analyze-action-post.js @@ -117076,6 +117076,9 @@ function getCachedCodeQlVersion() { async function codeQlVersionAtLeast(codeql, requiredVersion) { return semver.gte((await codeql.getVersion()).version, requiredVersion); } +function isInTestMode() { + return process.env["CODEQL_ACTION_TEST_MODE" /* TEST_MODE */] === "true"; +} function wrapError(error2) { return error2 instanceof Error ? error2 : new Error(String(error2)); } @@ -117195,6 +117198,9 @@ var githubUtils = __toESM(require_utils4()); var retry = __toESM(require_dist_node15()); var import_console_log_level = __toESM(require_console_log_level()); var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -117202,7 +117208,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/analyze-action.js b/lib/analyze-action.js index 5389f58483..65aead639e 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -90177,6 +90177,9 @@ function parseRepositoryNwo(input) { // src/api-client.ts var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -90184,7 +90187,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/autobuild-action.js b/lib/autobuild-action.js index e7c4027e6d..401cdb6721 100644 --- a/lib/autobuild-action.js +++ b/lib/autobuild-action.js @@ -77902,6 +77902,9 @@ function parseRepositoryNwo(input) { // src/api-client.ts var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -77909,7 +77912,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/init-action-post.js b/lib/init-action-post.js index efa766c353..965f40ff0c 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -128396,6 +128396,9 @@ function parseRepositoryNwo(input) { // src/api-client.ts var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -128403,7 +128406,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/init-action.js b/lib/init-action.js index 059ebffffb..9bf397d0cd 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -86029,6 +86029,9 @@ function parseRepositoryNwo(input) { // src/api-client.ts var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -86036,7 +86039,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/resolve-environment-action.js b/lib/resolve-environment-action.js index 68acb6c12d..0b385ffb67 100644 --- a/lib/resolve-environment-action.js +++ b/lib/resolve-environment-action.js @@ -77910,6 +77910,9 @@ function parseRepositoryNwo(input) { // src/api-client.ts var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -77917,7 +77920,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/start-proxy-action-post.js b/lib/start-proxy-action-post.js index 5d80b2ed28..cab82cb86b 100644 --- a/lib/start-proxy-action-post.js +++ b/lib/start-proxy-action-post.js @@ -117042,6 +117042,9 @@ var ConfigurationError = class extends Error { super(message); } }; +function isInTestMode() { + return process.env["CODEQL_ACTION_TEST_MODE" /* TEST_MODE */] === "true"; +} function getErrorMessage(error2) { return error2 instanceof Error ? error2.message : String(error2); } @@ -117078,6 +117081,9 @@ var githubUtils = __toESM(require_utils4()); var retry = __toESM(require_dist_node15()); var import_console_log_level = __toESM(require_console_log_level()); var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -117085,7 +117091,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/start-proxy-action.js b/lib/start-proxy-action.js index c9aa76f792..4b57754546 100644 --- a/lib/start-proxy-action.js +++ b/lib/start-proxy-action.js @@ -49321,6 +49321,9 @@ async function delay(milliseconds, opts) { } }); } +function isInTestMode() { + return process.env["CODEQL_ACTION_TEST_MODE" /* TEST_MODE */] === "true"; +} function getErrorMessage(error2) { return error2 instanceof Error ? error2.message : String(error2); } @@ -49370,6 +49373,9 @@ var core6 = __toESM(require_core()); var githubUtils = __toESM(require_utils4()); var retry = __toESM(require_dist_node15()); var import_console_log_level = __toESM(require_console_log_level()); +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -49377,7 +49383,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/upload-lib.js b/lib/upload-lib.js index 9eeaabbd10..38ce9a574c 100644 --- a/lib/upload-lib.js +++ b/lib/upload-lib.js @@ -88523,6 +88523,9 @@ function parseRepositoryNwo(input) { // src/api-client.ts var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -88530,7 +88533,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/upload-sarif-action-post.js b/lib/upload-sarif-action-post.js index d1de1661bd..1b332a9b5c 100644 --- a/lib/upload-sarif-action-post.js +++ b/lib/upload-sarif-action-post.js @@ -117042,6 +117042,9 @@ var ConfigurationError = class extends Error { super(message); } }; +function isInTestMode() { + return process.env["CODEQL_ACTION_TEST_MODE" /* TEST_MODE */] === "true"; +} function getErrorMessage(error2) { return error2 instanceof Error ? error2.message : String(error2); } @@ -117082,6 +117085,9 @@ var githubUtils = __toESM(require_utils4()); var retry = __toESM(require_dist_node15()); var import_console_log_level = __toESM(require_console_log_level()); var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -117089,7 +117095,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/lib/upload-sarif-action.js b/lib/upload-sarif-action.js index f7d36732b2..96a96a73b9 100644 --- a/lib/upload-sarif-action.js +++ b/lib/upload-sarif-action.js @@ -88775,6 +88775,9 @@ function parseRepositoryNwo(input) { // src/api-client.ts var GITHUB_ENTERPRISE_VERSION_HEADER = "x-github-enterprise-version"; +function getRetryConfig() { + return isInTestMode() ? { retries: 10, retryAfterBaseValue: 1e4 } : { retries: 3, retryAfterBaseValue: 1e3 }; +} function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) { const auth = allowExternal && apiDetails.externalRepoAuth || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); @@ -88782,7 +88785,8 @@ function createApiClientWithDetails(apiDetails, { allowExternal = false } = {}) githubUtils.getOctokitOptions(auth, { baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, - log: (0, import_console_log_level.default)({ level: "debug" }) + log: (0, import_console_log_level.default)({ level: "debug" }), + retry: getRetryConfig() }) ); } diff --git a/src/api-client.test.ts b/src/api-client.test.ts index d2647b2bbb..f93cb30513 100644 --- a/src/api-client.test.ts +++ b/src/api-client.test.ts @@ -36,6 +36,7 @@ test("getApiClient", async (t) => { baseUrl: "http://api.github.localhost", log: sinon.match.any, userAgent: `CodeQL-Action/${actionsUtil.getActionVersion()}`, + retry: api.getRetryConfig(), }), ); }); diff --git a/src/api-client.ts b/src/api-client.ts index 207b3c86af..be59fbe120 100644 --- a/src/api-client.ts +++ b/src/api-client.ts @@ -12,6 +12,7 @@ import { GitHubVariant, GitHubVersion, isHTTPError, + isInTestMode, parseGitHubUrl, parseMatrixInput, } from "./util"; @@ -38,6 +39,20 @@ export interface GitHubApiExternalRepoDetails { apiURL: string | undefined; } +export function getRetryConfig(): { + retries: number; + retryAfterBaseValue?: number; +} { + // If we are in test mode, increase the allowed number of retries to 10 + // and the base backoff from 1s to 10s. `plugin-retry` will wait + // `(failedAttempts ^ 2) * retryAfterBaseValue`-long (in ms) after + // each failed attempt. + // If we are not in test mode, we use the default configuration. + return isInTestMode() + ? { retries: 10, retryAfterBaseValue: 10_000 } + : { retries: 3, retryAfterBaseValue: 1_000 }; +} + function createApiClientWithDetails( apiDetails: GitHubApiCombinedDetails, { allowExternal = false } = {}, @@ -50,6 +65,7 @@ function createApiClientWithDetails( baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, log: consoleLogLevel({ level: "debug" }), + retry: getRetryConfig(), }), ); }