Tengo un repositorio de Git que contiene un montón de proyectos maven de alto nivel (cada uno se sienta en su propio subdirectorio con un pom.xml). El nivel superior aquí significa que estos proyectos se encuentran en el subdirectorio directamente debajo de la raíz del repositorio. Todos estos proyectos deben permanecer en el mismo repositorio de Git.Jenkins: ¿Cómo construir múltiples proyectos de nivel superior desde un repositorio de git?
repo
+--- projectA
+--- pom.xml
+--- projectB
+--- pom.xml
Pueden/deben construirse por trabajos independientes de jenkins. Entonces tenemos un trabajo para projectA y uno para projectB.
Anteriormente con Subversion pude configurar un trabajo de Jenkins (para cada proyecto) que solo obtenía el origen del proyecto y ejecutaba una compilación de Maven desde el pom.xml.
Con el modelo Git (probablemente lo mismo con todos los DVCS) esto cambia y no estoy seguro de cuál es la mejor práctica. Hay algunas opciones que veo y de la que no me gustan:
- Cada trabajo de Jenkins es configured para clonar/tire el repositorio Git completa y se refiere a la /pom.xml para la construcción de Maven. Entonces, el trabajo tiene todo el código, pero construye solo una porción del mismo.
- Git ofrece submódulos (http://book.git-scm.com/5_submodules.html) que parecen ser un poco difícil de manejar (y puede romperse con facilidad)
- Crear un padre experto (agregador que contiene todos los proyectos) proyecto que desencadena cada proyecto de construcción (que tiene un solo trabajo jenkins). Este pom.xml contiene elementos para projectA y projectB.
¿Ven algún enfoque más útil para esto (configuración muy típica). ¿Cuál es tu experiencia? ¿Alguna mejor práctica?
Estoy muy de acuerdo con martin.ahrer en que, en comparación con Subversion, Git no tiene la capacidad de pagar un subproyecto de un repositorio, es un factor limitante. Una buena respuesta a esta pregunta sería increíble. – djangofan