mirror of
https://github.com/actions/github-script.git
synced 2026-05-13 11:26:55 +00:00
feat: expose getOctokit factory in script context
Add pre-configured getOctokit factory to the script context, enabling multi-token workflows directly inside github-script. - getOctokit(token, opts, ...plugins) inherits action config (retry, userAgent, etc.) - Deep-merges request and retry options, deduplicates plugins - stripUndefined prevents baseUrl clobber on GHES - Integration test job with dynamic repo name (fork-friendly) - 32 tests passing (15 factory + 4 integration + 6 getOctokit + 7 existing)
This commit is contained in:
48
.github/workflows/integration.yml
vendored
48
.github/workflows/integration.yml
vendored
@@ -155,21 +155,51 @@ jobs:
|
||||
result-encoding: string
|
||||
- run: |
|
||||
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}}"
|
||||
ua="${{steps.user-agent-default.outputs.result}}"
|
||||
if [[ "$ua" != "actions/github-script octokit-core.js/"* ]] && [[ "$ua" != "actions/github-script actions_orchestration_id/"* ]]; then
|
||||
echo $'::error::\u274C' "Expected user-agent to start with 'actions/github-script', got $ua"
|
||||
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}}"
|
||||
ua="${{steps.user-agent-set.outputs.result}}"
|
||||
if [[ "$ua" != "foobar octokit-core.js/"* ]] && [[ "$ua" != "foobar actions_orchestration_id/"* ]]; then
|
||||
echo $'::error::\u274C' "Expected user-agent to start with 'foobar', got $ua"
|
||||
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}}"
|
||||
ua="${{steps.user-agent-empty.outputs.result}}"
|
||||
if [[ "$ua" != "actions/github-script octokit-core.js/"* ]] && [[ "$ua" != "actions/github-script actions_orchestration_id/"* ]]; then
|
||||
echo $'::error::\u274C' "Expected user-agent to start with 'actions/github-script', got $ua"
|
||||
exit 1
|
||||
fi
|
||||
echo $'\u2705 Test passed' | tee -a $GITHUB_STEP_SUMMARY
|
||||
|
||||
test-get-octokit:
|
||||
name: 'Integration test: getOctokit'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Create secondary client with getOctokit
|
||||
uses: ./
|
||||
id: secondary-client
|
||||
env:
|
||||
APP_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
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:${{ github.repository }}"
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user