Usando Jenkins 1.501 e Jenkins Git plugin 1.1.26
Eu tenho 3 diferentes repositórios git, cada um com vários projetos.
Agora, preciso fazer o check-out de todos os projetos dos repositórios 3 git no mesmo espaço de trabalho em um escravo Jenkins. Eu defini cada repositório git em: Gerenciamento de código-fonte: SCMs múltiplos . Mas cada vez que um repo é retirado, o repo anterior (e seus projetos associados) é excluído.
Eu li isso:
http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html
mas isso realmente não ajuda. Tentei especificar a mesma pasta no subdiretório local para repositório (opcional) para todos os repositórios, mas fornece o mesmo resultado.
Se isso for simplesmente impossível usando Jenkins, acho que algumas etapas / scripts de pré-compilação podem ser usadas para mover os projetos para o local certo. Não é uma opção para modificar a configuração de compilação dos projetos.
Com o plugin Multiple SCMs:
crie uma entrada de repositório diferente para cada repositório que você precisa fazer checkout (projeto principal ou projeto de dependência.
para cada projeto, no menu "avançado" (o segundo menu "avançado", existem dois botões denominados "avançado" para cada repositório), localize o campo de texto "Local subdiretório para repo (opcional)". Você pode especificar lá o subdiretório no diretório "espaço de trabalho" para o qual deseja copiar o projeto. Você pode mapear o sistema de arquivos do meu computador de desenvolvimento.
O "segundo menu avançado" não existe mais; em vez disso, o que precisa ser feito é usar o botão "Adicionar" (na seção "Comportamentos adicionais") e escolher "Fazer check-out para um subdiretório"
Espero que ajude.
fonte
Como o plug - in SCMs múltiplo está obsoleto.
Com o Jenkins Pipeline, é possível fazer check-out de vários repositórios git e depois de construí-lo usando gradle
Você pode considerar o uso de submódulos git em vez de um pipeline personalizado como este.
fonte
dir
bloco é fundamental, eu não conseguia entender por que estava vendo o repo clonado mais recente no espaço de trabalho do meu trabalho.23 changes from repo XXX, 3 changes from repo YYY
ou algo mais compacto nesse sentido.Usei o Multiple SCMs Plugin em conjunto com o Git Plugin com sucesso com Jenkins.
fonte
Dependendo dos relacionamentos dos repositórios, outra abordagem é adicionar o outro repositório (repositórios) como sub - módulos git a um dos repositórios. Um submódulo git cria uma referência para os outros repositórios. Esses repositórios de sub-módulo não são clonados, a menos que você especifique o
--recursive
sinalizador ao clonar o "superprojeto" (termo oficial).Aqui está o comando para adicionar um submódulo ao projeto atual:
git submodule add <repository URI path to clone>
Estamos usando o Jenkins v1.645 e o git SCM fará um clone recursivo imediato para superprojetos. Voila, você obtém os arquivos de superprojeto e todos os arquivos de repo dependentes (submódulo) em seus próprios diretórios respectivos no mesmo espaço de trabalho da tarefa Jenkins.
Não atestando que esta é a abordagem correta , é uma abordagem.
fonte
Jenkins: SCM múltiplo - descontinuado. Plug-in GIT - não funciona para vários repositórios.
Script / pipeline como código - é o caminho a percorrer.
fonte
Eu também tive esse problema. Eu o resolvi usando o Trigger / call builds em outros projetos. Para cada repositório, chamo o projeto downstream usando parâmetros.
Projeto principal:
Então, para cada repositório, chamo um projeto downstream como este:
Projeto downstream: Linux-Tag-Checkout:
fonte
Check-out mais de um repo em um momento em um único espaço de trabalho é possível com Jenkins + Git Plugin (talvez apenas em versões mais recentes?).
Na seção "Gerenciamento do código-fonte", não selecione "Git", mas "Vários SCMs" e adicione vários repositórios git.
Certifique-se de que em todos, exceto um, você adicione como "Comportamento adicional" a ação "Fazer check-out em um subdiretório" e especifique um subdiretório individual.
fonte
Estamos usando o git-repo para gerenciar nossos múltiplos repositórios GIT. Há também um plug-in Jenkins Repo que permite fazer check-out de todo ou parte dos repositórios gerenciados pelo git-repo no mesmo espaço de trabalho de trabalho do Jenkins.
fonte