запускать сборку проекта, когда фиксация переходит в другой проект

У меня есть три проекта A, B, C на gitlab с машиной gitlab-runner. Проект A содержит файл gitlab-ci.yml, который вызывает скрипт для сборки программы, когда есть коммит на A:

  build:
  stage: build
  script:
    - ./build-platform.sh

A зависит от проектов B и C. Как я могу запустить сборку на A, когда есть фиксация на B или C. Я не могу поместить B, C в A и не могу легко преобразовать build-platform.sh в синтаксис файла gitlab-ci.yml.


person PHA    schedule 16.03.2017    source источник


Ответы (1)


Есть несколько способов сделать то, что вы хотите, но все они основаны на том, что вы проецируете настройки A в gitlab и добавляете токен триггера. Это можно сделать на странице <project A's gitlab URL>/settings/ci_cd, нажав Add trigger в разделе Триггеры.

Вы также найдете различные способы использования этого триггерного токена на этой странице.

Для полноты вот несколько способов, упомянутых там:

1 Использование CURL

Если вы можете использовать curl в конце сборки проектов B или C, просто добавьте следующее:

curl -X POST \
     -F token=TOKEN \
     -F ref=REF_NAME \
     <gitlab_url>/api/v3/projects/1/trigger/builds

Где TOKEN — это токен триггера, который вы только что создали для проекта A, а REF_NAME — это имя ветки или тега, для которого выполняется сборка.

Это можно сделать, если у вас есть автоматические сборки для проектов B и C (например, с использованием файла .gitlab-ci.yml).

2 Использование вебхука

Вы можете добавить веб-хук в проекты B и C через страницу настроек/интеграции этих проектов.

Просто добавьте следующий веб-хук на push-события:

<gitlab_url>/api/v3/projects/1/ref/REF_NAME/trigger/builds?token=TOKEN

Где TOKEN и REF_NAME такие же, как указано выше.

person Jawad    schedule 16.03.2017