Commit Datei von Jenkins workspace zu SVN
Habe ich ein gespeichertes Projekt in Subversion-repository und kompiliert es mit Jenkins. Wenn ich das build, Jenkins zieht project into workspace-Verzeichnis. Ich brauche verpflichten, eine geänderte Datei von Jenkins workspace in Subversion.
Wie kann ich es machen???
Danke für die Antworten...
Als Teil Ihrer Arbeit, können Sie ausführen ein (bash -) script, das ausgeführt werden könnte
svn commit <yourfile>
.InformationsquelleAutor h0nzan | 2015-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie uns ein paar mehr details? Was genau ist diese Datei und warum braucht es zu sein, sich als Teil von Ihr Jenkins-build? Was baut Ihr (Java? C++? .NET?) und wie baust du es?
Normal, man sollte das nicht alles unter Versionskontrolle außer Quelle - Dateien. Das ist, wenn Sie es bauen können, sollten Sie nicht setzen Sie es in die Versionskontrolle. Eine Menge Leute wie sich Ihr gebaut-code in Ihre version control system, aber dies ist in der Regel ein großer Fehler. Binär-Dateien sind viel größer und selten diff. Dies führt zu einem source-repository, das 90% kompilierten code-fast alle davon überflüssig. Problematisch ist dies vor allem mit der Subversion, die nicht (leicht) entfernen veralteter code.
Jenkins hat eine Funktion, mit der Sie Archiv deine Dateien für den einfachen Zugriff. Wir nutzen diese die ganze Zeit. Wir bauen unser code, und das Programm ist verfügbar in Jenkins für downloads. Noch besser, Jenkins löschen älteren builds (Sie können die letzten X-builds oder speichern nur baut, die jünger als X Tage). Und wenn Sie ein release candidate erstellen, können Sie lock , zu bauen, um zu verhindern, dass es gelöscht wird.
Immer noch, wenn Sie darauf bestehen, dies zu tun, gibt es mehrere Dinge, die Sie tun können, und Dinge, die Sie achten müssen:
Wenn Sie haben Jenkins setup automatisch erstellen jedes ändern, und Sie verpflichten sich, eine Veränderung in Ihrem version control system, Jenkins sehen, dass, und starten Sie ein neues bauen. Dann, Jenkins speichert die änderung, sieht den ändern, und tut das andere bauen. Stellen Sie sicher, schließen Sie die Dateien oder Verzeichnisse, die von Jenkins' Aspekt, wenn es tun sollten, eine zu bauen. Sie können dies angeben, wenn Sie geben Sie die URL der Kasse.
Anders als die meisten Versionskontrollsysteme Subversion wurde als client-unabhängig. Es gibt eine tatsächliche API für clients. Die standard-Subversion-Kommandozeilen-client ist nicht erforderlich Jenkins, so stellen Sie sicher, dass es installiert ist. Stellen Sie sicher, dass Sie einen client installieren kompatibel mit dem Jenkins gebaut in SVNKit client. Dies gilt insbesondere, seit Subversion 1.6, 1.7 und 1.8 alle nehmen Sie einen anderen client-format.
Können Sie mehrere build-Schritte zu dem build in Jenkins. Fügen Sie einfach ein neues shell-Skript oder batch-Skript Schritt, und fügen Sie in einem
svn commit -m "comment of some sort"
Schritt. Es ist ziemlich einfach zu tun ist, nachdem Sie gekümmert haben, die ersten zwei Punkte. Aber, bitte überlegen Sie genau, warum Sie dies tun.Wie ich schon sagte, von 99,9999% der Zeit, Sie sollten nicht mit Jenkins zu verpflichten, Veränderungen, die Sie gebaut. Ich bin mir sicher, dass 0.0001% Grund vorliegt irgendwo, aber ich habe es nie gesehen. Wenn Sie wollen gebaut Dateien allgemein zugänglich für Ihre anderen Projekte verwenden Jenkin ' s Fähigkeit, Archiv gebaut-Dateien.
Wenn ein Produkt, das Jenkins baut benötigt ein anderes build verwenden, können Sie die Copy Artifact Plugin kopieren ein build-Artefakt auf eine andere Stelle, und dann Feuer aus, dass job. Noch besser, verwenden Sie ein release-repository-system. In Java können Sie mit einem Maven-release-repository wie Nexus oder Artifactory. Nutzen und bereitstellen der Artefakte auf diese repository, können Sie mit Efeu oder Maven oder Gradle. Wenn Sie Gebäude .NET, Blick auf Nuget.
Es gibt keinen Grund, zu überprüfen, in irgendetwas in diesem Fall. Sie haben eine Datei, die enthält einen template-string, wird ersetzt mit einigen Versionsnummer. In Subversion sind, können Sie die Subversion-Revisionsnummer. Noch besser, verwenden wir den Jenkins-job-Namen und die build-Nummer, so können wir gehen zurück zu den Jenkins-build, das zeigt uns Dinge, wie Prüfung der Daten, und hilft uns, die Spuren der Geschichte. Ansonsten ist alles, was Sie tun, ist die Schaffung von tausenden von Subversion-Revisionen enthalten absolut keine nützlich Geschichte Informationen. Sie tun einem
svn log
, und 50% der aufgeführten änderungen sind aufgrund der zu bauen.Ich bin sicherlich nicht vor der Begehung mit jedem CI-build. Klar, wir benutzen unterschiedliche Begriffe, release bauen != bauen. In dem Fall, den ich zu beschreiben, es ist eine öffentliche "marketing" Versionsnummer erhöht sich mit jeder release erstellen.
InformationsquelleAutor David W.
Bitte haben Sie einen Blick auf diese Antwort: Jenkins svn commit post-build
Sollte es möglich sein, zu verpflichten, mit einem neuen build-Schritt (oder ein post-build-Schritt).
Aber Vorsicht mit der SVN-layout des Jenkins workspace. Das subversion-plugin ist mit dem SVNKit Umgang mit der SVN-Befehle. In Ihrem Arbeitsbereich wird vielleicht die SVN-layout 1.6.
Wenn der SVN-client ist neu auf Ihrem Rechner, Ihrem SVN commit wird mit dem folgenden Fehler fehl:
org.apache.subversion.javahl.ClientException: Die Arbeitskopie aktualisiert werden muss
svn: Working copy " C:.... ist zu alt (format 10, erstellt von Subversion 1.6)
InformationsquelleAutor Bruno Lavit
Könnte man gezielt nutzen:
injizieren Passwort in
Build Environment
dieser Befehl fügt Kennwörter zu dem build als UmgebungsvariablenWatch out: das Kennwort ist sichtbar in der job-trigger-batch.
InformationsquelleAutor Ato