Usando Jenkins 1.501 y Jenkins Git plugin 1.1.26
Tengo 3 repositorios git diferentes, cada uno con múltiples proyectos.
Ahora necesito verificar todos los proyectos de los repositorios de 3 git en el mismo espacio de trabajo en un esclavo Jenkins. He definido cada repositorio de git en: Gestión del código fuente: Múltiples SCM . Pero cada vez que se retira un repositorio, se elimina el repositorio anterior (y sus proyectos asociados).
He leído esto:
http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html
pero en realidad no ayuda. Intenté especificar la misma carpeta en el subdirectorio Local para repositorio (opcional) para todos los repositorios, pero da el mismo resultado.
Si esto es simplemente imposible con Jenkins, supongo que se podrían usar algunos pasos / scripts previos a la compilación para mover los proyectos a la ubicación correcta. No es una opción para modificar la configuración de compilación de los proyectos.
Con el complemento SCM múltiple:
cree una entrada de repositorio diferente para cada repositorio que necesite pagar (proyecto principal o proyecto de dependencia).
para cada proyecto, en el menú "avanzado" (el segundo menú "avanzado", hay dos botones etiquetados como "avanzado" para cada repositorio), busque el campo de texto "Subdirectorio local para repositorio (opcional)". Puede especificar allí el subdirectorio en el directorio "espacio de trabajo" donde desea copiar el proyecto. Podrías mapear el sistema de archivos de mi computadora de desarrollo.
El "segundo menú avanzado" ya no existe, en su lugar, lo que hay que hacer es usar el botón "Agregar" (en la sección "Comportamientos adicionales") y elegir "Verificar en un subdirectorio"
Espero que ayude.
fuente
Dado que el complemento SCM múltiple está en desuso.
Con Jenkins Pipeline es posible verificar múltiples repositorios git y después de construirlo usando gradle
Es posible que desee considerar el uso de submódulos git en lugar de una tubería personalizada como esta.
fuente
dir
bloque es clave, no pude entender por qué solo estaba viendo el repositorio clonado más recientemente en el espacio de trabajo de mi trabajo.23 changes from repo XXX, 3 changes from repo YYY
o algo más compacto en ese sentido.Utilicé el complemento Múltiples SCM junto con el complemento Git con éxito con Jenkins.
fuente
Dependiendo de las relaciones de los repositorios, otro enfoque es agregar el otro repositorio (repositorios) como submódulos git a uno de los repositorios. Un submódulo git crea una referencia a los otros repositorios. Esos repositorios de submódulos no se clonan a menos que especifique la
--recursive
bandera al clonar el "superproyecto" (término oficial).Aquí está el comando para agregar un submódulo al proyecto actual:
git submodule add <repository URI path to clone>
Estamos utilizando Jenkins v1.645 y el git SCM listo para usar hará un clon recursivo para superproyectos. De este modo, obtiene los archivos de superproyectos y todos los archivos de repositorios dependientes (submódulo) en sus propios directorios respectivos en el mismo espacio de trabajo de Jenkins.
No garantizo que este es el enfoque correcto , sino que es un enfoque.
fuente
Jenkins: Múltiple SCM - en desuso. Complemento GIT: no funciona para múltiples repositorios.
Scripting / pipeline as code - es el camino a seguir.
fuente
Yo también tuve este problema. Lo resolví usando Trigger / call builds en otros proyectos. Para cada repositorio, llamo al proyecto descendente utilizando parámetros.
Proyecto principal:
Luego, para cada repositorio, llamo a un proyecto posterior como este:
Proyecto aguas abajo: Linux-Tag-Checkout:
fuente
El registro de salida más de una cesión temporal a la vez en un único espacio de trabajo es posible con Jenkins + Git Plugin (tal vez sólo en las versiones más recientes?).
En la sección "Gestión del código fuente", no seleccione "Git", sino "Múltiples SCM" y agregue varios repositorios git.
Asegúrese de que en todos menos uno agregue como "Comportamiento adicional" la acción "Verificar en un subdirectorio" y especifique un subdirectorio individual.
fuente
Estamos usando git-repo para administrar nuestros múltiples repositorios GIT. También hay un complemento Jenkins Repo que permite retirar todos o parte de los repositorios administrados por git-repo en el mismo espacio de trabajo de Jenkins.
fuente