From c6a08fe95417031934805f30efeba7c488fe5e2b Mon Sep 17 00:00:00 2001 From: Tyler Davis Date: Sun, 16 Mar 2025 20:49:41 +1100 Subject: [PATCH] Add support for lifecycle in template entities Signed-off-by: Tyler Davis --- .../scaffolder-common/src/Template.v1beta3.schema.json | 7 +++++++ .../src/TemplateEntityV1beta3.test.ts | 10 ++++++++++ plugins/scaffolder-common/src/TemplateEntityV1beta3.ts | 4 ++++ 3 files changed, 21 insertions(+) diff --git a/plugins/scaffolder-common/src/Template.v1beta3.schema.json b/plugins/scaffolder-common/src/Template.v1beta3.schema.json index 58f8ef240a..a9f846068c 100644 --- a/plugins/scaffolder-common/src/Template.v1beta3.schema.json +++ b/plugins/scaffolder-common/src/Template.v1beta3.schema.json @@ -15,6 +15,7 @@ "spec": { "owner": "artist-relations-team", "type": "website", + "lifecycle": "production", "parameters": { "required": ["name", "description", "repoUrl"], "backstage:permissions": { @@ -95,6 +96,12 @@ "description": "The user (or group) owner of the template", "minLength": 1 }, + "lifecycle": { + "type": "string", + "description": "The lifecycle state of the template.", + "examples": ["experimental", "production", "deprecated"], + "minLength": 1 + }, "parameters": { "oneOf": [ { diff --git a/plugins/scaffolder-common/src/TemplateEntityV1beta3.test.ts b/plugins/scaffolder-common/src/TemplateEntityV1beta3.test.ts index 432292548e..744ec3ad9c 100644 --- a/plugins/scaffolder-common/src/TemplateEntityV1beta3.test.ts +++ b/plugins/scaffolder-common/src/TemplateEntityV1beta3.test.ts @@ -181,4 +181,14 @@ describe('templateEntityV1beta3Validator', () => { entity.spec.steps[0]['backstage:permissions'] = true as {}; expect(() => validator(entity)).toThrow(/must be object/); }); + + it('accepts undefined lifecycle', async () => { + delete (entity as any).spec.lifecycle; + expect(validator(entity)).toBe(entity); + }); + + it('accepts valid lifecycle', async () => { + (entity as any).spec.lifecycle = 'production'; + expect(validator(entity)).toBe(entity); + }); }); diff --git a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts index c5b576b5c2..304057af77 100644 --- a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts +++ b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts @@ -80,6 +80,10 @@ export interface TemplateEntityV1beta3 extends Entity { * The owner entityRef of the TemplateEntity */ owner?: string; + /** + * Specifies the lifecycle phase of the TemplateEntity + */ + lifecycle?: string; }; }