From 1ff817b3f00f32b56887efe5509a26720861239e Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 16:34:50 +0100 Subject: [PATCH 1/6] add entityMetadata to scaffolder templateInfo field Signed-off-by: Paul Cowan --- .changeset/shaggy-chicken-behave.md | 8 ++++++++ .../src/actions/fetch/cookiecutter.test.ts | 3 +++ .../src/actions/fetch/rails/index.test.ts | 3 +++ .../scaffolder/actions/builtin/fetch/template.test.ts | 3 +++ .../src/scaffolder/dryrun/createDryRunner.ts | 3 +++ .../scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 10 +++++++++- plugins/scaffolder-backend/src/service/router.test.ts | 2 ++ plugins/scaffolder-backend/src/service/router.ts | 1 + plugins/scaffolder-common/src/TaskSpec.ts | 6 ++++-- 9 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 .changeset/shaggy-chicken-behave.md diff --git a/.changeset/shaggy-chicken-behave.md b/.changeset/shaggy-chicken-behave.md new file mode 100644 index 0000000000..6d1700c84a --- /dev/null +++ b/.changeset/shaggy-chicken-behave.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +'@backstage/plugin-scaffolder-backend-module-cookiecutter': minor +'@backstage/plugin-scaffolder-backend-module-rails': minor +'@backstage/plugin-scaffolder-common': minor +--- + +add entityMetadata to the scaffolder templateInfo field diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index 8c501cf8f1..eb28e9bc13 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -92,6 +92,9 @@ describe('fetch:cookiecutter', () => { templateInfo: { entityRef: 'template:default/cookiecutter', baseUrl: 'somebase', + entityMetadata: { + name: 'cookiecutter', + }, }, workspacePath: mockTmpDir, logger: getVoidLogger(), diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts index 597847130a..50f0a9cc00 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts @@ -65,6 +65,9 @@ describe('fetch:rails', () => { templateInfo: { baseUrl: 'somebase', entityRef: 'template:default/myTemplate', + entityMetadata: { + name: 'myTemplate', + }, }, workspacePath: mockTmpDir, logger: getVoidLogger(), diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts index af353bef70..6941db0a30 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts @@ -78,6 +78,9 @@ describe('fetch:template', () => { templateInfo: { baseUrl: 'base-url', entityRef: 'template:default/test-template', + entityMetadata: { + name: 'test-template', + }, }, input: { url: './skeleton', diff --git a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts index f2c3c13509..1179ddb877 100644 --- a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts @@ -106,6 +106,9 @@ export function createDryRunner(options: TemplateTesterCreateOptions) { baseUrl: pathToFileURL( resolveSafeChildPath(contentsPath, 'template.yaml'), ).toString(), + entityMetadata: { + name: 'dry-run', + }, }, }, secrets: input.secrets, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 6b1701380b..4445231270 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -181,13 +181,21 @@ describe('DefaultWorkflowRunner', () => { input: { foo: 1 }, }, ], - templateInfo: { entityRef }, + templateInfo: { + entityRef, + entityMetadata: { + name: 'templateName', + }, + }, }); await runner.execute(task); expect(fakeActionHandler.mock.calls[0][0].templateInfo).toEqual({ entityRef, + entityMetadata: { + name: 'templateName', + }, }); }); diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index e59f222e2d..2ea0ce1651 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -261,6 +261,7 @@ describe('createRouter', () => { name: mockTemplate.metadata?.name, }), baseUrl: 'https://dev.azure.com', + entityMetadata: mockTemplate.metadata, }, }, }), @@ -312,6 +313,7 @@ describe('createRouter', () => { name: mockTemplate.metadata?.name, }), baseUrl: 'https://dev.azure.com', + entityMetadata: mockTemplate.metadata, }, }, }), diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 1c6ea39443..7406c7633f 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -249,6 +249,7 @@ export async function createRouter( name: template.metadata?.name, }), baseUrl, + entityMetadata: template.metadata, }, }; diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 4ba43092ae..775bd5e370 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { UserEntity } from '@backstage/catalog-model'; -import { JsonValue, JsonObject } from '@backstage/types'; +import type { EntityMeta, UserEntity } from '@backstage/catalog-model'; +import type { JsonValue, JsonObject } from '@backstage/types'; /** * Information about a template that is stored on a task specification. @@ -32,6 +32,8 @@ export type TemplateInfo = { * Where the template is stored, so we can resolve relative paths for things like `fetch:template` paths. */ baseUrl?: string; + + entityMetadata: EntityMeta; }; /** From bfbccc3be9c2f7caed71c0e6e225f96e187c0de5 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 16:48:35 +0100 Subject: [PATCH 2/6] run api-report Signed-off-by: Paul Cowan --- plugins/scaffolder-common/api-report.md | 6 ++++-- plugins/scaffolder-common/src/TaskSpec.ts | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index a1c5c2bf23..ce6f8505fb 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -4,10 +4,11 @@ ```ts import { Entity } from '@backstage/catalog-model'; +import type { EntityMeta } from '@backstage/catalog-model'; import { JsonObject } from '@backstage/types'; -import { JsonValue } from '@backstage/types'; +import type { JsonValue } from '@backstage/types'; import { KindValidator } from '@backstage/catalog-model'; -import { UserEntity } from '@backstage/catalog-model'; +import type { UserEntity } from '@backstage/catalog-model'; // @public export type TaskSpec = TaskSpecV1beta3; @@ -64,5 +65,6 @@ export const templateEntityV1beta3Validator: KindValidator; export type TemplateInfo = { entityRef: string; baseUrl?: string; + entityMetadata: EntityMeta; }; ``` diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 775bd5e370..f686b2db36 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -33,6 +33,9 @@ export type TemplateInfo = { */ baseUrl?: string; + /** + * The Template entity's metadata + */ entityMetadata: EntityMeta; }; From a1c4254616e2abfa7a8d50b9cde20b438bc1d287 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 16:57:41 +0100 Subject: [PATCH 3/6] change entityMetadata doc string Signed-off-by: Paul Cowan --- plugins/scaffolder-common/src/TaskSpec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index f686b2db36..b3253be07c 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -34,7 +34,7 @@ export type TemplateInfo = { baseUrl?: string; /** - * The Template entity's metadata + * The metadata of the Template entity */ entityMetadata: EntityMeta; }; From 179b87dd2131859e149b9d31428bec4be3c937b6 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 17:14:26 +0100 Subject: [PATCH 4/6] fix reviewdog errors for changeset Signed-off-by: Paul Cowan --- .changeset/shaggy-chicken-behave.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/shaggy-chicken-behave.md b/.changeset/shaggy-chicken-behave.md index 6d1700c84a..b6cc100695 100644 --- a/.changeset/shaggy-chicken-behave.md +++ b/.changeset/shaggy-chicken-behave.md @@ -5,4 +5,4 @@ '@backstage/plugin-scaffolder-common': minor --- -add entityMetadata to the scaffolder templateInfo field +add entity metadata to the template info type From d7e83f7ccf54cfaa0913337654ea6d34c65ab97f Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 22 Aug 2022 17:17:04 +0100 Subject: [PATCH 5/6] remove unreferenced packages from changeset Signed-off-by: Paul Cowan --- .changeset/shaggy-chicken-behave.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/.changeset/shaggy-chicken-behave.md b/.changeset/shaggy-chicken-behave.md index b6cc100695..41445b0930 100644 --- a/.changeset/shaggy-chicken-behave.md +++ b/.changeset/shaggy-chicken-behave.md @@ -1,7 +1,5 @@ --- '@backstage/plugin-scaffolder-backend': minor -'@backstage/plugin-scaffolder-backend-module-cookiecutter': minor -'@backstage/plugin-scaffolder-backend-module-rails': minor '@backstage/plugin-scaffolder-common': minor --- From 7b24f47bc6e0d3838ea490254338f11dbe19aab2 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Tue, 23 Aug 2022 09:53:48 +0100 Subject: [PATCH 6/6] refactor the TemplateInfo entityMetadata field to an entity object Signed-off-by: Paul Cowan --- .../src/actions/fetch/cookiecutter.test.ts | 3 --- .../src/actions/fetch/rails/index.test.ts | 3 --- .../scaffolder/actions/builtin/fetch/template.test.ts | 3 --- .../src/scaffolder/dryrun/createDryRunner.ts | 3 --- .../scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 10 +--------- plugins/scaffolder-backend/src/service/router.test.ts | 8 ++++++-- plugins/scaffolder-backend/src/service/router.ts | 4 +++- plugins/scaffolder-common/api-report.md | 4 +++- plugins/scaffolder-common/src/TaskSpec.ts | 9 +++++++-- 9 files changed, 20 insertions(+), 27 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index eb28e9bc13..8c501cf8f1 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -92,9 +92,6 @@ describe('fetch:cookiecutter', () => { templateInfo: { entityRef: 'template:default/cookiecutter', baseUrl: 'somebase', - entityMetadata: { - name: 'cookiecutter', - }, }, workspacePath: mockTmpDir, logger: getVoidLogger(), diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts index 50f0a9cc00..597847130a 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts @@ -65,9 +65,6 @@ describe('fetch:rails', () => { templateInfo: { baseUrl: 'somebase', entityRef: 'template:default/myTemplate', - entityMetadata: { - name: 'myTemplate', - }, }, workspacePath: mockTmpDir, logger: getVoidLogger(), diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts index 6941db0a30..af353bef70 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts @@ -78,9 +78,6 @@ describe('fetch:template', () => { templateInfo: { baseUrl: 'base-url', entityRef: 'template:default/test-template', - entityMetadata: { - name: 'test-template', - }, }, input: { url: './skeleton', diff --git a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts index 1179ddb877..f2c3c13509 100644 --- a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts @@ -106,9 +106,6 @@ export function createDryRunner(options: TemplateTesterCreateOptions) { baseUrl: pathToFileURL( resolveSafeChildPath(contentsPath, 'template.yaml'), ).toString(), - entityMetadata: { - name: 'dry-run', - }, }, }, secrets: input.secrets, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 4445231270..6b1701380b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -181,21 +181,13 @@ describe('DefaultWorkflowRunner', () => { input: { foo: 1 }, }, ], - templateInfo: { - entityRef, - entityMetadata: { - name: 'templateName', - }, - }, + templateInfo: { entityRef }, }); await runner.execute(task); expect(fakeActionHandler.mock.calls[0][0].templateInfo).toEqual({ entityRef, - entityMetadata: { - name: 'templateName', - }, }); }); diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 2ea0ce1651..a062272103 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -261,7 +261,9 @@ describe('createRouter', () => { name: mockTemplate.metadata?.name, }), baseUrl: 'https://dev.azure.com', - entityMetadata: mockTemplate.metadata, + entity: { + metadata: mockTemplate.metadata, + }, }, }, }), @@ -313,7 +315,9 @@ describe('createRouter', () => { name: mockTemplate.metadata?.name, }), baseUrl: 'https://dev.azure.com', - entityMetadata: mockTemplate.metadata, + entity: { + metadata: mockTemplate.metadata, + }, }, }, }), diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 7406c7633f..3dddd85c26 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -249,7 +249,9 @@ export async function createRouter( name: template.metadata?.name, }), baseUrl, - entityMetadata: template.metadata, + entity: { + metadata: template.metadata, + }, }, }; diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index ce6f8505fb..8864c0d76d 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -65,6 +65,8 @@ export const templateEntityV1beta3Validator: KindValidator; export type TemplateInfo = { entityRef: string; baseUrl?: string; - entityMetadata: EntityMeta; + entity?: { + metadata: EntityMeta; + }; }; ``` diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index b3253be07c..1c71790736 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -34,9 +34,14 @@ export type TemplateInfo = { baseUrl?: string; /** - * The metadata of the Template entity + * the Template entity */ - entityMetadata: EntityMeta; + entity?: { + /** + * The metadata of the Template + */ + metadata: EntityMeta; + }; }; /**