952a2a7073
This pull request adds support for generating GitHub App installation
tokens for enterprise-level installations.
### What changed
- Added a new `enterprise` input to `action.yml`.
- Wired `enterprise` through `main.js` and `lib/main.js`.
- Added validation so `enterprise` cannot be combined with `owner` or
`repositories`.
- Implemented enterprise installation lookup using the direct GitHub API
route `GET /enterprises/{enterprise}/installation`, then used the
returned installation ID to mint an installation token through
`@octokit/auth-app`.
- Updated `README.md` with enterprise installation usage and input
documentation.
- Updated `dist/main.cjs` for the bundled action.
- Shared token creation retry behavior across repository, owner, and
enterprise paths so server errors and transient network errors are
retried, while client errors fail immediately.
### Tests
Added focused test coverage for:
- enterprise token creation
- enterprise token creation with explicit permissions
- enterprise installation not found
- mutual exclusivity with `owner`
- mutual exclusivity with `repositories`
- owner installation client errors are not retried
- transient network errors are retried during token creation
### Notes
- This keeps the existing repository-scoped token behavior unchanged.
- Owner, repository, and enterprise token creation now share the same
retry policy: server errors and recognized transient network errors are
retried, while client errors fail immediately. This intentionally fixes
the previous owner-path behavior that retried client errors.
Refs:
-
https://github.blog/changelog/2025-07-01-enterprise-level-access-for-github-apps-and-installation-automation-apis/
-
https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#get-an-enterprise-installation-for-the-authenticated-app
---------
Co-authored-by: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
34 lines
939 B
JSON
34 lines
939 B
JSON
{
|
|
"name": "create-github-app-token",
|
|
"private": true,
|
|
"type": "module",
|
|
"version": "3.1.1",
|
|
"description": "GitHub Action for creating a GitHub App Installation Access Token",
|
|
"engines": {
|
|
"node": ">=24.4.0"
|
|
},
|
|
"packageManager": "npm@10.9.4",
|
|
"scripts": {
|
|
"build": "esbuild main.js post.js --bundle --outdir=dist --out-extension:.js=.cjs --platform=node --packages=bundle",
|
|
"test": "c8 --100 node --test tests/index.js",
|
|
"coverage": "c8 report --reporter html",
|
|
"postcoverage": "open-cli coverage/index.html"
|
|
},
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@actions/core": "^3.0.1",
|
|
"@octokit/auth-app": "^8.2.0",
|
|
"@octokit/request": "^10.0.8",
|
|
"is-network-error": "^1.3.2",
|
|
"p-retry": "^8.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"@octokit/openapi": "^22.0.0",
|
|
"c8": "^11.0.0",
|
|
"esbuild": "^0.27.4",
|
|
"open-cli": "^9.0.0",
|
|
"undici": "^7.24.6",
|
|
"yaml": "^2.8.3"
|
|
}
|
|
}
|