diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 346a57f2e..06827f277 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -167,7 +167,7 @@ jobs: exit 1 fi echo "- Validating user-agent set to an empty string" - expected="octokit-core.js/" + expected="actions/github-script octokit-core.js/" if [[ "${{steps.user-agent-empty.outputs.result}}" != "$expected"* ]]; then echo $'::error::\u274C' "Expected user-agent to start with '$expected', got ${{steps.user-agent-empty.outputs.result}}" exit 1 diff --git a/dist/index.js b/dist/index.js index bb06b77b9..19ad994c3 100644 --- a/dist/index.js +++ b/dist/index.js @@ -36267,9 +36267,11 @@ async function main() { const retries = parseInt(core.getInput('retries')); const exemptStatusCodes = parseNumberArray(core.getInput('retry-exempt-status-codes')); const [retryOpts, requestOpts] = getRetryOptions(retries, exemptStatusCodes, utils.defaults); + const baseUserAgent = userAgent || 'actions/github-script'; + const finalUserAgent = getUserAgentWithOrchestrationId(baseUserAgent); const opts = { log: debug ? console : undefined, - userAgent: userAgent || undefined, + userAgent: finalUserAgent, previews: previews ? previews.split(',') : undefined, retry: retryOpts, request: requestOpts @@ -36313,6 +36315,20 @@ function handleError(err) { console.error(err); core.setFailed(`Unhandled error: ${err}`); } +/** + * Gets the user agent string with orchestration ID appended if available + * @param userAgent The base user agent string + * @returns The user agent string with orchestration ID appended if ACTIONS_ORCHESTRATION_ID is set + */ +function getUserAgentWithOrchestrationId(userAgent) { + const orchestrationId = process.env['ACTIONS_ORCHESTRATION_ID']; + if (!orchestrationId) { + return userAgent; + } + // Sanitize orchestration ID - replace invalid characters with underscore + const sanitized = orchestrationId.replace(/[^a-zA-Z0-9._-]/g, '_'); + return `${userAgent} actions_orchestration_id/${sanitized}`; +} })(); diff --git a/src/main.ts b/src/main.ts index baa2933dc..cbf65693c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -39,9 +39,12 @@ async function main(): Promise { defaultGitHubOptions ) + const baseUserAgent = userAgent || 'actions/github-script' + const finalUserAgent = getUserAgentWithOrchestrationId(baseUserAgent) + const opts: Options = { log: debug ? console : undefined, - userAgent: userAgent || undefined, + userAgent: finalUserAgent, previews: previews ? previews.split(',') : undefined, retry: retryOpts, request: requestOpts @@ -96,3 +99,20 @@ function handleError(err: any): void { console.error(err) core.setFailed(`Unhandled error: ${err}`) } + +/** + * Gets the user agent string with orchestration ID appended if available + * @param userAgent The base user agent string + * @returns The user agent string with orchestration ID appended if ACTIONS_ORCHESTRATION_ID is set + */ +function getUserAgentWithOrchestrationId(userAgent: string): string { + const orchestrationId = process.env['ACTIONS_ORCHESTRATION_ID'] + if (!orchestrationId) { + return userAgent + } + + // Sanitize orchestration ID - replace invalid characters with underscore + const sanitized = orchestrationId.replace(/[^a-zA-Z0-9._-]/g, '_') + + return `${userAgent} actions_orchestration_id/${sanitized}` +}