Ответ 1
Похоже, я нашел решение:
Я добавил шаг сборки для выполнения следующих команд оболочки:
git submodule foreach git checkout master
git submodule foreach git pull
У меня есть подмодуль в проекте в дженкинсах. Я включил расширенную настройку для рекурсивного обновления подмодулей. Когда я запускаю сборку, я вижу, что в рабочей области есть файлы из подмодуля. Проблема в том, что это первая ревизия подмодуля. Когда я нажимаю изменения (репозиторий, размещенный на github), дженкинс, похоже, не обновляет подмодуль, чтобы получить правильные изменения. Кто-нибудь когда-нибудь видел это?
Похоже, я нашел решение:
Я добавил шаг сборки для выполнения следующих команд оболочки:
git submodule foreach git checkout master
git submodule foreach git pull
Обратите внимание, что Jenkins Git плагин 2.0 будет иметь "продвинутое поведение подмодулей", которое должно обеспечить правильное обновление подмодулей:
Как прокомментировал vikramvi
:
Advanced sub-modules behavior
> "Path of the reference repo to use during submodule update
" против этого поля, добавьте подмодуль Git url.
Знаете ли вы, что ваш репозиторий git всегда относится к конкретной ревизии подмодуля? Дженкинс не собирается автоматически изменять ревизию.
Если вы хотите использовать более новую версию подмодуля, вы должны сделать это в своем локальном репозитории git:
cd submoduledir
git pull
cd ..
git add submoduledir
git commit -m 'Updated to latest revision of submoduledir'
git push # Go and watch jenkins build with the new revision of the submodule
Когда вы это сделаете, Дженкинс проверит ту же самую ревизию подмодуля во время сборки. Дженкинс сам по себе не решает, какой пересмотр подмодуля использовать. Это принципиальное различие между git подмодулями и внешними svn.
Возможно, вы захотите прочитать хорошую ссылку на подмодули, например. http://progit.org/book/ch6-6.html
Это описано в документации по плагину Git на сайте Jenkins в разделе: Рекурсивные подмодули.
выдержкаПлагин Git поддерживает репозитории с подмодулями, которые, в свою очередь, сами имеют подмодули. Это должно быть включено, хотя: в настройке задания → Управление исходным кодом раздела, Git → Расширенная кнопка (под ветками для сборки) → Рекурсивно обновить подмодули.
На экране конфигурации вашего задания в разделе "Управление исходным кодом" нажмите кнопку "Добавить" вниз, выберите "Улучшенные подинмодули".
Затем выберите "Рекурсивно обновить подмодули":
Наконец наткнулся на способ сделать это, и это просто.
Исходный клон с учетными данными работает отлично, но последующее клонирование submodule
не выполняется с неправильными учетными данными.
Source Code Management >> Additional Behaviours >> Advanced sub-modules behaviours
: приводит к ошибке учетных данных.git submodule update --init
в разделе Execute Shell
также терпит неудачу с ошибкой учетных данных.Я использую jenkins-1.574
.
Build Environment >> SSH Agent
.Source Code Management
Обновить подмодули в разделе Execute Shell
git submodule sync
git submodule update --init --recursive
Здесь снимок экрана
Если вы используете модуль Jenkins Git, вы можете установить его в "Протрите рабочую область перед сборкой", таким образом, он всегда получит правильный вспомогательный модуль.