2011-10-21 14 views
8

Il gruppo in cui lavoro è standardizzato su Jenkins per le build di Integrazione continua. Il check-in del codice attiva una build standard, l'analisi di Cobertura e pubblica su un repository Artifactory SNAPSHOT. Ho appena finito di aggiungere una nuova destinazione al file di build principale che darà il via a una corsa di Sonar ma non voglio che sia in esecuzione su ogni check-in.Pianifica un obiettivo di build specifico in Jenkins?

C'è un modo per pianificare una build notturna di un obiettivo di build specifico in Jenkins? Evidentemente Jenkins facilita le build pianificate, ma eseguirà la build regolare del progetto ogni volta. Mi piacerebbe essere in grado di programmare il target di build Sonar per funzionare di notte.

Potrei, ovviamente, creare un progetto Jenkins separato solo per eseguire il target Sonar su un programma ma sto cercando di evitarlo se posso. Il nostro server Jenkins ha già diverse centinaia di build; raddoppiare quello per la pianificazione di build notturne non è molto auspicabile. Ho cercato un plug-in Jenkins che potesse facilitare questo, ma non ho trovato nulla. Eventuali suggerimenti?

risposta

7

Ecco un modo per farlo, se siete ok con innescando la build utilizzando cron o qualche altro strumento di pianificazione:

  • Fai la build parameterized, e utilizzare un parametro nel file di build per decidere se il L'obiettivo di costruzione del sonar dovrebbe essere eseguito o meno.
  • Attiva la generazione da remoto tramite POST HTTP: immettendo i valori dei parametri come modulo su http://[jenkins-host]/jobs/[jobname]/buildWithParameters. A seconda della versione e della configurazione di Jenkins, potrebbe essere necessario aggiungere uno Authentication Token e includerlo nell'URL.
  • Autentica il tuo POST utilizzando un nome utente e una password.

    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 non vedere un modo migliore neanche. Sarei interessato anche a una soluzione migliore. –

3

Sono anche alla ricerca di una soluzione per questo. La mia soluzione attuale nella mia mente è quello di creare 2 trigger nella build regolare, uno è la nightly build, un altro è Polling SCM

Nella configurazione del sonar plug-in, ha le opzioni per saltare le generazioni innescata dal cambiamento SCM . Pertanto, solo la compilazione notturna avvia un'analisi del sonar.

Non ho avuto la possibilità di testarlo ora, ma suppongo che funzionerà.

Aggiornamento in data 19/12/2011 La soluzione di cui sopra non funziona se l'analisi del sonar viene richiamata come fase di compilazione autonoma. Per far funzionare l'analisi del sonar condizionale, è possibile utilizzare i seguenti 2 plugin:

  1. condizionale BuildStep Plugin - questo permette l'analisi sonar per essere eseguito in modo condizionale
  2. Jenkins Ambiente iniettore Plugin - questo ti permette di iniettare le variabili per indicare come viene generata la build.
Problemi correlati