2011-10-21 13 views
8

Grupa, w której pracuję, ustandaryzowała wersję Jenkins dla ciągłej integracji. Odprawa kodu uruchamia standardową kompilację, analizę Cobertura i publikuje w repozytorium artefakcyjnym SNAPSHOT. Właśnie zakończyłem dodawanie nowego celu do głównego pliku kompilacji, który uruchomi serię sonarów, ale nie chcę, aby działała przy każdym zameldowaniu.Zaplanuj konkretny cel kompilacji w Jenkins?

Czy istnieje sposób zaplanowania nocnej kompilacji określonego celu budowy w Jenkins? Jenkins oczywiście ułatwia zaplanowane kompilacje, ale za każdym razem uruchamia regularną budowę projektu. Chciałbym móc zaplanować cel budowania sonaru, który będzie uruchamiany co noc.

Mogę, oczywiście, stworzyć osobny projekt Jenkinsa tylko po to, aby uruchomić cel sonaru zgodnie z harmonogramem, ale staram się tego uniknąć, jeśli mogę. Nasz serwer Jenkins ma już kilkaset wersji kompilacji; podwojenie tego, że ze względu na planowanie nocnych buildów nie jest bardzo pożądane. Szukałem wtyczki Jenkinsa, która mogłaby to ułatwić, ale nie mogłem nic znaleźć. Jakieś sugestie?

Odpowiedz

7

Oto jeden ze sposobów, aby to zrobić, jeśli jesteś ok z wyzwalania zbudować używając cron lub innego narzędzia Harmonogram:

  • podjęciu build parameterized i użyj parametru w pliku kompilacji, aby zdecydować, czy Cel budowy sonaru powinien być uruchamiany lub nie.
  • Zdalnie wyzwalaj kompilację za pomocą protokołu HTTP POST: wartości parametrów jako formularz do http://[jenkins-host]/jobs/[jobname]/buildWithParameters. W zależności od wersji i konfiguracji Jenkinsa może być konieczne dodanie numeru Authentication Token i uwzględnienie go w adresie URL.
  • Uwierzytelnij swój POST, używając nazwy użytkownika i hasł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 nie widać też lepszego sposobu. Byłbym też zainteresowany lepszym rozwiązaniem. –

3

Ja również poszukuje rozwiązania dla tego produktu. Moje obecne rozwiązanie polega na utworzeniu 2 wyzwalaczy w regularnej kompilacji, jedna to nocna kompilacja, druga to Polling SCM

W konfiguracji wtyczki sonaru ma opcje pominięcia kompilacji wywołanych zmianą SCM . Dlatego tylko nocna kompilacja rozpocznie analizę sonaru.

Nie miałem okazji przetestować go teraz, ale przypuszczam, że to zadziała.

Zaktualizowano na 19.12.2011 Powyższe rozwiązanie nie działa, jeśli analiza sonaru zostanie wywołana jako samodzielny krok kompilacji. Aby uruchomić analizę sonar warunkowo, można użyć następujących 2 wtyczki:

  1. Warunkowe BuildStep Plugin - Pozwala to na analizę sonar do uruchomienia warunkowo
  2. Jenkins Środowisko Injector Plugin - pozwala wstrzyknąć zmienne wskazujące, w jaki sposób zostanie wywołana kompilacja.