我们的存储库中有一条CI管道,托管在gitlab中
我们在本地计算机上设置gitlab-runner
管道运行4个步骤
构建
单元测试
所有这些流水线需要大约20分钟
和每次推送到分支的管道触发器
有一种配置gitlab-runner的方法,如果当前运行的运行器所在的分支的HEAD更改了管道 会自动取消运行吗?因为最新版本才是重要的
例如,在此运行中不需要较低的运行
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评论后进行编辑:
我已经尝试使用 设置菜单中的自动取消冗余的未决管道
我想取消正在运行的管道并且不挂起
答案 0 :(得分:5)
经过进一步调查,我发现我有2位活跃跑步者 在我的一台机器上 一个共享跑步者和另一个特定跑步者,如果我将一个2提交一次提交到同一个分支,则两个跑步者都会接管并执行它们。 这也解释了为什么
Auto-cancel redundant, pending pipelines
选项不起作用,因为它仅在同一跑步者有待处理的工作时才起作用
为解决此问题而采取的措施:取消注册特定的运行器,仅将计算机留给共享的运行器