我正在使用Circle CI将我的SPA网站部署到Firebase
firebase deploy
。
我有一个带有2个容器的Circle CI付费计划。
当我在最后一次提交后1分钟将代码推送到GitHub 2次时,Circle CI构建相互竞争。(#696
和#695
在我推送#696之后同时运行#695之后不久
当#695
正在部署Firebase云功能时,#696
会失败并显示以下消息:functions: HTTP Error: 400, An operation on function onInitiativeRemoved in region us-central1 in project init-dev-a7563 is already in progress. Please try again later.
我的目标是只在不同的分支中同时运行2个容器:master和other 我想在同一个分支中只运行一个容器,其他构建应该在同一个分支中排队。
总而言之,我想在#696
之后制作#695
答案 0 :(得分:0)
我只需检查当前的容器编号和当前分支:
test:
override:
- ?
case $CIRCLE_NODE_INDEX in
0) if [ `git symbolic-ref --short HEAD` = master ]; then make master-test; fi ;;
1) if [ `git symbolic-ref --short HEAD` != master ]; then make other-test; fi ;;
esac
:
parallel: true
在容器编号0中运行master的测试,并在容器编号1中测试非主分支。
答案 1 :(得分:0)
您可能想要做两件事:
default
/ master
分支。Auto-cancel redundant builds
设置。您不能选择仅在CircleCI中的某些容器中运行某些分支。你可以做一些像博士的回答,但从技术上讲,这些版本仍在运行,然后提前消失。
根据我提到的设置,当推送新提交时,将取消排队和正在运行的构建。这是设置说明:
除了默认分支外,当在同一分支上触发较新的构建时,我们将自动取消分支上的任何排队或正在运行的构建。此功能仅适用于通过推送到GitHub触发的构建。
可在以下位置找到该设置:Settings > Build Settings > Advanced Settings
。
- Ricardo N Feliciano
开发者传播者,CircleCI