У меня есть подмодуль в проекте в Jenkins. Я включил расширенную настройку для рекурсивного обновления подмодулей.
Когда я запускаю сборку, я вижу, что в рабочей области есть файлы из подмодуля. Проблема в том, что это вроде первая ревизия подмодуля. Когда я нажимаю изменения (репозиторий, размещенный на GitHub), Дженкинс, похоже, не обновляет подмодуль, чтобы получить правильные изменения. Кто-нибудь видел такое?
Это описано в документации подключаемого модуля Git на сайте Jenkins в разделе: Рекурсивные подмодули. .
выдержкапример
На экране конфигурации вашего задания в разделе «Управление исходным кодом» потяните кнопку « Добавить» вниз и выберите «Расширенное поведение подмодулей».
Затем выберите «Рекурсивно обновлять подмодули»:
источник
Знаете ли вы, что ваш репозиторий Git всегда ссылается на конкретную ревизию? подмодуля? Дженкинс не собирается автоматически менять ревизию.
Если вы хотите использовать новую версию подмодуля, вы должны сделать это в своем локальном репозитории Git:
Когда вы это сделаете, Дженкинс проверит ту же самую ревизию подмодуля во время сборки. Дженкинс сам по себе не решает, какую версию подмодуля использовать. Это фундаментальное различие между подмодулями Git и внешними модулями SVN.
Возможно, вы захотите прочитать хороший справочник по подмодулям, например http://progit.org/book/ch6-6.html .
источник
Наконец наткнулся на способ сделать это, и это просто.
Проблема:
Первоначальный клон с учетными данными работает нормально, но последующее
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 update --init --recursive
Если вы используете модуль Jenkins Git, вы можете установить для него значение «Удалить рабочее пространство перед сборкой», таким образом он всегда будет получать правильный подмодуль.
источник
Я использую конвейерную обработку сценариев с плагином проверки. Если вы хотите, чтобы подмодули были такими же, как в вашем репозитории, просто отключите параметр trackingSubmodules следующим образом:
источник