From d71accc5fa75551fda9fb0dec1e591c2cab5dded Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Tue, 23 Sep 2025 10:18:39 +0100 Subject: [PATCH] Configure the API client to retry more often when in test mode --- lib/analyze-action-post.js | 9 ++++++++- lib/analyze-action.js | 6 +++++- lib/autobuild-action.js | 6 +++++- lib/init-action-post.js | 6 +++++- lib/init-action.js | 6 +++++- lib/resolve-environment-action.js | 6 +++++- lib/start-proxy-action-post.js | 9 ++++++++- lib/start-proxy-action.js | 9 ++++++++- lib/upload-lib.js | 6 +++++- lib/upload-sarif-action-post.js | 9 ++++++++- lib/upload-sarif-action.js | 6 +++++- src/api-client.test.ts | 1 + src/api-client.ts | 6 ++++++ 13 files changed, 74 insertions(+), 11 deletions(-) diff --git a/lib/analyze-action-post.js b/lib/analyze-action-post.js index 3894cba11..d722cdf65 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 } : { retries: 3 }; +} 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 5389f5848..e1582367c 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 } : { retries: 3 }; +} 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 e7c4027e6..4492f000d 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 } : { retries: 3 }; +} 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 efa766c35..1d04dbe4a 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 } : { retries: 3 }; +} 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 059ebffff..67af6c9e8 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 } : { retries: 3 }; +} 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 68acb6c12..1f6b08c77 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 } : { retries: 3 }; +} 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 5d80b2ed2..cea5fafa6 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 } : { retries: 3 }; +} 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 c9aa76f79..c6172038c 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 } : { retries: 3 }; +} 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 9eeaabbd1..dae0c1c22 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 } : { retries: 3 }; +} 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 d1de1661b..d1914d520 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 } : { retries: 3 }; +} 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 f7d36732b..1e292c9a4 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 } : { retries: 3 }; +} 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 d2647b2bb..f93cb3051 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 207b3c86a..62719a3af 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,10 @@ export interface GitHubApiExternalRepoDetails { apiURL: string | undefined; } +export function getRetryConfig(): { retries: number } { + return isInTestMode() ? { retries: 10 } : { retries: 3 }; +} + function createApiClientWithDetails( apiDetails: GitHubApiCombinedDetails, { allowExternal = false } = {}, @@ -50,6 +55,7 @@ function createApiClientWithDetails( baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${getActionVersion()}`, log: consoleLogLevel({ level: "debug" }), + retry: getRetryConfig(), }), ); }