Gitlab-CI: выполните задание в главной ветви или если в главной ветви был создан тег?

# #gitlab-ci

Вопрос:

Как я могу выполнить задание только в главной ветви или если в главной ветви был создан тег?

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

 publish_dev:
  # should only run on master branch
  only:
    - master

publish_prd:
  # should only run if a tag has been created on the master branch
  only:
   - tags:
  except: 
   - branches

triger_job:
  # should always run on the master branch
  only:
   - master
  needs:
   - job: publish_dev
   - job: publish_prd
 

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

 'trigger_job' job needs 'publish_prd' job but it was not added to the pipeline
 

Если у меня нет раздела «потребности» в trigger_job, задание запускается до завершения задания publish_dev или publish_prd.

Ответ №1:

 publish_prd:
  # should only run if a tag has been created on the master branch
  only:
   - tags:
  except: 
   - branches

triger_job:
  # should always run on the master branch
  only:
   - master
  needs:
   - job: publish_dev
   - job: publish_prd 

Из того, что мы видим, следует, что trigger_job нуждается в задании publish_prd и _dev и выполняется только на главном, но publish_prd выполняется только на тегах, поэтому задание триггера не может найти его, когда оно находится на главном. Поэтому, чтобы избежать конфликта, просто добавьте еще одно задание tigger только для тегов.