Как обработать родительский репозиторий подмодуля git с помощью zuul, Gearman и Jenkins?
Используются следующие инструменты:
- Геррит
- OpenStack/Zuul
- который включает Gearman
- Дженкинс (Трубопроводные работы)
Конфигурация проекта:
- Проект "родительский" как репозиторий git.
- Проект "Дитя" как репозиторий.
- "parent" имеет "child" в качестве настроенного подмодуля.
- Zuul настроен с использованием zuul-конвейера обзора Gerrit и zuul-конвейера слияния Gerrit для обоих проектов.
Чего я хочу добиться, так это, когда через "дочерний" проект запускается сборка обзора или слияния, а также запускается сборка "родительского" проекта с именно этим изменением. Как?
В настоящее время я возиться с последующим, что, к сожалению, не работает сейчас, потому что я не могу изменить URL субмодуля на ровном месте только для одной сборки. Конфигурация Zuul:
projects:
- name: parent
review:
- review-job
- name: child
review:
- review-job:
- review-parent-with-change-of-child-job
(Я пропустил части слияния, потому что обзор достаточно, чтобы объяснить проблему)
Так что из-за того, что типичная работа Зуула внутри Дженкинса имеет $ZUUL_URL
/$ZUUL_PROJECT
Конфиг внутри и ссылка на Jenkinsfile Я должен написать специальную работу для проверки родителя со сменой ребенка. Что в итоге является просто сборкой основной ветви "родителя" с заменой подмодуля из репозитория Zuul Merger.
И есть проблема, единственный способ, которым я смог добиться, чтобы проверить это изменение из репозитория Zuul Merger, это изменить URL в файле.gitmodule. По моему мнению, это не нормальный способ сделать такую сборку, поэтому я ищу другое решение. Из-за того, что документация о Zuul и проектах с субмодулями практически равна нулю, я как бы застрял здесь.
Я все еще попытаюсь достичь этого безумным способом (еще не проверенным), но хотел бы изменить это как можно скорее на более разумный и безопасный способ, если таковой существует.
1 ответ
Изменение.gitmodules в основном просто не работает.
Но вам не нужно это менять! Сначала я этого не осознавал.
Достаточно использовать репозиторий Zuul в вашем файле Jenkins:
sh '''
cd path/to/your/submodule
git pull $ZUUL_URL/$ZUUL_PROJECT +$ZUUL_REF:refs/heads/zuul
'''
И ваш подмодуль содержит изменения, которые вы хотите протестировать в вашей сборке.