Die Integration von Gitlab CE und Jenkins des armen Mannes

9

UPDATE Dieses Skript ist nun veraltet, da das Gitlab-Plugin in Jenkins nun den Build-Status zurück an Jenkins melden kann.

Ich versuche Gitlab CE 8.4 und Jenkins zu integrieren. Ich habe gelesen, dass Jenkins CI-Integration in Gitlab EE verfügbar ist, aber derzeit ist es keine Option.

Ich habe bereits Jenkins gitlab-Plugin und Web-Hooks eingerichtet und schiebe auf meine Repo-Trigger-Builds von Jenkins-Jobs. Diese Builds werden jedoch nicht in der Registerkarte "Builds" auf der jeweiligen Gitlab-Seite angezeigt. Wenn ich die Datei .gitlab-ci.yml in das Repository festlege, funktionieren Web-Hooks weiterhin, Jenkins-Jobs werden ausgeführt, aber die Seite 'Builds' zeigt, dass der Build festgefahren ist, da keine Runner definiert sind.

In der Tat habe ich keine Gitlab CI Läufer aufgestellt, da sie nicht mit Jenkins verwandt sind, soweit ich das verstehe.

Ich möchte meinen Jenkins-Job behalten, da dort einige nützliche Informationen veröffentlicht werden, und ich möchte auch seinen Status auf der Gitlab-Seite haben. Ich denke in diesem Zusammenhang an ein einfaches Skript für Gitlab CI-Runner, das die Konsolenausgabe eines Jenkins-Jobs erfassen und in Gitlab übersetzen würde. Etwas wie das Ausführen von wget oder curl, weil Jenkins eine API bereitstellt, um die Ausgabe des Jobs zu sehen.

Die Dokumentation über Gitlab CI und .gitlab-ci.yml ist jedoch begrenzt, ebenso Beispiele.

Wie könnte ich diese Jobdatei schreiben? Habe ich recht, wenn ich daran denke, dass Gitlab die Job-Ausgabe erhält?

    
wl2776 21.02.2016, 20:50
quelle

1 Antwort

4

Ja, Gitlab-CI druckt stdout eines Jobs und bezieht sich auf Exit-Codes.

Meine Lösung besteht aus installiertem Gitlab-CI-Runner und dem aus .gitlab-ci.yml aufgerufenen Python-Skript, das die Git-Commit-ID von CI_BUILD_REF Umgebungsvariable erhält, eine Verbindung zum Jenkins-Host herstellt, die entsprechende Build-Konsole findet und die Ausgabe liest urllib2.urlopen(...).readlines() , und druckt es auf stdout.

Es verwendet bySHA1 url, das vom Jenkins Git-Plugin bereitgestellt wird, um die Build-Konsole zu finden.

Das Skript sucht auch nach der Zeile, beginnend mit dem Wort Finished: und endet mit dem Exit-Code entsprechend dem folgenden Wort: 0 wenn es SUCCESS ist, und 1 wenn FAILURE oder UNSTABLE .

Skripttext:

%Vor%

Und zusätzlich .gitlab-ci.yml :

%Vor%

Die Nachteile liegen auf der Hand: Durch Drücken der Abbrechen-Taste wird die Übersetzung abgebrochen, nicht der Jenkins-Job, keine klickbaren Links zur Jenkins-Jobseite.

Zumindest informiert es über Jenkins Jobstatus.

AKTUALISIEREN Dieses Skript autorisiert Jenkins nicht, es setzt entspannte Sicherheitseinstellung voraus, wenn jeder die Jobausgabe sehen kann.

UPDATE2 . Das Jenkins-Gitlab-Plugin kann jetzt den Build-Status zurück an Gitlab melden, wodurch dieses Skript obsolet wird.

    
wl2776 25.02.2016, 08:43
quelle

Tags und Links