如何仅在GitlabCi Runner中的HEAD commit上运行管道?

时间:2019-04-03 13:10:52

标签: continuous-integration gitlab gitlab-ci continuous-deployment gitlab-ci-runner

我们的存储库中有一条CI管道,托管在gitlab中

我们在本地计算机上设置gitlab-runner

管道运行4个步骤

  • 构建

  • 单元测试

  • 集成测试
  • 质量测试

所有这些流水线需要大约20分钟

和每次推送到分支的管道触发器

有一种配置gitlab-runner的方法,如果当前运行的运行器所在的分支的HEAD更改了管道 会自动取消运行吗?因为最新版本才是重要的

例如,在此运行中不需要较低的运行

enter image description here

gitlab-ci.yml

stages:
  - build
  - unit_tests
  - unit_and_integration_tests
  - quality_tests

build:
  stage: build
  before_script:
    - cd projects/ideology-synapse
  script:
    - mvn compile


unit_and_integration_tests:
  variables:
    GIT_STRATEGY: clone
  stage: unit_and_integration_tests
  only:
    - /^milestone-.*$/
  script:
    - export RUN_ENVIORMENT=GITLAB_CI
    - export MAVEN_OPTS="-Xmx32g"
    - mvn test
    - "cat */target/site/jacoco/index.html"
  cache: {}
  artifacts:
    reports:
      junit:
        - "*/*/*/target/surefire-reports/TEST-*.xml"


unit_tests:
  variables:
    GIT_STRATEGY: clone

  stage: unit_tests
  except:
    - /^milestone-.*$/
  script:
    - export MAVEN_OPTS="-Xmx32g"
    - mvn test
    - "cat */target/site/jacoco/index.html"
  cache: {}
  artifacts:
    reports:
      junit:
        - "*/*/*/target/surefire-reports/TEST-*.xml"

quality_tests:
  variables:
    GIT_STRATEGY: clone
  stage: quality_tests
  only:
    - /^milestone-.*$/
  script:
    - export RUN_ENVIORMENT_EVAL=GITLAB_CI
    - export MAVEN_OPTS="-Xmx32g"
    - mvn test
  cache: {}

在@siloko评论后进行编辑:

我已经尝试使用 设置菜单中的自动取消冗余的未决管道

我想取消正在运行的管道并且不挂起

1 个答案:

答案 0 :(得分:5)

经过进一步调查,我发现我有2位活跃跑步者 在我的一台机器上 一个共享跑步者和另一个特定跑步者,如果我将一个2提交一次提交到同一个分支,则两个跑步者都会接管并执行它们。 这也解释了为什么

Auto-cancel redundant, pending pipelines 

选项不起作用,因为它仅在同一跑步者有待处理的工作时才起作用

为解决此问题而采取的措施:取消注册特定的运行器,仅将计算机留给共享的运行器