在 AWS CodePipeline 中处理多个构建的手动批准
Working with manual approvals for multiple builds in AWS CodePipeline
我们设置了 CodePipeline 来执行构建、部署到 QA ECS 环境,然后手动批准步骤部署到 Prod。
令人困惑的是,当有多个构建 运行 一个接一个时。几个构建按顺序部署到 QA,但随后“批准”按钮似乎一次批准一个,当您单击它时不清楚您正在批准哪个构建。
我希望能够批准最新版本,以防万一
较早版本的问题已由后来的版本修复。实现该目标的最佳方法是什么?
我遇到了同样的问题。手动批准令人困惑,因为多个管道执行可能会排队并且很容易忘记事情。我认为我们可以将此归咎于 CodePipeline 糟糕的用户体验。
我解决的解决方法是为同一个项目设置两个相同的管道。它们具有相同的源阶段(相同 repo/branch)但不同的部署阶段(一个部署到 QA,一个部署到生产)。不再需要手动批准阶段。 QA 管道设置为在检测到源 (repo/branch) 发生更改时自动执行,而 Prod 管道需要手动发布。
基本上,我们将手动批准替换为手动发布。与手动批准不同,手动发布始终从源发布最新版本。
您应该将部署和批准操作放在同一阶段。这使您可以准确地批准您测试的内容。为什么?因为在任何给定时间,只有一个流水线执行可以处于流水线阶段。
...approve the latest build, in case the earlier builds had issues
that were fixed by the later builds.
如果您想让后来的构建赶上进度,请拒绝正在等待批准的较早的构建。
如果您不想拥有多个管道,一个选项是默认禁用阶段转换到您需要受控发布的环境中。
当您准备好部署到环境中时,启用阶段转换以允许处理前一阶段的最新版本,然后再次禁用转换。
它仍然有点笨拙,但一旦你习惯了它就会相当有效。必须拒绝通过的每个更改变得非常缓慢且管理起来很麻烦,因此通过禁用转换,您可以选择何时升级版本。
IMO,如果在手动批准阶段暂停执行,CodePipeline 应该有一个自动取代执行的选项。
好吧,我们可以按照您描述的开发方式解决这个问题,但也可能是流程故障。
例如:如果我们有一个开发分支,一个发布分支(暂存)和一个主分支(生产),我们就可以轻松解决这个问题。
开发分支
我们开发的东西将通过开发分支阶段,我们不需要手动批准,因为我们不想检查每个更改。我们为此设置了自动化单元测试。
发布分支
这将部署到我们广泛测试软件质量的登台环境,也基于对带有验收系统的验收链的回归测试。这应该在合并到 master 分支之前防止所有大问题。除此之外,我们还可以在暂存环境中手动测试发布分支。如果这可行,请高兴并轻松迁移到 master
主分支
这将在实际部署发生之前通过手动批准部署到生产环境,确定您只会推送 1 个更改,即从发布到主控的合并,防止您在票证中总结的问题。
另一种方法是开发一项新的 AWS 功能,您可以在其中取消选中或选中一个复选框,上面写着:始终采用最新版本,但这无助于为管道集成增加价值,因为事情会在没有经过充分测试的情况下被推送.
在 CodePipeline UI 中,您可以在管道的 History 中查看手动批准的历史记录。单击历史记录以查看正在进行的操作(未超时的手动批准将始终处于 进度)和触发它的源 (git) short-sha (如果您需要缩小到相关提交)。
要了解您正在批准哪个手动批准,请在管道视图中单击“手动”步骤旁边的查看当前修订(以获取执行 ID),然后找到匹配历史中的执行 ID(应该是最旧的)。
我发现获得最新批准的唯一方法是在管道中点击拒绝 n-1 次(其中 n 是有多少手动批准仍在进行中)直到我只剩下 1 个批准(或直到找到匹配的执行 ID)。
我们设置了 CodePipeline 来执行构建、部署到 QA ECS 环境,然后手动批准步骤部署到 Prod。
令人困惑的是,当有多个构建 运行 一个接一个时。几个构建按顺序部署到 QA,但随后“批准”按钮似乎一次批准一个,当您单击它时不清楚您正在批准哪个构建。
我希望能够批准最新版本,以防万一 较早版本的问题已由后来的版本修复。实现该目标的最佳方法是什么?
我遇到了同样的问题。手动批准令人困惑,因为多个管道执行可能会排队并且很容易忘记事情。我认为我们可以将此归咎于 CodePipeline 糟糕的用户体验。
我解决的解决方法是为同一个项目设置两个相同的管道。它们具有相同的源阶段(相同 repo/branch)但不同的部署阶段(一个部署到 QA,一个部署到生产)。不再需要手动批准阶段。 QA 管道设置为在检测到源 (repo/branch) 发生更改时自动执行,而 Prod 管道需要手动发布。
基本上,我们将手动批准替换为手动发布。与手动批准不同,手动发布始终从源发布最新版本。
您应该将部署和批准操作放在同一阶段。这使您可以准确地批准您测试的内容。为什么?因为在任何给定时间,只有一个流水线执行可以处于流水线阶段。
...approve the latest build, in case the earlier builds had issues that were fixed by the later builds.
如果您想让后来的构建赶上进度,请拒绝正在等待批准的较早的构建。
如果您不想拥有多个管道,一个选项是默认禁用阶段转换到您需要受控发布的环境中。
当您准备好部署到环境中时,启用阶段转换以允许处理前一阶段的最新版本,然后再次禁用转换。
它仍然有点笨拙,但一旦你习惯了它就会相当有效。必须拒绝通过的每个更改变得非常缓慢且管理起来很麻烦,因此通过禁用转换,您可以选择何时升级版本。
IMO,如果在手动批准阶段暂停执行,CodePipeline 应该有一个自动取代执行的选项。
好吧,我们可以按照您描述的开发方式解决这个问题,但也可能是流程故障。
例如:如果我们有一个开发分支,一个发布分支(暂存)和一个主分支(生产),我们就可以轻松解决这个问题。
开发分支 我们开发的东西将通过开发分支阶段,我们不需要手动批准,因为我们不想检查每个更改。我们为此设置了自动化单元测试。
发布分支 这将部署到我们广泛测试软件质量的登台环境,也基于对带有验收系统的验收链的回归测试。这应该在合并到 master 分支之前防止所有大问题。除此之外,我们还可以在暂存环境中手动测试发布分支。如果这可行,请高兴并轻松迁移到 master
主分支 这将在实际部署发生之前通过手动批准部署到生产环境,确定您只会推送 1 个更改,即从发布到主控的合并,防止您在票证中总结的问题。
另一种方法是开发一项新的 AWS 功能,您可以在其中取消选中或选中一个复选框,上面写着:始终采用最新版本,但这无助于为管道集成增加价值,因为事情会在没有经过充分测试的情况下被推送.
在 CodePipeline UI 中,您可以在管道的 History 中查看手动批准的历史记录。单击历史记录以查看正在进行的操作(未超时的手动批准将始终处于 进度)和触发它的源 (git) short-sha (如果您需要缩小到相关提交)。
要了解您正在批准哪个手动批准,请在管道视图中单击“手动”步骤旁边的查看当前修订(以获取执行 ID),然后找到匹配历史中的执行 ID(应该是最旧的)。
我发现获得最新批准的唯一方法是在管道中点击拒绝 n-1 次(其中 n 是有多少手动批准仍在进行中)直到我只剩下 1 个批准(或直到找到匹配的执行 ID)。