• info@noobygames.de

MonatsarchivDezember 2019

jenkins-working

Azure Dev Ops & Jenkins

Wer schon mal versucht hat Azure Devops & Jenkins miteinander spielen zu lassen, der ist ggf. auch an stumpfe Grenzen geraten.
Du denkst nun, haha "Was für ein Noob, das geht doch voll easy?!" Nuja, pass mal auf.

Das größte Problem bestand darin, dass unsere Jenkins Projekte SSH Connections für git konfiguriert hatten. Warum ist das ein Problem?
Darauf gehe ich etwas näher ein.

In Azure Dev Ops kann man relativ einfach Service Hooks anlegen, um alles mögliche triggern zu lassen. Es war natürlich naheliegend einfach eine Service-Hook zu nehmen, da es dafür ein Jenkins Template gibt.

Okay also eine Service-Hook angelegt und mal ausprobiert.
Nachfolgend ein Beispiel Request:

https://jenkins.some.stuff/git/notifyCommit?url=https:%2F%2Fdev.azure.com%2Ffoo%2Ffoo%2F_git%2Ffoo-repo&sha1=54c5dff4df7123c430afedbde1f230d692029e2f&branches=master

Jenkins Rage over 9000

Sieht doch gar nicht schlecht aus, oder? Doch! Wenn ein Jenkins Projekt Konfiguriert ist eine SSH connection zu benutzen, dann wird mit diesem Request gar nichts getriggert, da das Repo nicht zugeordnet werden kann.

Lösung

Da ich zu faul war nun alle Jenkinsfiles, Dockerfiles und Co. noch einmal anzupassen habe ich mal eben schnell einen Reverse Proxy in go geschrieben, der so ein Request entgegen nimmt und die https url in eine ssh url umschreibt, die ursprünglichen Header wieder anhängt und das ganze zu Jenkins weiter leitet.

Azure Dev Ops denkt nun, es würde einen Push-Request an Jenkins schicken, als URL ist aber der Reverse Proxy hinterlegt.

Für diesen Service habe ich <100 Zeilen gebraucht, dank des echo-frameworks und resty und einem string replace. Es geht vermutlich in noch weniger Lines of Code.

Wenn ihr euch so was auch baut, müsst ihr bei der Entwicklung darauf achten die Service Hooks immer wieder zu reaktivieren, da diese sich nach 3 maligen Fail in folge selbst deaktivieren. Diese Erkenntnis hat mich sicher eine Stunde gekostet.

Die ganze Magie könnt ihr im folgenden Screenshot bewundern. Tatsächlich extrem einfach sowas mit go zu regeln <3

Die Magie
%d Bloggern gefällt das:

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklären Sie sich damit einverstanden.

Schließen