2011-10-21 4 views
8

El grupo en el que trabajo se ha estandarizado en Jenkins para compilaciones de Integración Continua. El check-in de código desencadena una versión estándar, análisis de Cobertura y publicación en un repositorio SNAPSHOT de Artifactory. Acabo de agregar un nuevo objetivo al archivo de compilación maestra que iniciará una ejecución de Sonar, pero no quiero que se ejecute en cada check-in.¿Programa el objetivo de generación específico en Jenkins?

¿Hay alguna forma de programar una construcción nocturna de un objetivo de construcción específico en Jenkins? Jenkins, obviamente, facilita las construcciones programadas, pero ejecutará la construcción regular del proyecto en todo momento. Me gustaría poder programar el objetivo de compilación de Sonar para que se ejecute todas las noches.

Podría, por supuesto, crear un proyecto separado de Jenkins solo para ejecutar el objetivo de Sonar en un horario, pero estoy tratando de evitar eso si puedo. Nuestro servidor Jenkins ya tiene varios cientos de compilaciones; duplicar eso por el bien de programar construcciones nocturnas no es muy deseable. Busqué un complemento de Jenkins que pudiera facilitar esto, pero no pude encontrar nada. ¿Alguna sugerencia?

Respuesta

7

Aquí hay una manera de hacerlo, si estás bien con la activación de la construcción utilizando cron o alguna otra herramienta de programación:

  • hacer que la construcción parameterized, y utilizar un parámetro en el fichero de construcción para decidir si el El objetivo de compilación del Sonar debería ejecutarse o no.
  • Dispare la compilación de forma remota mediante HTTP POST: ing los valores de los parámetros como un formulario a http://[jenkins-host]/jobs/[jobname]/buildWithParameters. Dependiendo de su versión y configuración de Jenkins, es posible que necesite agregar un Authentication Token e incluirlo en su url.
  • Autentica tu POST usando un nombre de usuario y contraseña.

    wget --auth-no-challenge --http-user=USERNAME --http-password=PASSWORD "https://[jenkins-host]/job/[jobname]/buildWithParameters?token=<token defined in job configuration>&<param>=<value>&<param2>=<value2>"

+0

+1 no veo una mejor manera tampoco. Me interesaría una mejor solución también. –

3

También estoy buscando una solución para esto. Mi solución actual en mi mente es crear 2 desencadenantes en la compilación regular, uno es la compilación nocturna, y otra es Polling SCM

En la configuración del complemento sonar, tiene las opciones para omitir las compilaciones activadas por el cambio SCM . Por lo tanto, solo la construcción nocturna comenzará un análisis de sonar.

No tuve la oportunidad de probarlo ahora, pero supongo que esto funcionará.

Actualizado el 19/12/2011 La solución anterior no funciona si el análisis de sonar se invoca como un paso de compilación independiente. Para hacer funcionar el análisis del sonar de forma condicional, podría utilizar los siguientes plugins: 2

  1. condicional BuildStep Plugin - esto permite el análisis de sonar para ejecutar condicionalmente
  2. Jenkins Medio Ambiente del inyector Plugin - esto permite que se inyecte las variables para indicar cómo se desencadena la construcción.
Cuestiones relacionadas