Welche Plugins und Plugin-Funktionen muss ich einstellen, um meinen Jenkins-Job dazu zu bringen, einen Build zu erstellen, wann immer Code für ein SVN-Projekt verwendet wird? Ich habe sowohl das Standard-SVN-Plugin als auch das SVN-Tagging-Plugin installiert, sehe aber keine neuen Features, die eine Trigger-Konfiguration erlauben.Jenkins CI: Wie Builds auf SVN-Commit ausgelöst werden
Antwort
Es gibt zwei Möglichkeiten, um dies zu realisieren: zunächst aufgrund seiner einfachen Implementierung
ich die erste Option zu empfehlen. Sobald Sie in Ihren Build-Prozessen gereift sind, wechseln Sie zu der zweiten.
Überprüfen Sie das Repository, um festzustellen, ob Änderungen aufgetreten sind. Dies könnte einen Commit "überspringen", wenn zwei Commits innerhalb desselben Abfrageintervalls eingehen. Description of how to do so here, notieren Sie sich den vierten Screenshot, bei dem Sie in dem Job einen "Build-Trigger" basierend auf dem Polling des Repositorys konfigurieren (mit einer Crontab-ähnlichen Konfiguration).
Konfigurieren Sie Ihr Repository für einen Post-Commit-Hook, der Jenkins benachrichtigt, dass ein Build gestartet werden muss. Description of how to do so here, im Abschnitt „post-commit Haken“
Die SVN Tag-Funktion ist nicht Teil der Abfrage ist, ist es Teil des aktuellen „Kopf“ des Quellcodes zu einem Tag zu fördern, eine Momentaufnahme bauen. Auf diese Weise können Sie sich auf Jenkins # 32 als SVN-Tag/tags/build-32 (oder etwas Ähnliches) beziehen.
post-commit hooks rock. Schnellere Antwortzeiten und (im Maßstab) reduzieren das CI-System den Quell-Repo nicht mit Hunderten von Änderungsprotokollanforderungen. – EricMinick
@EricMinick Sie sind großartig, aber manchmal können sie den CI-Server schmelzen, wenn Sie in kurzer Zeit viele kleine Commits erhalten. Es sind alle Pferde für Kurse, und es ist schwer zu wissen, welche Methode günstig ist, ohne zu analysieren, wie Ihr Entwicklungsprozess derzeit funktioniert. –
@EdwinBuck: Weißt du, ob es eine Möglichkeit gibt, Jenkins so zu konfigurieren, dass nur selektive Commits erstellt werden? Ich werde erklären, ich habe eine TortoiseSVN und ein Jenkins-Projekt, das das Repository abfragt. Wenn ich jetzt wünsche, dass das Commit, das ich mache, Jenkins nicht auslösen sollte, gibt es einen Weg, das zu tun? –
Ich habe ein Tool mit Python mit einigen Bash, um einen Jenkins Build auslösen ausgelöst. Grundsätzlich müssen Sie diese zwei Werte von sammeln post-commit, wenn ein Treffer commit SVN-Server:
REPOS = "$ 1" REV = "$ 2"
Dann nutzen Sie „svnlook dirs-changed $ 1 -R 2 $ "um den Weg zu bekommen, der gerade begangen wurde. Dann können Sie überprüfen, welches Repository Sie erstellen möchten. Stellen Sie sich vor, Sie haben hundertausend Projekte. Sie können das gesamte Repository nicht überprüfen?
Sie können mein Skript Check-out von github
ich dieses Skript geschrieben, da ich Python nur lernen, und jetzt mit noch. Ich hatte vor, es zu verbessern, aber neue Projekte und Dinge halten mich immer fest. Jeder hat gute Kenntnisse von Python definitiv besser eingebautes Werkzeug. Wenn jemand teilen könnte, würde es gerne haben.
Sie können einen Post-Commit-Hook verwenden.
Setzen Sie das Post-Commit-Hook-Skript in den Ordner hooks
, erstellen Sie wget_folder
in Ihrem Laufwerk C: \, und legen Sie die Datei wget.exe
in diesen Ordner. Fügen Sie den folgenden Code in der Datei namens post-commit.bat
SET REPOS=%1
SET REV=%2
FOR /f "tokens=*" %%a IN (
'svnlook uuid %REPOS%'
) DO (
SET UUID=%%a
)
FOR /f "tokens=*" %%b IN (
'svnlook changed --revision %REV% %REPOS%'
) DO (
SET POST=%%b
)
echo %REPOS% ----- 1>&2
echo %REV% -- 1>&2
echo %UUID% --1>&2
echo %POST% --1>&2
C:\wget_folder\wget^
--header="Content-Type:text/plain"^
--post-data="%POST%"^
--output-document="-"^
--timeout=2^
http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%
wo Test = Name des Jobs
echo
verwendet wird, um den Wert zu sehen, und Sie können auch exit 2
am Ende hinzufügen, über das Thema zu wissen, und ob das Post-Commit-Hook-Skript ausgeführt wird oder nicht.
Würdest du GitHub anstelle von SVN empfehlen, um die Builds auszulösen? Eigentlich kenne ich nur SVN, aber ich frage mich, warum so viele Leute GitHub stattdessen verwenden.
Sie benötigen nur ein Plugin, das Subversion-Plugin ist. dann einfach, geht in jenkins-> job_name-> Trigger Abschnitt Erstellen -> (i) Trigger Ferne aufbauen (dh von Skripten) Token-Authentifizierung: -Token_name
geht dann Haken SVN-Server-Verzeichnis dann nach Brand unter Befehle: - (a) cp post-commit.tmpl nach Festschreibung (b) chmod 777 nach Festschreibung (c) chown -R www-Daten: www-data post-commit (d) vi post- commit hinweis: Alle Zeilen sollten kommentiert werden hinzufügen unter der Zeile zuletzt synta x (für Linux Benutzer): -/usr/bin/curl http://username:[email protected]:8081/job/job_name/build?token=Token_name
Syntax (für Windows User): - C:/curl_for_win/curl http://username:[email protected]:8081/job/job_name/build?token=Token_name
- 1. Jenkins CI-Workflow-Implementierung
- 2. Jenkins Delivery Pipeline Plugin und parametrisierte Builds
- 3. jenkins - Auslösen eines Builds basierend auf git commit
- 4. Deaktivieren Sie Jenkins gleichzeitige Builds
- 5. Konfigurieren von Jenkins für CI
- 6. Jenkins CI: 'NumberFormatException: leere Zeichenfolge'
- 7. Wie bekomme ich Builds Abzeichen Bild von Gitlab CI
- 8. Get SubProject Builds über Jenkins API
- 9. Wie man Builds von GitLab CI in Artifactory veröffentlicht?
- 10. Jenkins Rollenbasierte Strategie für Agent-Builds
- 11. Kann Jenkins Builds mit unterschiedlichen Zeitzonen erstellen?
- 12. Programmgesteuert Zugriff auf Kinder Builds in Jenkins Build-Fluss
- 13. In Hudson oder Jenkins, wie können Sie gelöschte Builds wiederherstellen?
- 14. Verbinden Sie Karma Runner mit Jenkins CI
- 15. Jenkins Liste der Builds und Parameter
- 16. Jenkins Github-Plugin: wie Job nur durch Push-to-Trigger ausgelöst werden?
- 17. Jenkins Builds sind „Optionscode: 65002“ gesperrt
- 18. Bearbeiten von Builds in Jenkins durch curl
- 19. Unterstützt jenkins CI PHP App Engine-Anwendungen?
- 20. So konfigurieren Sie jenkins Build Pipeline manuell ausgelöst werden
- 21. Kann Jenkins nur aus einem bestimmten Zweig ausgelöst werden?
- 22. Wie kann ich Sicherheitsüberprüfungen für Jenkins-Pipeline-Builds deaktivieren?
- 23. Wie HTML5 Validierungsfehler auf Knopfdruck ausgelöst werden
- 24. Gibt es ein stabiles Plugin für Jenkins zum Ausführen von Builds auf VMs?
- 25. Auslösen von Builds abhängiger Projekte in Travis CI
- 26. Wie build_id des letzten erfolgreichen Builds in Jenkins abgerufen werden kann?
- 27. Ausführen von Bower in einer CI-Umgebung, wie Jenkins
- 28. Jenkins Pipeline - wie man Protokolle von parallelen Builds bekommt
- 29. Wie Code Climate Test Abdeckung für Jenkins CI
- 30. Wie konfiguriere ich eine Jenkins-Pipeline, die durch Abfragen von SubVersion ausgelöst werden soll?
mögliche Duplikat [Trigger Hudson bauen, wenn Svn commit] (http : //stackoverflow.com/questions/4792466/trigger-hudson-build-when-svn-commit) – highlycaffeinated