wake-up-neo.com

Jenkins CI: Wie man Builds auf SVN Commit auslöst

Welche Plugins und Plugin-Funktionen muss ich einstellen, damit mein Jenkins-Job einen Build auslöst, wenn Code für ein SVN-Projekt festgeschrieben wird?

Ich habe sowohl das Standard-SVN-Plugin als auch das SVN-Tagging-Plugin installiert, sehe jedoch keine neuen Funktionen, die eine Trigger-Konfiguration ermöglichen.

76
IAmYourFaja

Hierfür gibt es zwei Möglichkeiten:

Ich empfehle die erste Option aufgrund der einfachen Implementierung. Wechseln Sie zu dem zweiten, sobald Sie in Ihren Erstellungsprozessen ausgereift sind.

  1. Rufen Sie das Repository ab, um festzustellen, ob Änderungen aufgetreten sind. Dies kann ein Commit "überspringen", wenn zwei Commits innerhalb desselben Abfrageintervalls eingehen. Beschreibung der Vorgehensweise hier Beachten Sie den vierten Screenshot, in dem Sie vor Ort einen "Build-Trigger" konfigurieren, der auf der Abfrage des Repositorys basiert (mit einer Crontab-ähnlichen Konfiguration).

  2. Konfigurieren Sie Ihr Repository mit einem Post-Commit-Hook, der Jenkins benachrichtigt, dass ein Build gestartet werden muss. Beschreibung dazu hier , im Abschnitt "Post-Commit-Hooks"

Die SVN-Tag-Funktion ist nicht Teil der Abfrage, sondern Teil des Heraufstufens des aktuellen "Heads" des Quellcodes zu einem Tag, um eine Momentaufnahme eines Builds zu erstellen. Dies ermöglicht es Ihnen, Jenkins buid # 32 als SVN-Tag/tags/build-32 (oder ähnliches) zu bezeichnen.

84
Edwin Buck

Ich habe ein Tool mit Python mit einigem Bash erstellt, um einen Jenkins-Build auszulösen. Grundsätzlich müssen Sie diese beiden Werte aus dem Post-Commit sammeln, wenn ein Commit auf den SVN-Server trifft:

REPOS="$1"
REV="$2"

Dann verwenden Sie "svnlook dirs-changed $ 1 -r $ 2", um den Pfad abzurufen, der gerade festgeschrieben wurde. Anschließend können Sie überprüfen, welches Repository Sie erstellen möchten. Stellen Sie sich vor, Sie haben Hunderttausende von Projekten. Sie können nicht das gesamte Repository überprüfen, oder?

Sie können auschecken mein Skript von GitHub .

1
Phan Dolphy

Sie müssen nur ein Plugin benötigen, nämlich das Subversion-Plugin.

Dann gehen Sie einfach zu Jenkins → job_name → Build-Trigger Abschnitt → (i) Trigger-Build aus der Ferne (d. H. Von Skripten) Authentifizierungs-Token: Tokenname

Wechseln Sie in das Hook-Verzeichnis des SVN-Servers und geben Sie nach dem Auslösen die folgenden Befehle ein:

  1. cp post-commit.tmpl post-commit
  2. chmod 777 post-commit
  3. chown -R www-data:www-data post-commit
  4. vi post-commit

    Hinweis: Alle Zeilen sollten kommentiert werden Fügen Sie zuletzt die folgende Zeile hinzu

Syntax (für Linux-Benutzer):

/usr/bin/curl http://username:[email protected]:8081/job/job_name/build?token=Token_name

Syntax (für Windows Benutzer):

C:/curl_for_win/curl http://username:[email protected]:8081/job/job_name/build?token=Token_name
1
Hemin Patel