2011-06-30 20 views
19

¿Cómo maneja el mapeo de trabajos de Jenkins en su proceso de compilación, y ha podido construir configuraciones de herencia en cascada?Herencia de trabajo en trabajos de Jenkins

Para cualquier compilación dada, tendré al menos tres trabajos (integración continua estándar/nocturna, escaneo de seguridad, cobertura) y luego algunos trabajos de pruebas de integración en sentido descendente. El plugin slicer de configuración maneja algunos aspectos de trabajos cruzados, pero cada uno de los trabajos sigue siendo en gran medida su propia entidad individual sin relación con los otros trabajos de su grupo.

Recientemente vi QuickBuild y tiene herencia de trabajo donde los trabajos principales pueden definir un grupo de pasos estándar y sus hijos pueden sobrescribirse y especializarse. Con Jenkins, tengo copias de trabajos, lo cual está bien hasta que tenga que cambiar algo. Con QuickBuild, la relación entre trabajos me permite extender mis cambios con poco esfuerzo.

He estado tratando de descubrir cómo manejar esto en Jenkins. Podría usar el complemento de activación de compilación parametrizado para permitir que los trabajos llamen a otros y anulen aspectos. Luego recolectaría los datos de los trabajos llamados a su llamador. Sospecho que me encontraré con una serie de problemas en los que hay aspectos que no puedo anular y que me obligarán a implementar la funcionalidad de Jenkins en mi propio guión, haciendo que Jenkins sea menos útil.

¿Cómo manejas la complejidad en tus trabajos de construcción en Jenkins? ¿Has oído hablar de algún problema serio con QuickBuild?

+0

He estado buscando en estos temas hoy en día, aunque sin cualquier interés en QuickBuild. En particular, me gustaría tener diferentes opciones de configuración para compilaciones de CI y Nightly, como revisar espacios de trabajo limpios versus realizar una reversión + actualización, cuánto tiempo se almacenan los artefactos de compilación y cómo archivar o implementar artefactos, mientras se mantiene la misma lista de construir instrucciones para cada uno. El complemento Matrix/multiconfig no ofrece suficientes opciones. Creo que podríamos gestionarlo con un subtrabajo que hace solo la compilación, llamado con un espacio de trabajo parametrizado, pero es una complejidad añadida. – CJBrew

+0

Si cada uno de sus trabajos tiene un aspecto de su CI, entonces no debería haber ninguna duplicación de tareas entre trabajos. Tenemos un trabajo de construcción que tiene un trabajo posterior que etapas y luego ejecuta las pruebas de integración. Si existe el deseo de ejecutar algunas de estas pruebas escalonadas en intervalos de tiempo regulares, esto se puede configurar dentro de esos trabajos como disparadores programados también. De esta forma, el trabajo de construcción solo se construye, el trabajo de prueba solo hace pruebas, y así sucesivamente. Si usa la tarea 'Archivar para el espacio de trabajo clonado', el trabajo indirecto puede tener acceso a los artefactos de compilación. ¿Puede expandirse en una respuesta si lo prefiere? – jbjon

+3

Me pregunto si un año después, encontraste una solución a este problema. – sorin

Respuesta

2

Tuve más o menos el mismo problema. Tenemos un conjunto de trabajos que deben ejecutarse para nuestro tronco así como para al menos dos ramas. Las ramas representan nuestras versiones, y se crea una nueva rama cada pocos meses. Crear nuevos trabajos a mano para esto no es una solución, así que revisé algunas posibilidades.

Una posibilidad es utilizar el template plugin. Esto le permite crear una jerarquía de trabajos de un tipo. Proporciona herencia para constructores, editores y configuraciones de SCM. Podría funcionar para algunos, para mí no fue suficiente.

Lo segundo que llamé fue Ant Script para la clonación de trabajos, y su hermano el Bash Script. Estos son realmente grandiosos. La idea es hacer que el script cree un nuevo trabajo, copiar todas las configuraciones desde un trabajo de plantilla, hacer cambios cuando los necesite. Como se trata de un script, es muy flexible y puedes hacer mucho con eso. El único inconveniente es que esto no dará lugar a una jerarquía real, por lo que los cambios en el trabajo de la plantilla no se reflejarán en los trabajos ya clonados, solo en los trabajos que se crearán en el futuro.

Mirando los inconvenientes y virtudes de esas dos soluciones, una combinación de ambas podría funcionar mejor. Usted crea un proyecto de plantilla con algunas configuraciones básicas que serán verdaderas para todos los trabajos, y luego usa un script bash o ant para crear trabajos dependiendo de esa plantilla.

Espero que ayude.

+0

El complemento de plantilla es el camino a seguir. ¡Lo hemos estado usando y ha logrado todo lo que realmente queríamos de un plugin de plantillas! – Mark

1

Me preguntaron cuál era nuestra solución final al problema ... Después de muchos meses de luchar con nuestro sistema de compras, gastamos alrededor de $ 4000 en Quickbuild. En unos 2-3 meses teníamos un sistema de construcción con plantillas y estábamos muy contentos con él. Antes de abandonar la empresa, teníamos varios grupos de productos en el sistema y también estábamos automatizando el proceso de lanzamiento.

Quickbuild fue un gran producto. Debería estar en la clase de $ 40k pero tiene un precio mucho menor. Aunque estoy seguro de que Jenkins podría hacer esto, sería un poco complicado, mientras que Quickbuild tenía esta funcionalidad incorporada. He implementado comportamientos complejos sobre productos antes (por ejemplo, seguimiento de fusión en SVN 1.0) y me arrepentí. Quickbuild tenía un precio razonable y proporcionó una base sólida para nuestros sistemas de construcción y prueba.

En la actualidad, estoy en una firma usando bambú y esperar su característica rama nueva característica proporcionará gran parte de lo que puede hacer Construcción rápida

0

Utilizamos QuickBuild y parece que funcionan muy bien para la mayoría de las cosas. Incluso he podido usar sus API para escribir complementos personalizados. Un área donde falta el build rápido es la integración del sonar. El equipo de sonar tiene un plugin de Jenkins y no uno para quickbuild.

13

Me gustaría resaltar el lanzamiento de un complemento que mi equipo ha desarrollado y que se publicó recientemente en código abierto. Implementa la "Herencia total entre trabajos".

aquí para más enlaces que te pueden ayudar:

+0

¿Hay planes para continuar el desarrollo? Especialmente arreglando las incompatibilidades enumeradas con 'Job Config History' y' Artifactory'. El último compromiso en GitHub es desde febrero de 2015. –

Cuestiones relacionadas