Planen Sie ein bestimmtes Build-Ziel in Jenkins?

8

Die Gruppe, in der ich arbeite, hat Jenkins für Continuous Integration Builds standardisiert. Code-Check-in löst eine Standard-Build-, Cobertura-Analyse aus und veröffentlicht sie in einem Artifactory SNAPSHOT Repo. Ich habe gerade ein neues Ziel zur Master-Build-Datei hinzugefügt, das einen Sonar-Lauf startet, aber ich möchte nicht, dass es bei jedem Check-in ausgeführt wird.

Gibt es eine Möglichkeit, einen nächtlichen Build eines bestimmten Build-Ziels in Jenkins zu planen? Jenkins erleichtert offensichtlich geplante Builds, aber es wird jedes Mal den regulären Build des Projekts ausführen. Ich möchte in der Lage sein, das Sonar-Build-Ziel für die nächtliche Ausführung zu planen.

Ich könnte natürlich ein separates Jenkins-Projekt erstellen, nur um das Sonar-Ziel nach einem Zeitplan auszuführen, aber ich versuche, das zu vermeiden, wenn ich kann. Unser Jenkins-Server hat bereits mehrere hundert Builds darauf; das zu verdoppeln, um nächtliche Builds zu planen, ist nicht sehr wünschenswert. Ich suchte nach einem Jenkins Plug-in, das das vielleicht erleichtern würde, aber ich konnte nichts finden. Irgendwelche Vorschläge?

    
Sam T. 21.10.2011, 14:59
quelle

2 Antworten

7

Hier ist eine Möglichkeit, dies zu tun, wenn Sie den Build mit cron oder einem anderen Zeitplanungswerkzeug auslösen:

  • Machen Sie den Build parametrisiert und verwenden Sie einen Parameter in Ihrer Build-Datei, um zu entscheiden, ob der Sonar Build Target sollte laufen oder nicht.
  • Ausgelöst wird der Build per HTTP POST: Die Parameterwerte werden als Formular an http://[jenkins-host]/jobs/[jobname]/buildWithParameters übergeben. Je nach Jenkins-Version und -Konfiguration müssen Sie möglicherweise ein Authentifizierungs-Token hinzufügen und dies in deine URL aufnehmen.
  • Authentifizieren Sie Ihren POST mit einem Benutzernamen und einem Passwort.

    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>"

Anders Lindahl 22.10.2011, 07:24
quelle
3

Ich suche auch nach einer Lösung dafür. Meine derzeitige Lösung in meinem Kopf ist es, 2 Trigger im regulären Build zu erstellen, einer ist der nächtliche Build, ein anderer ist Polling SCM

In der Sonar-Plugin-Konfiguration gibt es die Möglichkeit, die von der SCM-Änderung ausgelösten Builds zu überspringen. Daher startet nur der nächtliche Build eine Sonaranalyse.

Ich hatte keine Chance, es jetzt zu testen, aber ich denke, das wird funktionieren.

Aktualisiert am 19.12.2011 Die obige Lösung funktioniert nicht, wenn die Sonaranalyse als eigenständiger Build-Schritt aufgerufen wird. Um die Sonaranalyse bedingt durchzuführen, können Sie die folgenden 2 Plugins verwenden:

  1. Conditional BuildStep Plugin - erlaubt die Sonaranalyse bedingt auszuführen
  2. Jenkins Environment Injector Plug-in - Damit können Sie die Variablen injizieren, um anzugeben, wie der Build ausgelöst wird.
Mingjiang Shi 17.12.2011 05:01
quelle