From af63168bbd2e766e709aeb5b6ccd75b461e5d36d Mon Sep 17 00:00:00 2001 From: alexforsyth Date: Fri, 17 Nov 2023 17:41:34 -0500 Subject: [PATCH] feat(component-workflows): build a sdk for general purpose usage --- ...-0.1.5-preview.5-026acbc5a3-9d4449c3b7.zip | Bin 0 -> 106056 bytes ...schema-npm-1.4.1-548ecda9d0-1ef02a6cd9.zip | Bin 0 -> 23360 bytes .../components/workflows/.projen/deps.json | 4 ++ packages/components/workflows/.projenrc.ts | 2 +- packages/components/workflows/package.json | 1 + .../workflows/src/actions/action-build.ts | 2 +- .../src/actions/action-cdk-bootstrap.ts | 2 +- .../src/actions/action-cdk-deploy.ts | 2 +- .../src/actions/action-cfn-cleanup.ts | 2 +- .../src/actions/action-cfn-deploy.ts | 2 +- .../src/actions/action-test-reports.ts | 2 +- .../workflows/src/actions/action.ts | 37 ++++++++++--- .../src/generated-sdk/action-group-builder.ts | 37 +++++++++++++ .../workflow-definition-builder.ts | 51 ++++++++++++++++++ packages/components/workflows/src/index.ts | 11 +++- .../components/workflows/src/samples/empty.ts | 2 +- .../components/workflows/src/samples/node.ts | 2 +- .../workflows/src/{workflow => }/workflow.ts | 33 ++++-------- .../workflows/src/workflow/compute.ts | 2 +- .../workflows/src/workflow/triggers.ts | 2 +- .../src/workflow/workflow-builder.ts | 2 +- .../src/workflow/workflow-definition.ts | 21 ++++++++ yarn.lock | 23 +++++++- 23 files changed, 197 insertions(+), 45 deletions(-) create mode 100644 .yarn/cache/@aws-codecatalyst-workflows-sdk-npm-0.1.5-preview.5-026acbc5a3-9d4449c3b7.zip create mode 100644 .yarn/cache/jsonschema-npm-1.4.1-548ecda9d0-1ef02a6cd9.zip create mode 100644 packages/components/workflows/src/generated-sdk/action-group-builder.ts create mode 100644 packages/components/workflows/src/generated-sdk/workflow-definition-builder.ts rename packages/components/workflows/src/{workflow => }/workflow.ts (73%) create mode 100644 packages/components/workflows/src/workflow/workflow-definition.ts diff --git a/.yarn/cache/@aws-codecatalyst-workflows-sdk-npm-0.1.5-preview.5-026acbc5a3-9d4449c3b7.zip b/.yarn/cache/@aws-codecatalyst-workflows-sdk-npm-0.1.5-preview.5-026acbc5a3-9d4449c3b7.zip new file mode 100644 index 0000000000000000000000000000000000000000..27e00cbc8c97d1a8122e377af5fc7f6e4fedd694 GIT binary patch literal 106056 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/jsonschema-npm-1.4.1-548ecda9d0-1ef02a6cd9.zip b/.yarn/cache/jsonschema-npm-1.4.1-548ecda9d0-1ef02a6cd9.zip new file mode 100644 index 0000000000000000000000000000000000000000..9904dda9822ae863e1b162e7d5721c3111f5601c GIT binary patch literal 23360 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 literal 0 HcmV?d00001 diff --git a/packages/components/workflows/.projen/deps.json b/packages/components/workflows/.projen/deps.json index 3dfc6512c..f9c763097 100644 --- a/packages/components/workflows/.projen/deps.json +++ b/packages/components/workflows/.projen/deps.json @@ -87,6 +87,10 @@ "name": "projen", "type": "peer" }, + { + "name": "@aws/codecatalyst-workflows-sdk", + "type": "runtime" + }, { "name": "projen", "version": "0.71.112", diff --git a/packages/components/workflows/.projenrc.ts b/packages/components/workflows/.projenrc.ts index df1b89015..293454f1c 100644 --- a/packages/components/workflows/.projenrc.ts +++ b/packages/components/workflows/.projenrc.ts @@ -4,7 +4,7 @@ const project = new ProjenBlueprintComponent({ defaultReleaseBranch: 'main', name: 'codecatalyst-workflows', copyrightOwner: 'Amazon.com', - deps: ['yaml'], + deps: ['yaml', '@aws/codecatalyst-workflows-sdk'], peerDeps: [ 'projen', '@amazon-codecatalyst/blueprint-component.source-repositories', diff --git a/packages/components/workflows/package.json b/packages/components/workflows/package.json index 588a8467e..2dd364037 100644 --- a/packages/components/workflows/package.json +++ b/packages/components/workflows/package.json @@ -47,6 +47,7 @@ "projen": "*" }, "dependencies": { + "@aws/codecatalyst-workflows-sdk": "0.1.5-preview.5", "projen": "0.71.112", "yaml": "*" }, diff --git a/packages/components/workflows/src/actions/action-build.ts b/packages/components/workflows/src/actions/action-build.ts index 8cb7bb819..a2412af1b 100644 --- a/packages/components/workflows/src/actions/action-build.ts +++ b/packages/components/workflows/src/actions/action-build.ts @@ -8,7 +8,7 @@ import { OutputDefinition, } from './action'; import { WorkflowEnvironment } from '../environment/workflow-environment'; -import { WorkflowDefinition } from '../workflow/workflow'; +import { WorkflowDefinition } from '../workflow/workflow-definition'; export interface BuildActionConfiguration { ActionRoleArn?: string; diff --git a/packages/components/workflows/src/actions/action-cdk-bootstrap.ts b/packages/components/workflows/src/actions/action-cdk-bootstrap.ts index 98eb1128f..90225dc8b 100644 --- a/packages/components/workflows/src/actions/action-cdk-bootstrap.ts +++ b/packages/components/workflows/src/actions/action-cdk-bootstrap.ts @@ -8,7 +8,7 @@ import { InputsDefinition, } from './action'; import { WorkflowEnvironment } from '../environment/workflow-environment'; -import { WorkflowDefinition } from '../workflow/workflow'; +import { WorkflowDefinition } from '../workflow/workflow-definition'; export interface CdkBootstrapActionConfiguration { Region: string; diff --git a/packages/components/workflows/src/actions/action-cdk-deploy.ts b/packages/components/workflows/src/actions/action-cdk-deploy.ts index d254cbbe6..ae395c227 100644 --- a/packages/components/workflows/src/actions/action-cdk-deploy.ts +++ b/packages/components/workflows/src/actions/action-cdk-deploy.ts @@ -9,7 +9,7 @@ import { convertInputsToJsonString, } from './action'; import { WorkflowEnvironment } from '../environment/workflow-environment'; -import { WorkflowDefinition } from '../workflow/workflow'; +import { WorkflowDefinition } from '../workflow/workflow-definition'; export interface CdkDeployActionConfiguration { StackName: string; diff --git a/packages/components/workflows/src/actions/action-cfn-cleanup.ts b/packages/components/workflows/src/actions/action-cfn-cleanup.ts index 2ca2bee67..58e69e1a4 100644 --- a/packages/components/workflows/src/actions/action-cfn-cleanup.ts +++ b/packages/components/workflows/src/actions/action-cfn-cleanup.ts @@ -1,7 +1,7 @@ import { Blueprint } from '@amazon-codecatalyst/blueprints.blueprint'; import { ActionDefiniton, ActionIdentifierAlias, getDefaultActionIdentifier } from './action'; import { BuildActionParameters } from './action-build'; -import { WorkflowDefinition } from '../workflow/workflow'; +import { WorkflowDefinition } from '../workflow/workflow-definition'; export const DEFAULT_DELETE_RESOURCE_WORKFLOW_NAME = 'DANGER-hard-delete-deployed-resources'; diff --git a/packages/components/workflows/src/actions/action-cfn-deploy.ts b/packages/components/workflows/src/actions/action-cfn-deploy.ts index c814ef3bd..dec0a2c67 100644 --- a/packages/components/workflows/src/actions/action-cfn-deploy.ts +++ b/packages/components/workflows/src/actions/action-cfn-deploy.ts @@ -1,7 +1,7 @@ import { Blueprint } from '@amazon-codecatalyst/blueprints.blueprint'; import { getDefaultActionIdentifier, ActionIdentifierAlias, ActionDefiniton } from './action'; import { WorkflowEnvironment } from '../environment/workflow-environment'; -import { WorkflowDefinition } from '../workflow/workflow'; +import { WorkflowDefinition } from '../workflow/workflow-definition'; export interface DeployInputConfiguration { Artifacts: string[]; diff --git a/packages/components/workflows/src/actions/action-test-reports.ts b/packages/components/workflows/src/actions/action-test-reports.ts index 62a830e08..b91b9f9ed 100644 --- a/packages/components/workflows/src/actions/action-test-reports.ts +++ b/packages/components/workflows/src/actions/action-test-reports.ts @@ -1,6 +1,6 @@ import { Blueprint } from '@amazon-codecatalyst/blueprints.blueprint'; import { getDefaultActionIdentifier, ActionIdentifierAlias, ActionDefiniton } from './action'; -import { WorkflowDefinition } from '../workflow/workflow'; +import { WorkflowDefinition } from '../workflow/workflow-definition'; export interface TestReportActionParameters { steps: Step[]; diff --git a/packages/components/workflows/src/actions/action.ts b/packages/components/workflows/src/actions/action.ts index f3f3d7bcd..ab1dc5369 100644 --- a/packages/components/workflows/src/actions/action.ts +++ b/packages/components/workflows/src/actions/action.ts @@ -19,30 +19,53 @@ export enum ActionIdentifierAlias { } const ACTION_IDENTIFIERS: { [key: string]: { default: string; prod: string } } = { - build: { + 'build': { default: 'aws/build-beta@v1', prod: 'aws/build@v1', }, - test: { + 'test': { default: 'aws/managed-test-gamma@v1', prod: 'aws/managed-test@v1', }, - deploy: { + 'deploy': { default: 'aws/cfn-deploy-gamma@v1', prod: 'aws/cfn-deploy@v1', }, - cdkDeploy: { + 'cdkDeploy': { default: 'aws/cdk-deploy-gamma@v1', prod: 'aws/cdk-deploy@v1', }, - cdkBootstrap: { + 'cdkBootstrap': { + default: 'aws/cdk-bootstrap-gamma@v1', + prod: 'aws/cdk-bootstrap@v1', + }, + 'aws/build@v1': { + default: 'aws/build-beta@v1', + prod: 'aws/build@v1', + }, + 'aws/managed-test@v1': { + default: 'aws/managed-test-gamma@v1', + prod: 'aws/managed-test@v1', + }, + 'aws/cfn-deploy@v1': { + default: 'aws/cfn-deploy-gamma@v1', + prod: 'aws/cfn-deploy@v1', + }, + 'aws/cdk-deploy@v1': { + default: 'aws/cdk-deploy-gamma@v1', + prod: 'aws/cdk-deploy@v1', + }, + 'aws/cdk-bootstrap@v1': { default: 'aws/cdk-bootstrap-gamma@v1', prod: 'aws/cdk-bootstrap@v1', }, }; -export function getDefaultActionIdentifier(alias: ActionIdentifierAlias, environmentIdentifier: string = 'default'): string | undefined { - return ACTION_IDENTIFIERS[alias]?.[environmentIdentifier] ?? ACTION_IDENTIFIERS[alias]?.default; +export function getDefaultActionIdentifier(identifer: string, environmentIdentifier: string = 'default'): string | undefined { + if (ACTION_IDENTIFIERS[identifer]) { + return ACTION_IDENTIFIERS[identifer]?.[environmentIdentifier] ?? ACTION_IDENTIFIERS[identifer]?.default; + } + return identifer; } type TypeSupportedCompute = ComputeConfiguration; diff --git a/packages/components/workflows/src/generated-sdk/action-group-builder.ts b/packages/components/workflows/src/generated-sdk/action-group-builder.ts new file mode 100644 index 000000000..9e3e44207 --- /dev/null +++ b/packages/components/workflows/src/generated-sdk/action-group-builder.ts @@ -0,0 +1,37 @@ +import { Blueprint } from '@amazon-codecatalyst/blueprints.blueprint'; +import * as sdk from '@aws/codecatalyst-workflows-sdk'; +import { getDefaultActionIdentifier } from '../actions/action'; + +/** + * This wraps the generated codecatalyst workflows sdk [@aws/codecatalyst-workflows-sdk]. + * @experimental + */ +export class ActionGroupDefinitionBuilder { + blueprint: Blueprint; + definition: sdk.ActionGroup; + + constructor( + blueprint: Blueprint, + options: { + starterDefinition?: Partial; + }, + ) { + this.blueprint = blueprint; + this.definition = { + ...options.starterDefinition, + Actions: {}, + }; + } + + setDependsOn(dependsOn: string[]) { + this.definition.DependsOn = dependsOn; + } + + addAction(name: string, action: T, _options?: {} | undefined): void { + this.definition.Actions = this.definition.Actions || {}; + this.definition.Actions[name] = { + ...action, + Identifier: getDefaultActionIdentifier(action.Identifier, this.blueprint.context.environmentId) as any, + }; + } +} diff --git a/packages/components/workflows/src/generated-sdk/workflow-definition-builder.ts b/packages/components/workflows/src/generated-sdk/workflow-definition-builder.ts new file mode 100644 index 000000000..72e828742 --- /dev/null +++ b/packages/components/workflows/src/generated-sdk/workflow-definition-builder.ts @@ -0,0 +1,51 @@ +import { Blueprint } from '@amazon-codecatalyst/blueprints.blueprint'; +import * as sdk from '@aws/codecatalyst-workflows-sdk'; +import { getDefaultActionIdentifier } from '../actions/action'; + +/** + * This wraps the generated codecatalyst workflows sdk [@aws/codecatalyst-workflows-sdk]. + * @experimental + */ +export class WorkflowDefinitionBuilder { + blueprint: Blueprint; + genericBuilder: sdk.WorkflowDefinition; + + constructor( + blueprint: Blueprint, + options: { + starterDefinition?: Partial; + }, + ) { + const name = options.starterDefinition?.Name || 'build-workflow'; + + this.genericBuilder = new sdk.WorkflowDefinition(name, { + workflow: options.starterDefinition, + }); + this.blueprint = blueprint; + } + + setName(name: string) { + this.genericBuilder.definition.Name = name; + } + + getDefinition(): sdk.Workflow { + return this.genericBuilder.definition; + } + + setDefinition(definition: sdk.Workflow) { + this.genericBuilder.definition = definition; + } + + addAction(name: string, action: T, _options?: {} | undefined): void { + this.genericBuilder.addAction(name, { + ...action, + Identifier: getDefaultActionIdentifier(action.Identifier, this.blueprint.context.environmentId), + }); + } + + addActionGroup(name: string, actionGroup: T, _options?: {} | undefined): void { + this.genericBuilder.addAction(name, { + ...actionGroup, + }); + } +} diff --git a/packages/components/workflows/src/index.ts b/packages/components/workflows/src/index.ts index 806bc704c..89e660407 100644 --- a/packages/components/workflows/src/index.ts +++ b/packages/components/workflows/src/index.ts @@ -1,4 +1,4 @@ -export * from './workflow/workflow'; +export * from './workflow/workflow-definition'; export * from './workflow/workflow-builder'; export * from './workflow/sources'; export * from './workflow/triggers'; @@ -18,3 +18,12 @@ export * from './actions/action-cfn-deploy'; export * from './actions/action-test-reports'; export * from './actions/action-cdk-deploy'; export * from './actions/action-cdk-bootstrap'; + +export * from './workflow'; + +/** + * Experimental sdk generated from schemas + */ +export * as sdk from '@aws/codecatalyst-workflows-sdk'; +export * from './generated-sdk/action-group-builder'; +export * from './generated-sdk/workflow-definition-builder'; diff --git a/packages/components/workflows/src/samples/empty.ts b/packages/components/workflows/src/samples/empty.ts index 3bcf37279..65271d715 100644 --- a/packages/components/workflows/src/samples/empty.ts +++ b/packages/components/workflows/src/samples/empty.ts @@ -1,5 +1,5 @@ import { ComputeType, ComputeFleet } from '../workflow/compute'; -import { WorkflowDefinition } from '../workflow/workflow'; +import { WorkflowDefinition } from '../workflow/workflow-definition'; export function makeEmptyWorkflow(): WorkflowDefinition { return { diff --git a/packages/components/workflows/src/samples/node.ts b/packages/components/workflows/src/samples/node.ts index 309f9f5b4..228214f76 100644 --- a/packages/components/workflows/src/samples/node.ts +++ b/packages/components/workflows/src/samples/node.ts @@ -1,5 +1,5 @@ import { TriggerType } from '../workflow/triggers'; -import { WorkflowDefinition } from '../workflow/workflow'; +import { WorkflowDefinition } from '../workflow/workflow-definition'; export class NodeWorkflowDefinitionSamples { public static readonly build: WorkflowDefinition = { diff --git a/packages/components/workflows/src/workflow/workflow.ts b/packages/components/workflows/src/workflow.ts similarity index 73% rename from packages/components/workflows/src/workflow/workflow.ts rename to packages/components/workflows/src/workflow.ts index 39368d979..1310faf81 100644 --- a/packages/components/workflows/src/workflow/workflow.ts +++ b/packages/components/workflows/src/workflow.ts @@ -1,29 +1,11 @@ import { SourceFile, SourceRepository } from '@amazon-codecatalyst/blueprint-component.source-repositories'; import { Blueprint } from '@amazon-codecatalyst/blueprints.blueprint'; +import * as sdk from '@aws/codecatalyst-workflows-sdk'; import { Component } from 'projen'; import * as YAML from 'yaml'; -import { ComputeDefintion } from './compute'; -import { SourceDefiniton } from './sources'; -import { TriggerDefiniton } from './triggers'; - -export enum RunModeDefiniton { - PARALLEL = 'PARALLEL', - QUEUED = 'QUEUED', - SUPERSEDED = 'SUPERSEDED', -} - -export interface WorkflowDefinition { - Name: string; - SchemaVersion?: string; - RunMode?: RunModeDefiniton; - Sources?: SourceDefiniton; - Triggers?: TriggerDefiniton[]; - Compute?: ComputeDefintion; - Actions?: { - [id: string]: any; - }; -} +import { WorkflowDefinition } from './workflow/workflow-definition'; +export const workflowLocation = '.codecatalyst/workflows'; export interface WorkflowOptions { /** * Additional comments to be added to the top of the generated .yaml file of the workflow. @@ -42,10 +24,13 @@ export interface WorkflowOptions { YAMLOptions?: YAML.DocumentOptions & YAML.SchemaOptions & YAML.ParseOptions & YAML.CreateNodeOptions & YAML.ToStringOptions; } -export const workflowLocation = '.codecatalyst/workflows'; - export class Workflow extends Component { - constructor(blueprint: Blueprint, sourceRepository: SourceRepository, workflow: WorkflowDefinition | any, options?: WorkflowOptions) { + constructor( + blueprint: Blueprint, + sourceRepository: SourceRepository, + workflow: WorkflowDefinition | sdk.Workflow | any, + options?: WorkflowOptions, + ) { super(blueprint); /** diff --git a/packages/components/workflows/src/workflow/compute.ts b/packages/components/workflows/src/workflow/compute.ts index f7c895d75..82d03fa56 100644 --- a/packages/components/workflows/src/workflow/compute.ts +++ b/packages/components/workflows/src/workflow/compute.ts @@ -1,4 +1,4 @@ -import { WorkflowDefinition } from './workflow'; +import { WorkflowDefinition } from './workflow-definition'; export interface ComputeDefintion { Type: ComputeType; Fleet: ComputeFleet; diff --git a/packages/components/workflows/src/workflow/triggers.ts b/packages/components/workflows/src/workflow/triggers.ts index d655d31de..4ce2f65f8 100644 --- a/packages/components/workflows/src/workflow/triggers.ts +++ b/packages/components/workflows/src/workflow/triggers.ts @@ -1,4 +1,4 @@ -import { WorkflowDefinition } from './workflow'; +import { WorkflowDefinition } from './workflow-definition'; export interface TriggerDefiniton { Type: TriggerType; diff --git a/packages/components/workflows/src/workflow/workflow-builder.ts b/packages/components/workflows/src/workflow/workflow-builder.ts index bbcfba813..0d1ebebd3 100644 --- a/packages/components/workflows/src/workflow/workflow-builder.ts +++ b/packages/components/workflows/src/workflow/workflow-builder.ts @@ -1,6 +1,6 @@ import { Blueprint } from '@amazon-codecatalyst/blueprints.blueprint'; import { addGenericBranchTrigger, addGenericPullRequestTrigger, PullRequestEvent } from './triggers'; -import { WorkflowDefinition } from './workflow'; +import { WorkflowDefinition } from './workflow-definition'; import { ComputeDefintion, TriggerDefiniton } from '..'; import { addGenericBuildAction, BuildActionParameters } from '../actions/action-build'; import { addGenericCdkBootstrapAction, CdkBootstrapActionParameters } from '../actions/action-cdk-bootstrap'; diff --git a/packages/components/workflows/src/workflow/workflow-definition.ts b/packages/components/workflows/src/workflow/workflow-definition.ts new file mode 100644 index 000000000..41b82e583 --- /dev/null +++ b/packages/components/workflows/src/workflow/workflow-definition.ts @@ -0,0 +1,21 @@ +import { ComputeDefintion } from './compute'; +import { SourceDefiniton } from './sources'; +import { TriggerDefiniton } from './triggers'; + +export enum RunModeDefiniton { + PARALLEL = 'PARALLEL', + QUEUED = 'QUEUED', + SUPERSEDED = 'SUPERSEDED', +} + +export interface WorkflowDefinition { + Name: string; + SchemaVersion?: string; + RunMode?: RunModeDefiniton; + Sources?: SourceDefiniton; + Triggers?: TriggerDefiniton[]; + Compute?: ComputeDefintion; + Actions?: { + [id: string]: any; + }; +} diff --git a/yarn.lock b/yarn.lock index 69a6ae490..86f4fcf1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -104,6 +104,7 @@ __metadata: "@amazon-codecatalyst/blueprint-component.source-repositories": "*" "@amazon-codecatalyst/blueprint-util.projen-blueprint-component": "*" "@amazon-codecatalyst/blueprints.blueprint": "*" + "@aws/codecatalyst-workflows-sdk": 0.1.5-preview.5 "@types/node": ^18 "@typescript-eslint/eslint-plugin": ^5 "@typescript-eslint/parser": ^5 @@ -1127,6 +1128,19 @@ __metadata: languageName: node linkType: hard +"@aws/codecatalyst-workflows-sdk@npm:0.1.5-preview.5": + version: 0.1.5-preview.5 + resolution: "@aws/codecatalyst-workflows-sdk@npm:0.1.5-preview.5" + dependencies: + globule: ^1.3.4 + js-yaml: ^4.1.0 + jsonschema: ^1.4.1 + peerDependencies: + projen: ^0.71.112 + checksum: 9d4449c3b7c13ea5d2540606b3c5cc2884bc1cdacf8a5f0098b28d4fbce8675f2404c9f30d429d34d7bd430b6daec909ce0cb9289a66b4f86783531cbb85d0d3 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.5": version: 7.22.5 resolution: "@babel/code-frame@npm:7.22.5" @@ -7495,7 +7509,7 @@ __metadata: languageName: node linkType: hard -"globule@npm:*": +"globule@npm:*, globule@npm:^1.3.4": version: 1.3.4 resolution: "globule@npm:1.3.4" dependencies: @@ -9583,6 +9597,13 @@ __metadata: languageName: node linkType: hard +"jsonschema@npm:^1.4.1": + version: 1.4.1 + resolution: "jsonschema@npm:1.4.1" + checksum: 1ef02a6cd9bc32241ec86bbf1300bdbc3b5f2d8df6eb795517cf7d1cd9909e7beba1e54fdf73990fd66be98a182bda9add9607296b0cb00b1348212988e424b2 + languageName: node + linkType: hard + "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": version: 3.3.4 resolution: "jsx-ast-utils@npm:3.3.4"