CodePipeline 可以使用特定的提交吗

Can CodePipeline Use a Specific Commit

我的团队 运行 遇到了我们的 CodePipeline 问题,由于我们的 Docker 图像修补,这些功能在不应该的情况下被推送到生产环境中。关于我们架构的一些背景知识:我们的管道有两个源,一个用于源代码,一个用于 Docker 图像生成器。 Docker 通过 CodeBuild 构建并部署到开发、测试和生产环境,中间有手动批准步骤。

我们的 Docker 图像每月都会收到补丁,这会触发管道执行,这也是导致功能被推出的原因。我们重新设计了 git 分支策略,这样我们的主分支将只包含稳定版本,但如果指定了特定的发布日期,我仍然可以看到这个问题可能会再次发生。有没有办法在不推出最新提交的情况下推出图像补丁?

Can CodePipeline Use a Specific Commit

这是一项经常被要求的功能,但不幸的是,CodePipeline 将始终从 Source 操作中的选定分支带来最新提交。

CodePipeline 绑定到单个 git 分支更多是 CodePipeline 的一个功能,因为设计更倾向于基于主干的开发 [0]。此外,根据该服务的设计者,CodePipeline 专为 post-merge/release 验证而设计。也就是说,一旦您的更改准备好发布到生产环境并合并到您的 master/main 分支中,CodePipeline 就会接管并自动测试并发布最终合并的更改集。 CodePipeline 有很多功能,如阶段锁定、取代版本等,这些功能不适用于您想要在合并之前隔离测试更改的情况(例如功能分支测试或拉取请求测试)。因此目前有在 CodePipeline 中不推荐这样做。

[0] https://trunkbaseddevelopment.com/

话虽如此,有一种方法可以通过管道中的 S3 源操作而不是 GitHub/CodeCommit 源操作来解决这个问题。本质上,您的管道的 S3 源操作与 S3 bucket/key 相关联。然后,您可以将任何特定提交的 zip 上传到此 S3 bucket/key 并触发管道。