Gitlab CI может запускать другую стадию конвейера проекта?

#gitlab #gitlab-ci #pipeline

# #gitlab #gitlab-ci #конвейер

Вопрос:

У меня есть проект A и проект E2E. Я хочу развернуть тест запуска конвейера запуска проекта E2E, но мне просто нужен этап тестирования триггера. нам не нужен триггер E2E для сборки, развертывания … и т. Д

 e2e_tests:
    stage: test
    trigger:
        project: project/E2E
        branch: master
        strategy: depend
        stage: test
 

Я пытался использовать этап в конфигурации. но получил ошибку неизвестные ключи: этап

есть какие-либо предложения?

Ответ №1:

В вашем проекте E2E, который получает триггер, вы можете указать, чтобы задание выполнялось только тогда, когда источником конвейера является триггер, используя rules синтаксис:

 build-from-trigger:
  stage: build
  when: never
  rules:
    - if: "$CI_COMMIT_REF_NAME == 'master' amp;amp; $CI_PIPELINE_SOURCE == 'trigger'
      when: always
  script:
    - ./build.sh # this is just an example, you'd run whatever you normally would here
 

Первый when оператор when: never устанавливает значение по умолчанию для задания. По умолчанию это задание никогда не будет выполняться. Затем, используя rule синтаксис, мы устанавливаем условие, которое позволит выполнить задание. Если CI_COMMIT_REF_NAME переменная (имя ветви или тега) master равна, А CI_PIPELINE_SOURCE переменная (независимо от того, что запустило этот конвейер) равна a trigger , тогда мы запускаем это задание.

Вы можете прочитать о when ключевом слове здесь: https://docs.gitlab.com/ee/ci/yaml/#when , и вы можете прочитать rules документацию здесь: https://docs.gitlab.com/ee/ci/yaml/#rules