3

我们使用 AWS CodeBuild 和 GitHub Webhook 来触发构建过程。当为以 Jira 票证前缀开头的分支创建 PR 时oscs-278,我们使用 Terraform 构建一个新环境。当我们提交 PR 时,它会触发构建过程来更新该环境。

这个流程对我们很有效,特别是自 2021 年 2 月起,AWS CodeBuild 允许您将并发构建设置为 1。这对我们来说很重要,因为我们一次只能进行一个部署,其余的应该排队。

但是,我们当前的构建过程最多需要 15 分钟,如果我们在此时间范围内提交到分支,如果另一个构建正在进行中,则项目不会排队。

这可能是 GitHub Webhook 的问题,还是与 AWS CodeBuild 有关的问题。

来自 AWS 文档:

队列中的最大构建数是并发构建限制的五倍。

所以理论上,我应该有 5 个在队列中(最多)

4

1 回答 1

2

如果当前正在运行的构建数量达到您的限制(即 1),CodeBuild 不会对新构建进行排队。在这种情况下尝试启动更多构建将失败并出现错误。AWS Docs说:

如果构建项目设置了并发构建限制,则如果正在运行的构建数量达到项目的并发构建限制,则构建会返回错误。有关更多信息,请参阅启用并发构建限制。

这适用于 webhook 并尝试手动启动它们。相同的文档还说:

如果构建项目没有设置并发构建限制,则在运行构建的数量达到平台和计算类型的并发构建限制时,构建将排队。队列中的最大构建数是并发构建限制的五倍。有关更多信息,请参阅 AWS CodeBuild 的配额。

如果您将项目并发限制重置为较高的数字(例如,60),然后将“平台和计算类型”并发限制设置为 1,则该部分提示您可以获得排队行为,但这是不可能的,因为那限制不是用户可调整的(它可能适用于所有项目)。

简而言之,我认为您无法在达到配置的并发限制后进行 CodeBuild 队列构建。一个(相当复杂的)替代方法是在 buildpsec.yml 中进行自己的锁定。

于 2021-07-10T11:24:29.227 回答