当并发构建为 1 时,CodeBuild 项目不会排队
CodeBuild projects are not being queued when conccurent build is 1
我们使用 AWS CodeBuild 和 GitHub webhooks 来触发构建过程。当为以 Jira 票证前缀开头的分支创建 PR 时,即 oscs-278
,我们使用 Terraform 构建一个新环境。当我们提交 PR 时,它会触发构建过程以更新该环境。
这个流程对我们来说效果很好,特别是从 2021 年 2 月开始,AWS CodeBuild 允许您将并发构建设置为 1。这对我们很重要,因为我们一次应该只部署一个,其余的应该排队。
但是,我们当前的构建过程最多需要 15 分钟,如果我们在此时间范围内提交到分支,则如果另一个构建正在进行中,则项目不会排队。
这可能是 GitHub webhook 的问题,还是与 AWS CodeBuild 有关。
来自 AWS 文档:
The maximum number of builds in a queue is five times the concurrent build limit.
所以理论上,队列中应该有 5 个(最多)
如果当前 运行 构建的数量达到您的限制(即 1),CodeBuild 将不会对新构建进行排队。在这种情况下尝试启动更多构建将失败并出现错误。 AWS Docs 说:
If the build project has a concurrent build limit set, builds return an error if the number of running builds reaches the concurrent build limit for the project. For more information, see Enable concurrent build limit.
这适用于 webhook 并尝试手动启动它们。同样的文档还说:
If the build project does not have a concurrent build limit set, builds are queued if the number of running builds reaches the concurrent build limit for the platform and compute type. The maximum number of builds in a queue is five times the concurrent build limit. For more information, see Quotas for AWS CodeBuild.
该部分暗示如果您将项目并发限制重置为较高的数字(例如 60)然后将“平台和计算类型”并发限制设置为 1,您可以获得排队行为,但这是不可能,因为该限制不是用户可调整的(并且它可能适用于所有项目)。
简而言之,我认为您不能在达到配置的并发限制后进行 CodeBuild 队列构建。一个(相当复杂的)替代方法是在 buildpsec.yml.
中进行自己的锁定
我们使用 AWS CodeBuild 和 GitHub webhooks 来触发构建过程。当为以 Jira 票证前缀开头的分支创建 PR 时,即 oscs-278
,我们使用 Terraform 构建一个新环境。当我们提交 PR 时,它会触发构建过程以更新该环境。
这个流程对我们来说效果很好,特别是从 2021 年 2 月开始,AWS CodeBuild 允许您将并发构建设置为 1。这对我们很重要,因为我们一次应该只部署一个,其余的应该排队。
但是,我们当前的构建过程最多需要 15 分钟,如果我们在此时间范围内提交到分支,则如果另一个构建正在进行中,则项目不会排队。
这可能是 GitHub webhook 的问题,还是与 AWS CodeBuild 有关。
来自 AWS 文档:
The maximum number of builds in a queue is five times the concurrent build limit.
所以理论上,队列中应该有 5 个(最多)
如果当前 运行 构建的数量达到您的限制(即 1),CodeBuild 将不会对新构建进行排队。在这种情况下尝试启动更多构建将失败并出现错误。 AWS Docs 说:
If the build project has a concurrent build limit set, builds return an error if the number of running builds reaches the concurrent build limit for the project. For more information, see Enable concurrent build limit.
这适用于 webhook 并尝试手动启动它们。同样的文档还说:
If the build project does not have a concurrent build limit set, builds are queued if the number of running builds reaches the concurrent build limit for the platform and compute type. The maximum number of builds in a queue is five times the concurrent build limit. For more information, see Quotas for AWS CodeBuild.
该部分暗示如果您将项目并发限制重置为较高的数字(例如 60)然后将“平台和计算类型”并发限制设置为 1,您可以获得排队行为,但这是不可能,因为该限制不是用户可调整的(并且它可能适用于所有项目)。
简而言之,我认为您不能在达到配置的并发限制后进行 CodeBuild 队列构建。一个(相当复杂的)替代方法是在 buildpsec.yml.
中进行自己的锁定