Нужен успех, чтобы Proj A ожидал завершения Proj B в многопроектных конвейерах gitlab с использованием .gitlab-ci.yml - PullRequest
0 голосов
/ 15 мая 2019

У меня есть 2 проекта Project A и Project B, теперь я хочу, чтобы на какой-то стадии конвейера GitLab CI проекта A должен был запускаться конвейер GitLab CI в проекте B, а затем ждать завершения конвейера проекта B, а затем в конечном итоге проектировать конвейер GitLab CI.будет успешно завершен на основе успешного выполнения проекта B конвейера GitLab CI

В моей компании у меня есть версия 11.8.0 сообщества gitlab, из-за которой я сталкиваюсь с проблемами при запуске нисходящего конвейера с помощью задания моста и затем ждупроект B, чтобы закончить многопроектные трубопроводы gitlab.Премиум Gitlab легко справился бы с вышеуказанным требованием, используя ключевые слова триггера и проекта, указанные в url-creation-multi-project-pipelines-from-gitlab-ciyml .

Я сделал 2 варианта ниже

Вариант 1)

Ну, я подумал, Pipeline-Trigger поможет, который обеспечивает изображение докера в конвейере GitLab CI.

Я создал private_token с полным доступом API , используя , затем использовал, что private_token в CI_JOB_TOKEN, упомянутом ниже, имеет токен проекта, как упомянуто здесь, ниже файл yaml для проекта A

    image: katalonstudio/katalon
    services:
    - docker:dind


    variables:
     PRE_RENDER_ALL: 'false'
      APP_PROJECT_ID: 274
      GIT_SSL_NO_VERIFY: "true"
      API_TOKEN: $PERSONAL_ACCESS_TOKEN
      TARGET_BRANCH: master

    stages:
      - trigger


    trigger:
     stage: trigger
     image: registry.gitlab.com/finestructure/pipeline-trigger
     tags:
       - docker
     script:
       - trigger -p "$CI_JOB_TOKEN" -t master --on-manual pass 274

Ошибка, которую я получаю на конвейере Gitlab CI для проекта A:

       $ trigger -p "$CI_JOB_TOKEN" -t master --on-manual pass 274
       Triggering pipeline for ref 'master' for project id 274
       Traceback (most recent call last):
       File "/usr/bin/trigger", line 299, in <module>
       trigger(sys.argv[1:])
       File "/usr/bin/trigger", line 217, in trigger
       pid = create_pipeline(project_url, pipeline_token, ref, variables)
       File "/usr/bin/trigger", line 87, in create_pipeline
       assert r.status_code == 201, f'Failed to create pipeline, api returned 
       status code {r.status_code}'
       AssertionError: Failed to create pipeline, api returned status code 404
       ERROR: Job failed: exit code 1

Вот файл yaml для проекта B

     image: katalonstudio/katalon
     services:
     -  docker:dind

     stages:
     - test


     test_job:
     stage: test
     tags:
      - docker
     script:
       - katalon-execute.sh -browserType="Chrome" -retry=0 -statusDelay=15 -testSuitePath="Test Suites/LightRegression"
     artifacts:
      name: "$CI_COMMIT_REF_NAME"
       paths:
       - report/
     reports:
       junit:
       - 'report/*.xml'

Опция2) Это работает хорошо, но есть ограничение, которое, хотя конвейер GitLab CI в проекте A запускает конвейер GitLab CI в проекте B, но просто передает управление проекту B и проекту A для успешного завершения и показывает greeОтметьте галочкой конвейер, который не является моим требованием

 image: katalonstudio/katalon
 services:
  - docker:dind


 variables:
   PRE_RENDER_ALL: 'false'
   APP_PROJECT_ID: 274
   GIT_SSL_NO_VERIFY: "true"
   API_TOKEN: $PERSONAL_ACCESS_TOKEN
   TARGET_BRANCH: master

 stages:
  - trigger



 trigger:
  stage: trigger
  tags:
   - docker
  script:
   - curl -k --request POST --form token="$CI_JOB_TOKEN" --form ref=master https://git.abc.hasro.com/api/v4/projects/$APP_PROJECT_ID/trigger/pipeline

Поскольку у меня есть 2 проекта, Проект A и Проект B, все, что я хочу на какой-то стадии конвейера GitLab CI проекта A, должно запускать конвейер GitLab CI в проекте B, а затемдождитесь завершения конвейера проекта B, затем в конечном итоге конвейер GitLab CI проекта A будет успешно завершен на основании успешного выполнения конвейера GitLab CI проекта B

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...