【问题标题】:AWS CDK CodePipeline add a stage between Source and BuildAWS CDK CodePipeline 在 Source 和 Build 之间添加一个阶段
【发布时间】:2022-01-06 00:03:15
【问题描述】:

我按照Continuous integration and delivery (CI/CD) using CDK Pipelines 指南实施了 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']
      })
    });
  }
}

运行cdk deploy 后,我发现我可以使用控制台在SourceBuild 之间添加一个阶段,但我希望这成为CDK 代码的一部分。

用 TypeScript 编写的 CDK 版本 2.3.0
我使用的是更新的 aws-cdk-lib.pipelines 模块,而不是 aws-cdk-lib.aws_codepipeline 模块。

【问题讨论】:

    标签: typescript amazon-web-services aws-cdk aws-codepipeline aws-codebuild


    【解决方案1】:

    因此,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=['...']
    )
    

    【讨论】:

    • 对任何尝试此操作的人的重要说明,如果您在定义 my_intermediary_action 时出错,导致它每次都失败,您将无法通过管道推送修复,因为合成器并且自我变异步骤紧随其后。
    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2021-03-10
    • 2020-08-23
    • 2019-04-24
    • 1970-01-01
    相关资源
    最近更新 更多