Я думаю, что вы должны взглянуть на 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
и разделить ее, чтобы найти значение набора переменных. Я не проверял это сам, но что-то подобное должно работать.