Задать вопрос

Можно ли динамически формировать перечень jobs?

Можно ли формировать перечень jobs в зависимости от изменяемой в репозитории информации?
Условно, есть три файла определенного типа в репозитории - запускаются три задачи по ним.
Добавили четвертый файл - по нему добавилась задача и т.п.
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Да, можно настроить триггер запуска задачи при изменении определенного файла или каталога:
https://docs.gitlab.com/ee/ci/yaml/#ruleschanges
docker build:
  script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      changes:
        - Dockerfile
      when: manual
      allow_failure: true

docker build alternative:
  variables:
    DOCKERFILES_DIR: 'path/to/dockerfiles'
  script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      changes:
        - $DOCKERFILES_DIR/**/*

Если такой вариант не устраивает и надо выполнить какой-то скрипт и по его результатам запускать задачи, то у гитлаба есть API и через него можно запустить любую задачу: https://docs.gitlab.com/ee/ci/triggers/#trigger-a-...
Ответ написан
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
В соседнем ответе в комментариях добрались до истины: dynamic-child-pipelines
Есть определенные ограничения: типа лучше засовывать CI переменные в генерируемый пайплайн при его генерации, а так же есть определенные сложности при передаче артефактов генерируемых динамическим пайплайном обратно в общий CI.
Но если хочется делать однотипные пайплайны без копипасты блока в .gitlab-ci.yml то это - решение
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы