Welche Plugins und Plugin-Funktionen muss ich festlegen, 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.
svn
continuous-integration
jenkins
jenkins-plugins
IAmYourFaja
quelle
quelle
Antworten:
Hierfür gibt es zwei Möglichkeiten:
Ich empfehle die erste Option zunächst, da sie einfach zu implementieren ist. Sobald Sie in Ihren Build-Prozessen ausgereift sind, wechseln Sie zum zweiten.
Fragen 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 finden Sie hier im vierten Screenshot, in dem Sie im Job einen "Build-Trigger" konfigurieren, der auf der Abfrage des Repositorys basiert (mit einer crontab-ähnlichen Konfiguration).
Konfigurieren Sie Ihr Repository so, dass es einen Post-Commit-Hook hat, 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 der Heraufstufung des aktuellen "Kopfes" des Quellcodes zu einem Tag, um einen Snapshot eines Builds zu erstellen. Auf diese Weise können Sie Jenkins buid # 32 als SVN-Tag / tags / build-32 (oder ähnliches) bezeichnen.
quelle
Sie benötigen nur ein Plugin, nämlich das Subversion-Plugin.
Gehen Sie dann einfach zu Jenkins → Jobname → Build-Trigger- Abschnitt → (i) Trigger-Build remote (dh aus Skripten). Authentifizierungstoken: Token-Name
Wechseln Sie in das Hooks-Verzeichnis des SVN-Servers und führen Sie nach dem Auslösen die folgenden Befehle aus:
cp post-commit.tmpl post-commit
chmod 777 post-commit
chown -R www-data:www-data post-commit
vi post-commit
Hinweis: Alle Zeilen sollten kommentiert werden. Fügen Sie zuletzt die folgende Zeile hinzu
Syntax (für Linux-Benutzer):
Syntax (für Windows-Benutzer):
quelle
Ich habe ein Tool mit Python mit etwas Bash erstellt, um einen Jenkins-Build auszulösen. Grundsätzlich müssen Sie diese beiden Werte aus dem Post-Commit erfassen, wenn ein Commit den SVN-Server erreicht:
Dann verwenden Sie "svnlook dirs-changed $ 1 -r $ 2", um den Pfad zu erhalten, der gerade festgeschrieben wurde. Anschließend können Sie überprüfen, welches Repository Sie erstellen möchten. Stellen Sie sich vor, Sie haben hunderttausend Projekte. Sie können nicht das gesamte Repository überprüfen, oder?
Sie können mein Skript von GitHub aus überprüfen .
quelle
Sie können einen Post-Commit-Hook verwenden.
Legen Sie das Post-Commit-Hook-Skript in den
hooks
Ordner, erstellen Sie einwget_folder
in Ihrem Laufwerk C: \ und legen Sie diewget.exe
Datei in diesem Ordner ab. Fügen Sie der aufgerufenen Datei den folgenden Code hinzupost-commit.bat
Dabei ist Test = Name des Jobs
echo
wird verwendet, um den Wert anzuzeigen, und Sie könnenexit 2
am Ende auch hinzufügen, um zu erfahren, ob das Problem vorliegt und ob das Hook-Skript nach dem Festschreiben ausgeführt wird oder nicht.quelle