AWS CodePipeline:同时运行多个管道

Posted

技术标签:

【中文标题】AWS CodePipeline:同时运行多个管道【英文标题】:AWS CodePipeline: Running multiple pipelines concurrently 【发布时间】:2019-09-16 03:18:27 【问题描述】:

我正在尝试使用 Bitbucket、CodeBuild 和 CodePipeline 设置我的 CI/CD 流程。 到目前为止,我在 Bitbucket 上有 Webhook,它将在来自 ECR 的自定义 docker 映像上运行 CodeBuild 并将工件上传到已启用版本的 Amazon S3 存储桶。新的上传会根据 Cloudwatch 事件触发 CodePipeline,并在手动批准后运行另一个 CodeBuild,这使得在新的 S3 存储桶上进行部署,到目前为止一切正常。 CodePipeline 有 3 个阶段:Source (s3),-> Manual Approve -> CodeBuild

问题是:当我尝试推送多个分支/新提交时,第一个 CodeBuild 运行并按预期在 S3 上上传具有不同版本的工件。但是,每次上传都应该触发每个 CodePipline。如果我将 3 个不同的代码推送到 Bitbucket 存储库,则应该有 3 个管道等待手动批准部署。 但事实并非如此。

根据提交,我在 S3 中上传了三个具有不同 VersionID 的工件:

第一次提交的工件版本 ID:OKIBabVQQX80aAuARAne8jnClsTpJGXu

第二次提交的工件版本 ID:YNsgp9rodnAx7du1Te1OQD2UO0t5IZc

第三次提交的工件版本 ID:VN7pwVS5zpYNTmzJrLbFGKBupogpgtHN

在 CodePipeline 中:

Stage: Manual Approve 正在等待批准,S3 源版本:OKIBabVQQX80aAuARAne8jnClsTpJGXu

阶段:Source 由 S3 触发,版本 ID:VN7pwVS5zpYNTmzJrLbFGKBupogpgtHN

在这里我完全错过了第二个工件:(s3 VersionID:YNsgp9rodnAx7du1Te1OQD2UO0t5IZc) 我希望所有三个工件一个接一个地触发 CodePiple,这样我就可以部署我所有的 3 个推送。

非常感谢!!!

【问题讨论】:

【参考方案1】:

当管道执行开始时,它会在管道中的每个阶段和操作中运行修订。 Start a Pipeline Execution in CodePipeline

代码管道阶段显示特定阶段的最后一个触发器。 在您的情况下,您有:

Artifact1 触发源和手动批准。 Artifact2 触发 Source 并等待触发 Manual Approval。 Artifact3 触发 Source 并等待触发 Manual Approval。

由于您的 Artifact3 出现在 Artifact2 之后 - Source 阶段显示它(最后一个触发器)。 Artifact2 未显示,但仍在等待轮到它。在 Manual Approval 阶段完成 Artifact1 后,Artifact2 将出现在 Manual Approval。 之后,Artifact3 将进入 Manual Approval 阶段,以此类推。

【讨论】:

以上是关于AWS CodePipeline:同时运行多个管道的主要内容,如果未能解决你的问题,请参考以下文章

在 CodePipeline 中创建使用另一个 AWS 账户的资源的管道

如何停止 aws codepipeline 部署阶段

AWS Elastic Beanstalk - CodePipeline 部署不工作 - 健康状况 - 严重

Angular 7 应用程序中的 AWS Codepipeline 部署错误

AWS CodePipeline 无法访问组织的存储库

与 BitBucket 集成时 AWS CodePipeline 的 AWS IAM 访问异常