Compare commits

..

18 Commits

Author SHA1 Message Date
Tingluo Huang
450193c5ab Merge pull request #695 from actions/copilot/add-orchestration-id-user-agent
Add ACTIONS_ORCHESTRATION_ID to user-agent string
2026-01-07 10:23:37 -05:00
copilot-swe-agent[bot]
b67a972797 Change orchestration ID format to actions_orchestration_id
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-07 04:17:15 +00:00
copilot-swe-agent[bot]
c0078b2072 Simplify user-agent logic and update integration test
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 23:05:20 +00:00
copilot-swe-agent[bot]
c36bdc0a3a Fix user-agent to handle empty string correctly
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 22:55:13 +00:00
copilot-swe-agent[bot]
b588811d63 Revert package-lock.json changes to remove peer flags
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 22:46:11 +00:00
copilot-swe-agent[bot]
135f4fc944 Replace invalid characters with underscore instead of removing them
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 22:39:03 +00:00
copilot-swe-agent[bot]
8a9be95424 Move helper method to end of file and revert package-lock.json changes
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 22:30:38 +00:00
copilot-swe-agent[bot]
728b23b52d Remove orchestration-id test file
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 22:22:39 +00:00
copilot-swe-agent[bot]
f80dad6b51 Add underscore to valid orchestration ID characters
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 21:27:04 +00:00
copilot-swe-agent[bot]
baada7bb39 Apply prettier formatting to test file
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 21:15:37 +00:00
copilot-swe-agent[bot]
d053ab3e3c Add ACTIONS_ORCHESTRATION_ID to user-agent string
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 21:10:26 +00:00
copilot-swe-agent[bot]
4389015762 Initial plan for ACTIONS_ORCHESTRATION_ID user-agent support
Co-authored-by: TingluoHuang <1750815+TingluoHuang@users.noreply.github.com>
2026-01-06 21:07:40 +00:00
copilot-swe-agent[bot]
6599b4813b Initial plan 2026-01-06 21:02:44 +00:00
Sneha Kripanandan
ed597411d8 Merge pull request #653 from actions/sneha-krip/readme-for-v8
README for updating actions/github-script from v7 to v8
2025-09-04 10:48:16 -04:00
Sneha Kripanandan
2dc352e4ba Bold minimum Actions Runner version in README 2025-09-04 10:43:07 -04:00
Sneha Kripanandan
01e118c8d0 Update README for Node 24 runtime requirements 2025-09-04 10:42:40 -04:00
Sneha Kripanandan
8b222ac82e Apply suggestion from @salmanmkc
Co-authored-by: Salman Chishti <salmanmkc@GitHub.com>
2025-09-04 10:39:58 -04:00
Sneha Kripanandan
adc0eeac99 README for updating actions/github-script from v7 to v8 2025-09-04 10:27:46 -04:00
5 changed files with 71 additions and 27 deletions

View File

@@ -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

View File

@@ -53,6 +53,14 @@ documentation.
## Breaking Changes
### V8
Version 8 of this action updated the runtime to Node 24 - https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions
All scripts are now run with Node 24 instead of Node 20 and are affected by any breaking changes between Node 20 and 24.
**This requires a minimum Actions Runner version of [v2.327.1](https://github.com/actions/runner/releases/tag/v2.327.1)**
### V7
Version 7 of this action updated the runtime to Node 20 - https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions
@@ -91,7 +99,7 @@ and potential `SyntaxError`s when the expression is not valid JavaScript code (p
To pass inputs, set `env` vars on the action step and reference them in your script with `process.env`:
```yaml
- uses: actions/github-script@v7
- uses: actions/github-script@v8
env:
TITLE: ${{ github.event.pull_request.title }}
with:
@@ -110,7 +118,7 @@ The return value of the script will be in the step's outputs under the
"result" key.
```yaml
- uses: actions/github-script@v7
- uses: actions/github-script@v8
id: set-result
with:
script: return "Hello!"
@@ -129,7 +137,7 @@ output of a github-script step. For some workflows, string encoding is preferred
`result-encoding` input:
```yaml
- uses: actions/github-script@v7
- uses: actions/github-script@v8
id: my-script
with:
result-encoding: string
@@ -141,7 +149,7 @@ output of a github-script step. For some workflows, string encoding is preferred
By default, requests made with the `github` instance will not be retried. You can configure this with the `retries` option:
```yaml
- uses: actions/github-script@v7
- uses: actions/github-script@v8
id: my-script
with:
result-encoding: string
@@ -159,7 +167,7 @@ In this example, request failures from `github.rest.issues.get()` will be retrie
You can also configure which status codes should be exempt from retries via the `retry-exempt-status-codes` option:
```yaml
- uses: actions/github-script@v7
- uses: actions/github-script@v8
id: my-script
with:
result-encoding: string
@@ -188,7 +196,7 @@ By default, github-script will use the token provided to your workflow.
```yaml
- name: View context attributes
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: console.log(context)
```
@@ -204,7 +212,7 @@ jobs:
comment:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
github.rest.issues.createComment({
@@ -226,7 +234,7 @@ jobs:
apply-label:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
github.rest.issues.addLabels({
@@ -248,7 +256,7 @@ jobs:
welcome:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
// Get a list of all issues created by the PR opener
@@ -293,7 +301,7 @@ jobs:
diff:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
const diff_url = context.payload.pull_request.diff_url
@@ -317,7 +325,7 @@ jobs:
list-issues:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
const query = `query($owner:String!, $name:String!, $label:String!) {
@@ -351,7 +359,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
const script = require('./path/to/script.js')
@@ -389,7 +397,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/github-script@v7
- uses: actions/github-script@v8
env:
SHA: '${{env.parentSHA}}'
with:
@@ -433,7 +441,7 @@ jobs:
- run: npm ci
# or one-off:
- run: npm install execa
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
const execa = require('execa')
@@ -463,7 +471,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
const { default: printStuff } = await import('${{ github.workspace }}/src/print-stuff.js')
@@ -507,7 +515,7 @@ jobs:
apply-label:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
github-token: ${{ secrets.MY_PAT }}
script: |
@@ -531,7 +539,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
const exitCode = await exec.exec('echo', ['hello'])
@@ -549,7 +557,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
script: |
const {

18
dist/index.js vendored
View File

@@ -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}`;
}
})();

12
package-lock.json generated
View File

@@ -2273,9 +2273,9 @@
}
},
"node_modules/brace-expansion": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -9067,9 +9067,9 @@
}
},
"brace-expansion": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"

View File

@@ -39,9 +39,12 @@ async function main(): Promise<void> {
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}`
}