如何使用 AWS CodeCommit、CodeBuild、CodePipeline 调用基于另一个管道成功的管道

How to invoke a pipeline based on another pipeline success using AWS CodeCommit, CodeBuild, CodePipeline

期望的行为如下:

所需的解决方案将有两个管道,第二个管道由第一个管道的成功触发。

如果您有任何其他想法,我将很高兴听到!

提前致谢

我为第二个管道触发器提出的解决方案如下:

  • 将第二个管道源作为 S3(不是 CodeCommit)。这将确保只有当一个特别命名的文件(对象键)被推送到 Amazon S3 时,这个管道才会启动。
  • 在第一个 CodePipeline 的末尾添加一个 Lambda 函数,此时一切都必须成功才能触发它。
  • 让 Lambda 复制您为第一个管道构建的工件,并将其放入具有第二个存储桶源中引用的密钥的存储桶中。

为了保持清洁,为每个管道使用单独的桶。

假设两个 CodePipelines 运行 在同一个帐户中。您可以在 buildspec.yml.

中添加“post_build”阶段

在 post_build 阶段,您可以使用 AWS SDK 命令触发第二个 CodePipeline。

  build:
        commands:
            # npm pack --dry-run is not needed but helps show what is going to be published
            - npm publish
    post_build:
        commands:
            - aws codepipeline start-pipeline-execution --name <codepipeline_name>