Как обработать родительский репозиторий подмодуля 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
'''

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

Другие вопросы по тегам