Назад | Перейти на главную страницу

Возможно ли иметь один общий .gitlab-ci.yml вместо дублирования изменений в .gitlab-ci.yml в каждом проекте?

На данный момент мы добавляем .gitlab-ci.yml в каждый проект. На данный момент у нас более 50 проектов, и каждый раз, когда что-то меняется в .gitlab-ci.yml, команде приходится менять структуру во всех проектах. Возможно ли иметь один общий .gitlab-ci.yml?

Попытки

  1. Пробовал иметь один gitlab-ci.yml, но не знаю как изменить путь по умолчанию к этому файлу
  2. общие скрипты уменьшают количество дублирования кода, но если структура gitlab-ci.yml изменится, мы должны реализовать это во всех проектах

Нет, это невозможно. Это противоречит идее о том, почему существует этот метод, потому что что если вы добавите репозиторий / проект git, которому нужен совершенно другой файл yml?

Что вы могли бы сделать (как вы упомянули), так это запустить сценарий, который загружается во время .gitlab-ci.yml запустить процесс. Что-то вроде этого:

stages:
  - prep
  - run

get_script:
  stage: prep
  script:
    - wget http://my_local_script.lan/run_suite.sh -O /tmp/run_suite.sh

run_script:
  stage: run
  script:
    - bash /tmp/run_suite.sh

Установите это как сценарий для каждого проекта, а затем все, что вам нужно сделать, это обновить run_suite.sh один раз, и все новые проекты будут его использовать.

Боюсь, что нет лучшего способа, чем этот.

Если мне нужна глобальная конфигурация CI, я бы использовал системные хуки.

Конечно, вы потеряете некоторые (то есть все) классные функции Gitlab CI.