Gitlab-CI мультипроектный конвейер - PullRequest
0 голосов
/ 30 октября 2018

в настоящее время я пытаюсь понять мультипроектный конвейер Gitlab-CI. Я хочу добиться запуска конвейера, если другой конвейер завершен.

Пример: У меня есть один проект nginx, сохраненный в пространстве имен baseimages, который содержит некоторые настройки, такие как fast-cgi-params. CI-файл выглядит так:

stages:
  - release
  - notify

variables:
  DOCKER_HOST: "tcp://localhost:2375"
  DOCKER_REGISTRY: "registry.mydomain.de"
  SERVICE_NAME: "nginx"
  DOCKER_DRIVER: "overlay2"

release:
  stage: release
  image: docker:git
  services:
  - docker:dind
  script:
    - docker build -t $SERVICE_NAME:latest .
    - docker tag $SERVICE_NAME:latest $DOCKER_REGISTRY/$SERVICE_NAME:latest
    - docker push $DOCKER_REGISTRY/$SERVICE_NAME:latest
  only:
    - master

notify:
  stage: notify
  image: appropriate/curl:latest
  script:
    - curl -X POST -F token=$CI_JOB_TOKEN -F ref=master https://gitlab.mydomain.de/api/v4/projects/1/trigger/pipeline
  only:
    - master

Теперь я хочу, чтобы несколько проектов полагались на этот образ и позволяли их перестраивать при изменении моего базового изображения, например. новая версия nginx.

             baseimage
                 |
    ---------------------------
    |            |            |
project1     project2     project3

Если я добавлю триггер в другой проект и вставлю сгенерированный токен в $ GITLAB_CI_TOKEN, запускается внешний конвейер, но нет объединенного графика, как показано в документации (https://docs.gitlab.com/ee/ci/multi_project_pipelines.html)

Как можно показать полный график конвейера? Нужно ли добавлять каждый проект, который основан на моем базовом изображении, в CI-файл базового изображения, или можно подписать базовый трубопровод в каждом проекте?

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Ну а после еще нескольких копаний в документации я нашел небольшое предложение, в котором говорится, что Gitlab CE предоставляет функции, помеченные как Core-Feature.

0 голосов
/ 31 марта 2019

У нас есть более 50 пакетов Gitlab, где это необходимо. То, что мы делали, это выдвигали коммит в нисходящий пакет, ожидали завершения CI, затем выдвигали еще один коммит в апстримовый пакет, ждали завершения CI и т. Д. Это было очень много времени.

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

Если ничего из этого не работает для вас или вы хотите лучшего способа, я разработал инструмент, который поможет сделать это, называется Gitlab Pipes . Я использовал его внутри в течение многих месяцев и понял, что людям нужно что-то подобное, поэтому я сделал работу, чтобы сделать это публичным.

По сути, он слушает уведомления Gitlab и, когда видит фиксацию пакета, читает файл .gitlab-pipes.yml, чтобы определить зависимости проектов. Он сможет построить граф зависимостей ваших проектов и создать пакеты для потребителей при последующих коммитах.

Документация здесь , она как бы говорит вам, как она работает. И тогда основной веб-сайт приложения находится здесь.

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

Многопроектные конвейеры являются платной функцией , представленной в GitLab Premium 9.3 , и доступны только с использованием моделей GitLab Premium или Silver.

Способ увидеть это справа от заголовка документа: hover icon

...