CircleCI:如何强制对构建进行排队

时间:2017-08-07 08:09:12

标签: git firebase circleci

我正在使用Circle CI将我的SPA网站部署到Firebase firebase deploy。 我有一个带有2个容器的Circle CI付费计划。

enter image description here 当我在最后一次提交后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

2 个答案:

答案 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)

您可能想要做两件事:

  1. 仅部署default / master分支。
  2. 开启Auto-cancel redundant builds设置。
  3. 您不能选择仅在CircleCI中的某些容器中运行某些分支。你可以做一些像博士的回答,但从技术上讲,这些版本仍在运行,然后提前消失。

    根据我提到的设置,当推送新提交时,将取消排队和正在运行的构建。这是设置说明:

      

    除了默认分支外,当在同一分支上触发较新的构建时,我们将自动取消分支上的任何排队或正在运行的构建。此功能仅适用于通过推送到GitHub触发的构建。

    可在以下位置找到该设置:Settings > Build Settings > Advanced Settings

    - Ricardo N Feliciano
    开发者传播者,CircleCI