Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| db3cdf4098 | |||
| d64d7d7355 | |||
| 1b6f53e48e | |||
| 061a84d5f5 | |||
| c8f34a61a8 | |||
| 4821f52fa7 | |||
| 2950cbc446 |
@@ -28,6 +28,6 @@ jobs:
|
||||
- name: Run permission inputs update script
|
||||
run: node scripts/update-permission-inputs.js
|
||||
- name: Commit changes
|
||||
uses: stefanzweifel/git-auto-commit-action@e348103e9026cc0eee72ae06630dbe30c8bf7a79 # v5.1.0
|
||||
uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0
|
||||
with:
|
||||
commit_message: 'feat: update permission inputs'
|
||||
|
||||
Vendored
+15
-13
@@ -33638,6 +33638,11 @@ var require_sqlite_cache_store = __commonJS({
|
||||
}
|
||||
this.#db = new DatabaseSync(opts?.location ?? ":memory:");
|
||||
this.#db.exec(`
|
||||
PRAGMA journal_mode = WAL;
|
||||
PRAGMA synchronous = NORMAL;
|
||||
PRAGMA temp_store = memory;
|
||||
PRAGMA optimize;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION7} (
|
||||
-- Data specific to us
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -33657,9 +33662,8 @@ var require_sqlite_cache_store = __commonJS({
|
||||
staleAt INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_url ON cacheInterceptorV${VERSION7}(url);
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_method ON cacheInterceptorV${VERSION7}(method);
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_deleteAt ON cacheInterceptorV${VERSION7}(deleteAt);
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_getValuesQuery ON cacheInterceptorV${VERSION7}(url, method, deleteAt);
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_deleteByUrlQuery ON cacheInterceptorV${VERSION7}(deleteAt);
|
||||
`);
|
||||
this.#getValuesQuery = this.#db.prepare(`
|
||||
SELECT
|
||||
@@ -33836,7 +33840,7 @@ var require_sqlite_cache_store = __commonJS({
|
||||
this.#deleteByUrlQuery.run(this.#makeValueUrl(key));
|
||||
}
|
||||
#prune() {
|
||||
if (this.size <= this.#maxCount) {
|
||||
if (Number.isFinite(this.#maxCount) && this.size <= this.#maxCount) {
|
||||
return 0;
|
||||
}
|
||||
{
|
||||
@@ -41375,7 +41379,7 @@ async function waitForAccessToken(request2, clientId, clientType, verification)
|
||||
return waitForAccessToken(request2, clientId, clientType, verification);
|
||||
}
|
||||
if (errorType === "slow_down") {
|
||||
await wait(verification.interval + 5);
|
||||
await wait(verification.interval + 7);
|
||||
return waitForAccessToken(request2, clientId, clientType, verification);
|
||||
}
|
||||
throw error;
|
||||
@@ -42345,7 +42349,7 @@ async function sendRequestWithRetries(state, request2, options, createdAt, retri
|
||||
return sendRequestWithRetries(state, request2, options, createdAt, retries);
|
||||
}
|
||||
}
|
||||
var VERSION6 = "7.2.0";
|
||||
var VERSION6 = "7.2.1";
|
||||
function createAppAuth(options) {
|
||||
if (!options.appId) {
|
||||
throw new Error("[@octokit/auth-app] appId option is required");
|
||||
@@ -42394,8 +42398,9 @@ function createAppAuth(options) {
|
||||
// lib/get-permissions-from-inputs.js
|
||||
function getPermissionsFromInputs(env) {
|
||||
return Object.entries(env).reduce((permissions2, [key, value]) => {
|
||||
if (!key.startsWith("INPUT_PERMISSION_")) return permissions2;
|
||||
const permission = key.slice("INPUT_PERMISSION_".length).toLowerCase();
|
||||
if (!key.startsWith("INPUT_PERMISSION-")) return permissions2;
|
||||
if (!value) return permissions2;
|
||||
const permission = key.slice("INPUT_PERMISSION-".length).toLowerCase();
|
||||
if (permissions2 === void 0) {
|
||||
return { [permission]: value };
|
||||
}
|
||||
@@ -42568,6 +42573,7 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
|
||||
permissions2
|
||||
),
|
||||
{
|
||||
shouldRetry: (error) => error.status >= 500,
|
||||
onFailedAttempt: (error) => {
|
||||
core3.info(
|
||||
`Failed to create token for "${parsedRepositoryNames.join(
|
||||
@@ -42692,14 +42698,10 @@ var main_default = main(
|
||||
/*! Bundled license information:
|
||||
|
||||
undici/lib/fetch/body.js:
|
||||
(*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)
|
||||
|
||||
undici/lib/websocket/frame.js:
|
||||
(*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
|
||||
|
||||
undici/lib/web/fetch/body.js:
|
||||
(*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)
|
||||
|
||||
undici/lib/websocket/frame.js:
|
||||
undici/lib/web/websocket/frame.js:
|
||||
(*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
|
||||
|
||||
|
||||
Vendored
+9
-9
@@ -33404,6 +33404,11 @@ var require_sqlite_cache_store = __commonJS({
|
||||
}
|
||||
this.#db = new DatabaseSync(opts?.location ?? ":memory:");
|
||||
this.#db.exec(`
|
||||
PRAGMA journal_mode = WAL;
|
||||
PRAGMA synchronous = NORMAL;
|
||||
PRAGMA temp_store = memory;
|
||||
PRAGMA optimize;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION3} (
|
||||
-- Data specific to us
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -33423,9 +33428,8 @@ var require_sqlite_cache_store = __commonJS({
|
||||
staleAt INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION3}_url ON cacheInterceptorV${VERSION3}(url);
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION3}_method ON cacheInterceptorV${VERSION3}(method);
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION3}_deleteAt ON cacheInterceptorV${VERSION3}(deleteAt);
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION3}_getValuesQuery ON cacheInterceptorV${VERSION3}(url, method, deleteAt);
|
||||
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION3}_deleteByUrlQuery ON cacheInterceptorV${VERSION3}(deleteAt);
|
||||
`);
|
||||
this.#getValuesQuery = this.#db.prepare(`
|
||||
SELECT
|
||||
@@ -33602,7 +33606,7 @@ var require_sqlite_cache_store = __commonJS({
|
||||
this.#deleteByUrlQuery.run(this.#makeValueUrl(key));
|
||||
}
|
||||
#prune() {
|
||||
if (this.size <= this.#maxCount) {
|
||||
if (Number.isFinite(this.#maxCount) && this.size <= this.#maxCount) {
|
||||
return 0;
|
||||
}
|
||||
{
|
||||
@@ -40917,14 +40921,10 @@ post(import_core2.default, request_default).catch((error) => {
|
||||
/*! Bundled license information:
|
||||
|
||||
undici/lib/fetch/body.js:
|
||||
(*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)
|
||||
|
||||
undici/lib/websocket/frame.js:
|
||||
(*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
|
||||
|
||||
undici/lib/web/fetch/body.js:
|
||||
(*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)
|
||||
|
||||
undici/lib/websocket/frame.js:
|
||||
undici/lib/web/websocket/frame.js:
|
||||
(*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
|
||||
*/
|
||||
|
||||
@@ -7,9 +7,12 @@
|
||||
*/
|
||||
export function getPermissionsFromInputs(env) {
|
||||
return Object.entries(env).reduce((permissions, [key, value]) => {
|
||||
if (!key.startsWith("INPUT_PERMISSION_")) return permissions;
|
||||
if (!key.startsWith("INPUT_PERMISSION-")) return permissions;
|
||||
if (!value) return permissions;
|
||||
|
||||
const permission = key.slice("INPUT_PERMISSION_".length).toLowerCase();
|
||||
const permission = key.slice("INPUT_PERMISSION-".length).toLowerCase();
|
||||
|
||||
// Inherit app permissions if no permissions inputs are set
|
||||
if (permissions === undefined) {
|
||||
return { [permission]: value };
|
||||
}
|
||||
|
||||
@@ -89,6 +89,7 @@ export async function main(
|
||||
permissions
|
||||
),
|
||||
{
|
||||
shouldRetry: (error) => error.status >= 500,
|
||||
onFailedAttempt: (error) => {
|
||||
core.info(
|
||||
`Failed to create token for "${parsedRepositoryNames.join(
|
||||
|
||||
Generated
+372
-468
File diff suppressed because it is too large
Load Diff
+7
-7
@@ -2,7 +2,7 @@
|
||||
"name": "create-github-app-token",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"version": "2.0.3",
|
||||
"version": "2.0.5",
|
||||
"description": "GitHub Action for creating a GitHub App Installation Access Token",
|
||||
"scripts": {
|
||||
"build": "esbuild main.js post.js --bundle --outdir=dist --out-extension:.js=.cjs --platform=node --target=node20.0.0 --packages=bundle",
|
||||
@@ -13,18 +13,18 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.11.1",
|
||||
"@octokit/auth-app": "^7.2.0",
|
||||
"@octokit/auth-app": "^7.2.1",
|
||||
"@octokit/request": "^9.2.2",
|
||||
"p-retry": "^6.2.1",
|
||||
"undici": "^7.7.0"
|
||||
"undici": "^7.8.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@octokit/openapi": "^18.2.0",
|
||||
"@octokit/openapi": "^19.0.0",
|
||||
"@sinonjs/fake-timers": "^14.0.0",
|
||||
"ava": "^6.2.0",
|
||||
"ava": "^6.3.0",
|
||||
"c8": "^10.1.3",
|
||||
"dotenv": "^16.4.7",
|
||||
"esbuild": "^0.25.2",
|
||||
"dotenv": "^16.5.0",
|
||||
"esbuild": "^0.25.3",
|
||||
"execa": "^9.5.2",
|
||||
"open-cli": "^8.0.0",
|
||||
"yaml": "^2.7.1"
|
||||
|
||||
@@ -2,6 +2,6 @@ import { test } from "./main.js";
|
||||
|
||||
// Verify `main` successfully sets permissions
|
||||
await test(() => {
|
||||
process.env.INPUT_PERMISSION_ISSUES = `write`;
|
||||
process.env.INPUT_PERMISSION_PULL_REQUESTS = `read`;
|
||||
process.env["INPUT_PERMISSION-ISSUES"] = `write`;
|
||||
process.env["INPUT_PERMISSION-PULL-REQUESTS"] = `read`;
|
||||
});
|
||||
|
||||
+5
-3
@@ -38,6 +38,8 @@ so0tiQKBgGQXZaxaXhYUcxYHuCkQ3V4Vsj3ezlM92xXlP32SGFm3KgFhYy9kATxw
|
||||
Cax1ytZzvlrKLQyQFVK1COs2rHt7W4cJ7op7C8zXfsigXCiejnS664oAuX8sQZID
|
||||
x3WQZRiXlWejSMUAHuMwXrhGlltF3lw83+xAjnqsVp75kGS6OH61
|
||||
-----END RSA PRIVATE KEY-----`,
|
||||
// The Actions runner sets all inputs to empty strings if not set.
|
||||
"INPUT_PERMISSION-ADMINISTRATION": "",
|
||||
};
|
||||
|
||||
export async function test(cb = (_mockPool) => {}, env = DEFAULT_ENV) {
|
||||
@@ -61,7 +63,7 @@ export async function test(cb = (_mockPool) => {}, env = DEFAULT_ENV) {
|
||||
const owner = env.INPUT_OWNER ?? env.GITHUB_REPOSITORY_OWNER;
|
||||
const currentRepoName = env.GITHUB_REPOSITORY.split("/")[1];
|
||||
const repo = encodeURIComponent(
|
||||
(env.INPUT_REPOSITORIES ?? currentRepoName).split(",")[0],
|
||||
(env.INPUT_REPOSITORIES ?? currentRepoName).split(",")[0]
|
||||
);
|
||||
|
||||
mockPool
|
||||
@@ -77,7 +79,7 @@ export async function test(cb = (_mockPool) => {}, env = DEFAULT_ENV) {
|
||||
.reply(
|
||||
200,
|
||||
{ id: mockInstallationId, app_slug: mockAppSlug },
|
||||
{ headers: { "content-type": "application/json" } },
|
||||
{ headers: { "content-type": "application/json" } }
|
||||
);
|
||||
|
||||
// Mock installation access token request
|
||||
@@ -98,7 +100,7 @@ export async function test(cb = (_mockPool) => {}, env = DEFAULT_ENV) {
|
||||
.reply(
|
||||
201,
|
||||
{ token: mockInstallationAccessToken, expires_at: mockExpiresAt },
|
||||
{ headers: { "content-type": "application/json" } },
|
||||
{ headers: { "content-type": "application/json" } }
|
||||
);
|
||||
|
||||
// Run the callback
|
||||
|
||||
@@ -331,7 +331,7 @@ Generated by [AVA](https://avajs.dev).
|
||||
--- REQUESTS ---␊
|
||||
GET /repos/actions/create-github-app-token/installation␊
|
||||
POST /app/installations/123456/access_tokens␊
|
||||
{"repositories":["create-github-app-token"],"permissions":{"issues":"write","pull_requests":"read"}}`
|
||||
{"repositories":["create-github-app-token"],"permissions":{"issues":"write","pull-requests":"read"}}`
|
||||
|
||||
## post-revoke-token-fail-response.test.js
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user