Отраслевая специализация для gitlab-ci - PullRequest
0 голосов
/ 22 октября 2019

Ситуация: у нас есть большой проект, где разработчик должен иметь возможность пропустить какой-то тест в своей ветке, чтобы сосредоточиться на конкретных изменениях, которые он сделал. Мы не хотим, чтобы все меняли .gitlab-ci.yaml, потому что это может закончиться множеством конфликтов слияния.

Идея заключалась в том, чтобы включить специфичные для ветви включения, такие как

include:
  - local: branch/${CI_COMMIT_REF_SLUG}-config.yaml

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

К сожалению, это напрямую не поддерживается gitlab-ci .

Есть предложения, как решить эту проблему?

1 Ответ

0 голосов
/ 30 октября 2019

Я думаю, что вы должны взглянуть на only/except GitLab:

https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic

С этим можно решить, какие задания выполняются, в зависимости от множества разных вещей. Если вы используете запросы на слияние, запускать задания можно только после изменения файлов в определенных файлах. Что-то вроде:

my_job:
  script:
    - build things
  only:
    refs:
      - merge_requests
    changes:
      - path/to/somewhere/**/*
      - other/path/**/*

Это довольно легко настроить и понять.

Если вам действительно нужно, чтобы разработчики могли вручную выбирать, какие задания запускать, это должно быть возможно. Это может стать немного хакерским, хотя. Если у вас есть имя ветки типа fix-bug-xyz_myvar-eq-42, а затем есть такие задания, как:

job:
  script:
    - build things
  only:
    - /.*myvar-eq-.*/

Они должны выполняться только для ветвей, в которых есть соответствующий шаблон. Затем вы можете использовать переменную CI_COMMIT_REF_NAME и разделить ее, чтобы найти значение набора переменных. Я не проверял это сам, но что-то подобное должно работать.

...