diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 0bcbd2f917..ecd9b73750 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -684,6 +684,34 @@ describe('NunjucksWorkflowRunner', () => { expect(output.foo).toEqual('BACKSTAGE'); }); + + it('should include task ID in the templated context', async () => { + const task = createMockTaskWithSpec({ + apiVersion: 'scaffolder.backstage.io/v1beta3', + steps: [ + { + id: 'test', + name: 'name', + action: 'jest-mock-action', + input: { + values: { + taskId: '${{context.task.id}}', + }, + }, + }, + ], + output: {}, + parameters: {}, + }); + + await runner.execute(task); + + expect(fakeActionHandler).toHaveBeenCalledWith( + expect.objectContaining({ + input: { values: { taskId: 'test-workspace' } }, + }), + ); + }); }); describe('redactions', () => { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index 6f7551568f..d5736ef928 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -80,6 +80,11 @@ type TemplateContext = { ref?: string; }; each?: JsonValue; + context: { + task: { + id: string; + }; + }; }; type CheckpointState = @@ -480,11 +485,15 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { const taskTrack = await this.tracker.taskStart(task); await fs.ensureDir(workspacePath); - const context: TemplateContext = { parameters: task.spec.parameters, steps: {}, user: task.spec.user, + context: { + task: { + id: taskId, + }, + }, }; const [decision]: PolicyDecision[] =