Tuberías de Jenkins: ¿Cómo usarlas con Git, especialmente con múltiples repositorys de Git?

La situación…

Tengo varios repositorys Git que son necesarios para mi compilation. Estoy desarrollando código activamente en uno, mientras que los demás contienen el código de biblioteca que uso. Dado que cada repos es independiente, por supuesto, todos tienen diferentes nombres de twig.

Para mi compilation de Jenkins, me gustaría search las versiones relevantes del código de cada repository, ponerlas en los subdirectorys correctos y build mi proyecto. Idealmente, también debería ser capaz de hacer un clon superficial (porque uno de estos repos es grande), y ser capaz de hacer un escaso logging de solo el path que quiero.

El complemento Multiple SCMs parecía ser la herramienta ideal para el trabajo. Sin embargo, no está en desarrollo activo, y lo he visto arrojando afirmaciones de las que otras personas han hablado.

He visto esta pregunta que responde cómo usar el Gasoducto Jenkins para hacer esto, así que investigué el Gasoducto Jenkins. Rápidamente descubrí a partir de la documentation de Git Pipeline que su apoyo a Git podría describirse de manera muy caritativa como "mínimo", una statement que es igualmente cierta para el rest del concepto de Pipeline. (Y eso es antes de entrar en la pesadilla que está reemplazando una interfaz de usuario perfectamente viable con una interfaz de solo text. Pesadilla de mantenimiento, ¿no?)

También podría configurar subproyectos de Git. Prefiero no tener que seguir esta ruta como una forma de resolver las deficiencias de la última versión de Jenkins, pero las necesidades deben ser si se trata de la única solución.

Diré que una solución que no sea Jenkins no es realmente una opción, porque hemos estado usando Jenkins en nuestra compañía durante un time y no queremos tener que configurar algo más.

Creo que el soporte de git en Pipeline no falta en absoluto. Al less ya no. Y la tubería es extremadamente poderosa. Ciertamente no es mínimo. Tal vez estás mirando la documentation anterior. La tubería declarativa podría aún considerarse un poco inmadura, pero aún muy poderosa y fácil, y generalmente mi elección pnetworkingeterminada a less que necesite volverme un poco más loca.

La documentation que publicaste para el paso de compilation de git es solo un contenedor del paso checkout scm , que se puede usar para operaciones de git muy simples. Esa no es la medida de las opciones disponibles para usar git en Jenkins.

En particular, tengo un trabajo multilínea en oleoductos que mira un git repo. Cuando se detecta un cambio, el repository se baja, luego selecciono una salida dispersa de otro repository en un subdirectory, y luego selecciono otro repository completo en otro directory. Ejecuto algunos scripts de compilation. Comprima algunas cosas, implemente el file zip y luego ejecute algunos processs ssh remotos para hacer cosas con los packages en el server remoto.

En una canalización declarativa hago esto para un pago escaso:

 dir("package/infra") { deleteDir() //start with a clean directory checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [[$class: 'SparceCheckoutPaths', sparseCheckoutPaths: [[path: "my/path/here"]]]], userRemoteConfigs: [[cnetworkingentialsId: 'asdf-fdsa-werw5-asjksadf-wlfjsdf', url: 'git@github.com:ABC/DEF.git']]]) } 

También puedes hacer clones superficiales y todo tipo de comportamiento complejo de git.

Puede ser mejor con una segunda compilation para sus bibliotecas, y almacenar los artefactos construidos en artefactorio, o simplemente archivarlos en Jenkins. Luego, traiga los artefactos de artefactory o use el plugin de copy Artifacts. para traerlos de otro trabajo. Pero cada situación es diferente.