# #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 только для тегов.