Как запустить конвейер только на HEAD коммит в GitlabCi Runner? - PullRequest
5 голосов
/ 03 апреля 2019

у нас есть конвейер 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 Ответ

5 голосов
/ 15 апреля 2019

после другого расследования я обнаружил, что у меня было 2 активных бегунов на одной из моих машин один общий бегун , а другой конкретный бегун , затем, если я нажимаю 2 коммитов один за другим в одну и ту же ветку, оба бегуна берут задания и выполняют их. это также объясняет, почему

Auto-cancel redundant, pending pipelines 

параметров, не сработало, потому что оно работает, только когда у того же бегуна есть ожидающие задания

действия, предпринятые для решения этой проблемы: отмените регистрацию конкретного бегуна и оставьте машину только с общим бегущим

...