我正在尝试使用 Bitbucket,CodeBuild和CodePipeline设置我的CI / CD进程。到目前为止,我在Bitbucket上拥有Webhook,它将在来自ECR的自定义docker映像上运行CodeBuild,并将工件上传到已启用版本的Amazon S3存储桶。新上传将基于Cloudwatch事件触发CodePipeline,并在“手动”批准后运行另一个CodeBuild,这将部署到新的S3存储桶上,到目前为止,还不错。 CodePipeline有3个阶段:源(s3),-> 手动批准-> CodeBuild 。
问题是:当我尝试推送多个分支/新提交时,第一个CodeBuild运行并按预期在不同版本的S3上上传工件。但是,每次上传应触发每个CodePipline。如果我对Bitbucket存储库进行了3次不同的代码推送,则应该有3条管道等待部署手动批准。 但是事实并非如此。
根据提交,我在S3中上传了三个带有不同VersionID的工件:
第一次提交的工件VersionID: OKIBabVQQX80aAuARAne8jnClsTpJGXu
第二次提交的工件VersionID: YNsgp9rodnAx7du1Te1OQD2UO0t5IZc
第三次提交的工件VersionID: VN7pwVS5zpYNTmzJrLbFGKBupogpgtHN
在CodePipeline中:
阶段:手动批准正在等待具有S3来源版本的批准: OKIBabVQQX80aAuARAne8jnClsTpJGXu
阶段:源是由S3触发的,版本ID为: VN7pwVS5zpYNTmzJrLbFGKBupogpgtHN
在这里,我完全错过了第二个工件:(s3 VersionID: YNsgp9rodnAx7du1Te1OQD2UO0t5IZc ) 我希望所有这三个工件都可以一个接一个地触发CodePiple,以便我可以部署所有3个推送。
非常感谢!
答案 0 :(得分:1)
管道执行开始时,它将对管道中的每个阶段和操作进行修订。 Start a Pipeline Execution in CodePipeline
代码管线阶段显示特定阶段的最后一个触发器。 就您而言,您有:
由于您的Artifact3紧随Artifact2之后-Source阶段显示了它(最后一个触发器)。 Artifact2未显示,但仍在等待其转向。在人工批准阶段完成对Artifact1的操作后,人工批准将出现Artifact2。 之后,Artifact3将进入“手动批准”阶段,依此类推。