mirror of
https://github.com/actions/github-script.git
synced 2026-04-07 14:49:25 +00:00
Merge 74a7682fdb into 450193c5ab
This commit is contained in:
commit
c94e6678f6
7 changed files with 74 additions and 9 deletions
54
.github/workflows/integration.yml
vendored
54
.github/workflows/integration.yml
vendored
|
|
@ -154,22 +154,58 @@ jobs:
|
|||
return endpoint({}).headers['user-agent']
|
||||
result-encoding: string
|
||||
- run: |
|
||||
matches_user_agent() {
|
||||
local actual="$1"
|
||||
local prefix="$2"
|
||||
[[ "$actual" =~ ^${prefix}(\ actions_orchestration_id/[^[:space:]]+)?\ octokit-core\.js/ ]]
|
||||
}
|
||||
|
||||
echo "- Validating user-agent default"
|
||||
expected="actions/github-script octokit-core.js/"
|
||||
if [[ "${{steps.user-agent-default.outputs.result}}" != "$expected"* ]]; then
|
||||
echo $'::error::\u274C' "Expected user-agent to start with '$expected', got ${{steps.user-agent-default.outputs.result}}"
|
||||
expected="actions/github-script"
|
||||
if ! matches_user_agent "${{steps.user-agent-default.outputs.result}}" "$expected"; then
|
||||
echo $'::error::\u274C' "Expected user-agent to start with '$expected' and include 'octokit-core.js/', got ${{steps.user-agent-default.outputs.result}}"
|
||||
exit 1
|
||||
fi
|
||||
echo "- Validating user-agent set to a value"
|
||||
expected="foobar octokit-core.js/"
|
||||
if [[ "${{steps.user-agent-set.outputs.result}}" != "$expected"* ]]; then
|
||||
echo $'::error::\u274C' "Expected user-agent to start with '$expected', got ${{steps.user-agent-set.outputs.result}}"
|
||||
expected="foobar"
|
||||
if ! matches_user_agent "${{steps.user-agent-set.outputs.result}}" "$expected"; then
|
||||
echo $'::error::\u274C' "Expected user-agent to start with '$expected' and include 'octokit-core.js/', got ${{steps.user-agent-set.outputs.result}}"
|
||||
exit 1
|
||||
fi
|
||||
echo "- Validating user-agent set to an empty string"
|
||||
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}}"
|
||||
expected="actions/github-script"
|
||||
if ! matches_user_agent "${{steps.user-agent-empty.outputs.result}}" "$expected"; then
|
||||
echo $'::error::\u274C' "Expected user-agent to start with '$expected' and include 'octokit-core.js/', got ${{steps.user-agent-empty.outputs.result}}"
|
||||
exit 1
|
||||
fi
|
||||
echo $'\u2705 Test passed' | tee -a $GITHUB_STEP_SUMMARY
|
||||
|
||||
test-get-octokit:
|
||||
name: 'Integration test: getOctokit with token'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/install-dependencies
|
||||
- id: secondary-client
|
||||
name: Create a second client with getOctokit
|
||||
uses: ./
|
||||
env:
|
||||
APP_TOKEN: ${{ github.token }}
|
||||
with:
|
||||
script: |
|
||||
const appOctokit = getOctokit(process.env.APP_TOKEN)
|
||||
const {data} = await appOctokit.rest.repos.get({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo
|
||||
})
|
||||
|
||||
return `${appOctokit !== github}:${data.full_name}`
|
||||
result-encoding: string
|
||||
- run: |
|
||||
echo "- Validating secondary client output"
|
||||
expected="true:actions/github-script"
|
||||
if [[ "${{steps.secondary-client.outputs.result}}" != "$expected" ]]; then
|
||||
echo $'::error::\u274C' "Expected '$expected', got ${{steps.secondary-client.outputs.result}}"
|
||||
exit 1
|
||||
fi
|
||||
echo $'\u2705 Test passed' | tee -a $GITHUB_STEP_SUMMARY
|
||||
|
|
|
|||
11
README.md
11
README.md
|
|
@ -504,6 +504,8 @@ The `GITHUB_TOKEN` used by default is scoped to the current repository, see [Aut
|
|||
|
||||
If you need access to a different repository or an API that the `GITHUB_TOKEN` doesn't have permissions to, you can provide your own [PAT](https://help.github.com/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line) as a secret using the `github-token` input.
|
||||
|
||||
If you need to use multiple tokens in the same script, `getOctokit` is also available in the script context so you can create additional authenticated clients without using `require('@actions/github')`.
|
||||
|
||||
[Learn more about creating and using encrypted secrets](https://docs.github.com/actions/reference/encrypted-secrets)
|
||||
|
||||
```yaml
|
||||
|
|
@ -516,6 +518,8 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v8
|
||||
env:
|
||||
APP_TOKEN: ${{ secrets.MY_OTHER_PAT }}
|
||||
with:
|
||||
github-token: ${{ secrets.MY_PAT }}
|
||||
script: |
|
||||
|
|
@ -525,6 +529,13 @@ jobs:
|
|||
repo: context.repo.repo,
|
||||
labels: ['Triage']
|
||||
})
|
||||
|
||||
const appOctokit = getOctokit(process.env.APP_TOKEN)
|
||||
await appOctokit.rest.repos.createDispatchEvent({
|
||||
owner: 'my-org',
|
||||
repo: 'another-repo',
|
||||
event_type: 'trigger-deploy'
|
||||
})
|
||||
```
|
||||
|
||||
### Using exec package
|
||||
|
|
|
|||
|
|
@ -8,6 +8,18 @@ describe('callAsyncFunction', () => {
|
|||
expect(result).toEqual('bar')
|
||||
})
|
||||
|
||||
test('passes getOctokit through the script context', async () => {
|
||||
const getOctokit = jest.fn().mockReturnValue('secondary-client')
|
||||
|
||||
const result = await callAsyncFunction(
|
||||
{getOctokit} as any,
|
||||
"return getOctokit('token')"
|
||||
)
|
||||
|
||||
expect(getOctokit).toHaveBeenCalledWith('token')
|
||||
expect(result).toEqual('secondary-client')
|
||||
})
|
||||
|
||||
test('throws on ReferenceError', async () => {
|
||||
expect.assertions(1)
|
||||
|
||||
|
|
|
|||
1
dist/index.js
vendored
1
dist/index.js
vendored
|
|
@ -36289,6 +36289,7 @@ async function main() {
|
|||
__original_require__: require,
|
||||
github,
|
||||
octokit: github,
|
||||
getOctokit: lib_github.getOctokit,
|
||||
context: lib_github.context,
|
||||
core: core,
|
||||
exec: exec,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import * as core from '@actions/core'
|
||||
import * as exec from '@actions/exec'
|
||||
import {getOctokit} from '@actions/github'
|
||||
import {Context} from '@actions/github/lib/context'
|
||||
import {GitHub} from '@actions/github/lib/utils'
|
||||
import * as glob from '@actions/glob'
|
||||
|
|
@ -12,6 +13,7 @@ export declare type AsyncFunctionArguments = {
|
|||
core: typeof core
|
||||
github: InstanceType<typeof GitHub>
|
||||
octokit: InstanceType<typeof GitHub>
|
||||
getOctokit: typeof getOctokit
|
||||
exec: typeof exec
|
||||
glob: typeof glob
|
||||
io: typeof io
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ async function main(): Promise<void> {
|
|||
__original_require__: __non_webpack_require__,
|
||||
github,
|
||||
octokit: github,
|
||||
getOctokit,
|
||||
context,
|
||||
core,
|
||||
exec,
|
||||
|
|
|
|||
2
types/async-function.d.ts
vendored
2
types/async-function.d.ts
vendored
|
|
@ -1,6 +1,7 @@
|
|||
/// <reference types="node" />
|
||||
import * as core from '@actions/core';
|
||||
import * as exec from '@actions/exec';
|
||||
import { getOctokit } from '@actions/github';
|
||||
import { Context } from '@actions/github/lib/context';
|
||||
import { GitHub } from '@actions/github/lib/utils';
|
||||
import * as glob from '@actions/glob';
|
||||
|
|
@ -10,6 +11,7 @@ export declare type AsyncFunctionArguments = {
|
|||
core: typeof core;
|
||||
github: InstanceType<typeof GitHub>;
|
||||
octokit: InstanceType<typeof GitHub>;
|
||||
getOctokit: typeof getOctokit;
|
||||
exec: typeof exec;
|
||||
glob: typeof glob;
|
||||
io: typeof io;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue