arcplan Enterprise Versionierung mit SVN – Teil 3/3

Jenkins ist ein Open Source Continuous Integration Server der zusammen mit SVN, aber auch anderen Versionierungstools arbeiten kann. So können wir ein Nightly Build starten, damit man immer die aktuelle Version hat. Zusätzlich kann man, was vorallem während der Entwicklung von Vorteil ist, einen Build starten, nach dem man einen Commit ausgeführt hat. Wir lösen unseren Hook mit Curl aus, da der Hook so am leichtesten zu bedienen ist. Aber eins nach dem anderen.

Auf https://jenkins.io/ lädt man sich die Version von Jenkins für Windows herunter und installiert diese dann auf dem entsprechenden Server. Standardmäßig kann man Jenkins dann nach der Installation im Webbrowser seiner Wahl über localhost:8080 aufrufen. Auf der Startseite findet man, nachdem diese eingerichtet wurden, alle Jobs.

Anlegen eines neuen Jobs

Legen wir einen neuen Job an. Da wir ein arcplan Enterprise Projekt haben, wählen wir ein „Free Style“ Softwareprojekt aus und geben ihm einen Namen. Jetzt können wir den Job definieren. Im Reiter Source-Code-Management (SCM) wählen wir Subversion aus und geben zunächst die Repository URL an. Am besten legt man im SVN Server einen User für Jenkins an, da dieser als SVN User betrachtet werden kann und fügt dann seine Credentials hinzu. Der Rest kann so stehen bleiben. Der nächste Punkt ist der Buildauslöser.

  • Build von außerhalb starten

Wenn wir später unseren Hook verwenden möchten, geben wir hier am besten einen beliebigen Namen oder Zeichenreihenfolge an.

  • Build zeigesteuert starten

In der Hilfe steht ausführlich wie man seinen Build definieren kann, damit er zum Wunschzeitpunkt läuft.
H 23 * * 1-6 steht z.B. für 23 Uhr an jedem Tag des Monats auf Montag (1) bis Samstag (6) eingeschränkt

Der zweite und vermutlich interessanteste Punkt ist das Buildverfahren. Dort können wir eine Windows Batch-Datei ausführen, um z.B. eine Versionsnummer oder einen Changelog in eine Textdatei zu schreiben und den Build zu zippen.
Zum Zippen verwenden wir 7-Zip. Da SVN immer ein Projektarchiv mit sich führt, von nicht unerheblicher Größe, und dieses im gezippten Build nicht vorhanden sein muss, kann es dafür natürlich excluded werden.

Der Befehl zum zippen sieht bspw. so aus:

„c:\Program Files\7-Zip\7z.exe“ u -xr!?svn\ name-und-ort-des-zip-Archives-zip name-des-files-welches-gezippt-werden-soll

  • u fügt nur die geänderten Dateien hinzu
  • -xr!?svn\ geht rekursiv durch den kompletten Ordner und excluded alle Dateien die sich darin befinden. Das ? interpretiert den . des Projektarchtivs .svn

In den Post-Build-Aktionen kann z.B. eine E-Mail getriggert werden, wenn der Build fehlschlägt.

Nach dem alles konfiguriert ist, kann man den Job speichern und den Build testweise einmal laufen lassen.
Falls der Build fehlschlägt kann man mit Hilfe der integrierten Konsole auf Fehlersuche gehen. Die Konsolenausgabe ist hierbei sehr hilfreich und die Fehlermeldungen sehr ausführlich.

Curl Installation

Die Curl Installation ist denkbar einfach. Auf https://curl.haxx.se/download.html lädt man sich den entsprechenden Zip File herunter. Die richtige Zip für Windows findet man fast ganz unten auf der Seite. capture20160617095626337 Wir haben z.B. die Win64 x86_64 7zip 7.49.1 binary von Viktor Szakáts genommen. Auf dem Server selber legt man sich nun auf C:\ einen Ordner curl an und fügt die entzippten Inhalte dort ein. Zum Schluss muss noch die Umgebungsvariable angepasst werden. Einfach bei PATH hinten C:\curl\bin anfügen.

Hooks

Hooks sind dafür gedacht Aktionen auszuführen, wenn mit dem Repository etwas passiert. Jedes Repository hat seine eigenen Hooks, wie post-commit, post-lock, pre-commit,…
In unserem Beispiel wollen wir jedes Mal, wenn man einen Commit ausgeführt hat einen neuen Build erstellen. Unsere Wahl fällt auf den post-commit Hook. Da curl nun ebenfalls auf unserem Server existiert reicht uns eine Zeile aus, die ungefähr so aussieht:

C:\curl\bin\curl http://localhost:8080/job/name-des-jenkin-elements/build?token=eigenesToken

Über das Token, welchem wir vorhin in Jenkins denselben Namen gegeben haben, wird beim Commit der Job angestoßen.

Wir hoffen, wir konnten einen Überblick über die Verwendung von SVN und Jenkins mit arcplan Enterprise verschaffen und freuen uns auf Anmerkungen und Kritik.

Cheers

Christian Brenner & Manuel Teufel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Captcha * Time limit is exhausted. Please reload CAPTCHA.