我们使用AWS CodeBuild和GitHub Webhook来触发构建过程。当为以Jira票证前缀(即oscs-278
(开头的分支创建PR时,我们将使用Terraform构建一个新环境。当我们对PR做出承诺时,它会触发构建过程来更新该环境。
这个流程对我们来说很好,特别是自2021年2月以来,AWS CodeBuild允许您将并发构建设置为1。这对我们来说很重要,因为我们一次只能进行一次部署,其余的都应该排队。
然而,我们当前的构建过程需要长达15分钟的时间,如果我们在这个时间范围内提交到分支,那么如果正在进行另一个构建,则不会对项目进行排队。
这可能是GitHub网络挂钩的问题,还是与AWS CodeBuild有关。
来自AWS文档:
队列中的最大生成数是并发生成限制的五倍。
所以理论上,我应该在队列中有5个(最大(
如果当前运行的生成数量达到您的限制(即1(,CodeBuild将不会对新生成进行排队。在这种情况下启动更多生成的尝试将失败,并出现错误。AWS文件称:
如果生成项目设置了并发生成限制,则如果正在运行的生成数量达到该项目的并发生成限制时,生成将返回错误。有关详细信息,请参阅启用并发生成限制。
这适用于webhook并尝试手动启动它们。同样的文件也说:
如果生成项目没有设置并发生成限制,则如果正在运行的生成数量达到平台和计算类型的并发生成限制时,生成将排队。队列中的最大生成数是并发生成限制的五倍。有关更多信息,请参阅AWS CodeBuild的配额。
该部分提示,如果您将项目并发限制重置为一个高数字(例如,60(,然后设置;平台和计算类型";并发限制为1,但这是不可能的,因为该限制不可由用户调整(可能适用于所有项目(。
简而言之,我不认为您可以在达到配置的并发限制后构建CodeBuild队列。一个(相当复杂的(替代方案是在buildpsec.yml.中进行自己的锁定