Eu tenho um submódulo em um projeto em Jenkins. Eu habilitei a configuração avançada para atualizar submódulos recursivamente.
Quando executo o build, vejo que o espaço de trabalho contém os arquivos do submódulo. O problema é que parece ser a primeira revisão do submódulo. Quando eu envio as alterações (repositório hospedado no GitHub), o Jenkins não parece atualizar o submódulo para obter as alterações corretas. Alguém já viu isso?
Isso é abordado na documentação do plug-in Git no site Jenkins na seção: Submódulos recursivos .
excertoExemplo
Na tela de configuração do seu trabalho, na seção Gerenciamento do código-fonte, puxe o botão Adicionar para baixo e selecione "Comportamento de submódulos avançado".
Em seguida, selecione "Atualizar submódulos recursivamente":
fonte
Você está ciente de que seu repositório Git sempre se refere a uma revisão particular de um submódulo? Jenkins não vai mudar automaticamente a revisão.
Se você quiser fazer uma revisão mais recente do submódulo em uso, deve fazer isso em seu repositório Git local:
Quando você faz assim, o Jenkins verifica exatamente a mesma revisão do submódulo durante a construção. O Jenkins não decide por si mesmo qual revisão do submódulo usar. Esta é a diferença fundamental entre submódulos Git e externos SVN.
Você pode querer ler uma boa referência sobre submódulos, por exemplo, http://progit.org/book/ch6-6.html .
fonte
Finalmente descobri uma maneira de fazer isso e é simples.
O problema:
O clone inicial com credenciais funciona bem, mas a
submodule
clonagem subsequente falha com credenciais incorretas.Source Code Management >> Additional Behaviours >> Advanced sub-modules behaviours
:: resulta em erro de credencial.git submodule update --init
naExecute Shell
seção também falha com erro de credenciais.A solução:
Estou usando
jenkins-1.574
.Build Environment >> SSH Agent
caixa.Source Code Management
seçãoAtualize os submódulos na
Execute Shell
seçãoAqui está uma captura de tela
fonte
Parece que encontrei uma solução:
Eu adicionei uma etapa de compilação para executar os seguintes comandos de shell:
fonte
git submodule update --init --recursive
Se você estiver usando o módulo Jenkins Git, você pode configurá-lo para "Limpar o espaço de trabalho antes de construir", desta forma ele sempre obterá o submódulo correto.
fonte
Estou usando pipelining com script com o plug-in de checkout. Se você deseja que os submódulos sejam iguais aos do seu repositório, basta desligar a opção trackingSubmodules desta forma:
fonte