888*_*888 4 amazon-web-services typescript aws-codepipeline aws-codebuild aws-cdk
我遵循使用 CDK Pipelines 的持续集成和交付 (CI/CD)指南来实现 CodePipeline。我想知道如何在 CDK 中的管道中添加一个阶段,该阶段将在Source阶段之后但Build阶段之前运行。
这是我的管道代码:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { Repository } from 'aws-cdk-lib/aws-codecommit';
import { CodePipeline, CodePipelineSource, ShellStep } from 'aws-cdk-lib/pipelines';
export class MyPipelineStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const repo = Repository.fromRepositoryName(this, 'CogClientRepo', 'cog-client');
const pipeline = new CodePipeline(this, 'Pipeline', {
pipelineName: 'MyPipeline',
synth: new ShellStep('Synth', {
input: CodePipelineSource.codeCommit(repo, 'main'),
commands: ['npm ci', 'npm run build', 'npx cdk synth']
})
});
}
}
Run Code Online (Sandbox Code Playgroud)
运行后,cdk deploy我发现我可以在控制台Source和Build使用控制台之间添加一个阶段,但我希望它成为 CDK 代码的一部分。

用 TypeScript 编写的 CDK 版本 2.3.0
我使用的是更新的aws-cdk-lib.pipelines模块,而不是aws-cdk-lib.aws_codepipeline模块。
因此,CDK 确定将您创建的操作放置在何处的方式是通过它们的输入和输出。要在源和构建之间添加操作,您需要创建一个操作(或一系列操作),该操作将源输出作为输入,并生成供合成步骤用作输入的输出。
这是 Python 中的示例,在 TS 中的工作方式相同:
my_source_action = CodePipelineSource.code_commit(repo, "main")
my_intermediary_action = CodeBuildStep("myAction", input=my_source_action)
my_synth_action = ShellStep(
"Synth",
input=my_intermediary_action,
commands=['...']
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3544 次 |
| 最近记录: |