From 2938ac6b0d59b33623bed57ab5872a64d2c5866f Mon Sep 17 00:00:00 2001 From: Brian Phillips <28457+brianphillips@users.noreply.github.com> Date: Wed, 17 May 2023 10:38:20 -0500 Subject: [PATCH 1/4] Use permission integration router in jenkins plugin to expose permissions Signed-off-by: Brian Phillips <28457+brianphillips@users.noreply.github.com> --- plugins/jenkins-backend/package.json | 1 + plugins/jenkins-backend/src/service/router.ts | 7 +++++++ yarn.lock | 1 + 3 files changed, 9 insertions(+) diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index f45908c04e..e9630bfb45 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -32,6 +32,7 @@ "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-jenkins-common": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts index 484bfa273f..17cd4097e2 100644 --- a/plugins/jenkins-backend/src/service/router.ts +++ b/plugins/jenkins-backend/src/service/router.ts @@ -28,6 +28,8 @@ import { import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { stringifyError } from '@backstage/errors'; +import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; +import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; /** @public */ export interface RouterOptions { @@ -58,6 +60,11 @@ export async function createRouter( const router = Router(); router.use(express.json()); + router.use( + createPermissionIntegrationRouter({ + permissions: [jenkinsExecutePermission], + }), + ); router.get( '/v1/entity/:namespace/:kind/:name/projects', diff --git a/yarn.lock b/yarn.lock index 7fbe9f51ff..a5cef527ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7161,6 +7161,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-jenkins-common": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" "@types/express": ^4.17.6 "@types/jenkins": ^0.23.1 "@types/supertest": ^2.0.8 From 6c244b42cb065c35523554ab7e4a4bc82d59a402 Mon Sep 17 00:00:00 2001 From: Brian Phillips <28457+brianphillips@users.noreply.github.com> Date: Wed, 17 May 2023 13:38:07 -0500 Subject: [PATCH 2/4] Add array of permisssions from jenkins-common Signed-off-by: Brian Phillips <28457+brianphillips@users.noreply.github.com> --- .changeset/lucky-keys-behave.md | 6 ++++++ plugins/jenkins-backend/src/service/router.ts | 4 ++-- plugins/jenkins-common/src/permissions.ts | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 .changeset/lucky-keys-behave.md diff --git a/.changeset/lucky-keys-behave.md b/.changeset/lucky-keys-behave.md new file mode 100644 index 0000000000..7501c1d693 --- /dev/null +++ b/.changeset/lucky-keys-behave.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-jenkins-common': patch +--- + +Expose permissions through the metadata endpoint. diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts index 17cd4097e2..eea067fab6 100644 --- a/plugins/jenkins-backend/src/service/router.ts +++ b/plugins/jenkins-backend/src/service/router.ts @@ -29,7 +29,7 @@ import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-no import { stringifyEntityRef } from '@backstage/catalog-model'; import { stringifyError } from '@backstage/errors'; import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; -import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; +import { jenkinsPermissions } from '@backstage/plugin-jenkins-common'; /** @public */ export interface RouterOptions { @@ -62,7 +62,7 @@ export async function createRouter( router.use(express.json()); router.use( createPermissionIntegrationRouter({ - permissions: [jenkinsExecutePermission], + permissions: jenkinsPermissions, }), ); diff --git a/plugins/jenkins-common/src/permissions.ts b/plugins/jenkins-common/src/permissions.ts index 311bf993cc..aba79b8493 100644 --- a/plugins/jenkins-common/src/permissions.ts +++ b/plugins/jenkins-common/src/permissions.ts @@ -28,3 +28,10 @@ export const jenkinsExecutePermission = createPermission({ }, resourceType: RESOURCE_TYPE_CATALOG_ENTITY, }); + +/** + * List of all Jenkins permissions + * + * @public + */ +export const jenkinsPermissions = [jenkinsExecutePermission]; From 864a5cfb59c7f7f919a94de36d3b606498b3b627 Mon Sep 17 00:00:00 2001 From: Brian Phillips <28457+brianphillips@users.noreply.github.com> Date: Wed, 17 May 2023 14:03:23 -0500 Subject: [PATCH 3/4] add api report Signed-off-by: Brian Phillips <28457+brianphillips@users.noreply.github.com> --- plugins/jenkins-common/api-report.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/jenkins-common/api-report.md b/plugins/jenkins-common/api-report.md index 771161e1cb..4db5a6c938 100644 --- a/plugins/jenkins-common/api-report.md +++ b/plugins/jenkins-common/api-report.md @@ -8,5 +8,8 @@ import { ResourcePermission } from '@backstage/plugin-permission-common'; // @public export const jenkinsExecutePermission: ResourcePermission<'catalog-entity'>; +// @public +export const jenkinsPermissions: ResourcePermission<'catalog-entity'>[]; + // (No @packageDocumentation comment for this package) ``` From 35e11314d7e9ad6e9caf7e82981a9d83854df601 Mon Sep 17 00:00:00 2001 From: Brian Phillips <28457+brianphillips@users.noreply.github.com> Date: Wed, 17 May 2023 20:36:03 -0500 Subject: [PATCH 4/4] split changesets for each package Signed-off-by: Brian Phillips <28457+brianphillips@users.noreply.github.com> --- .changeset/long-lobsters-brake.md | 5 +++++ .changeset/lucky-keys-behave.md | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changeset/long-lobsters-brake.md diff --git a/.changeset/long-lobsters-brake.md b/.changeset/long-lobsters-brake.md new file mode 100644 index 0000000000..01ae3f4e93 --- /dev/null +++ b/.changeset/long-lobsters-brake.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins-common': patch +--- + +Export list of permissions diff --git a/.changeset/lucky-keys-behave.md b/.changeset/lucky-keys-behave.md index 7501c1d693..a223f83fa6 100644 --- a/.changeset/lucky-keys-behave.md +++ b/.changeset/lucky-keys-behave.md @@ -1,6 +1,5 @@ --- '@backstage/plugin-jenkins-backend': patch -'@backstage/plugin-jenkins-common': patch --- Expose permissions through the metadata endpoint.