AWS CodeBuild构建不排队问题:同时合并两个PR到master仅触发首个构建
检查触发器事件过滤规则
先确认你的CodeBuild项目针对master分支的触发器事件类型是否正确。如果只监听pull_request_closed合并事件,两个PR同时合并时,CodeBuild可能因事件重复检测或时间戳问题跳过第二个。可以把触发器事件模式改成包含push事件(PR合并本质是向master推送代码),或者补充所有合并相关的事件类型。核实并发构建配置的实际效果
你设置了并发数为1,正常情况下第二个构建应该进入队列等待,而不是直接被跳过。去项目构建状态页看看,第二个PR的事件是根本没触发,还是被接收后丢弃了。也可以查CloudTrail日志,搜CodeBuild相关事件,确认第二个合并事件有没有对应的CodeBuild调用记录。排查源码仓库的事件推送问题
如果两个PR合并间隔极短,源码仓库(比如GitHub/GitLab)可能会合并事件或者延迟推送第二个。试试在两个PR合并中间隔几秒,看能不能触发第二个构建。另外检查仓库的webhook配置,有没有设置事件合并或过滤规则。调整重复构建检测逻辑
CodeBuild默认会跳过和正在运行的构建源码版本相同的任务。如果两个PR合并后master的最终提交哈希一致(比如第二个PR基于第一个的提交,合并后没产生新提交),就会被判定为重复构建跳过。这种情况要确认两个PR合并后是不是生成了不同的提交哈希,或者在项目配置里禁用重复构建检测。查看构建日志和事件日志
进CodeBuild项目的“构建历史”页,找有没有状态为“已跳过”的记录,点进去看详情会说明原因。同时查CloudWatch里的CodeBuild日志,获取更详细的触发逻辑或错误信息。
内容的提问来源于stack exchange,提问作者Akshit Kumar

