+49 521 96686-0 info@teuto.net

GitLab Runner für Windows Headless

Oder wie Windows und Kubernetes mit Hilfe vom GitLab Runner die „besten Freunde“ wurden?

  

Heute berichtet uns Florian (Cloud Consultant bei teuto.net), in einem Tutorial von seinen Erfahrungen, wie man Windows Applikationen in Docker Containern bündeln kann.

Auch die Welt um Microsoft Windows hat Bekanntschaft mit Docker und mittlerweile auch Kubernetes gemacht. Um Windows-Applikationen in entsprechenden Docker Containern bündeln zu können, benötigen wir einen Windows Host. Sinnvollerweise integrieren wir auch unsere Windows-Applikationen mit GitLab-CI. Hierfür benötigen wir den GitLab Runner auf unserem Windows Host und verbinden diesen mit unserem GitLab.

Voraussetzungen

Im Rahmen dieses Tutorials benötigen wir einen Windows Host mit installiertem OpenSSH, um unsere Kommandozeilen- bzw. PowerShell-Befehle an den Host absetzen zu können. Desweiteren nutzen wir scoop (https://scoop.sh/), um zusätzliche Software wie Git zu installieren. Weiterhin benötigen wir Admin-Zugang für die GitLab-Instanz, die wir mit dem GitLab Runner verbinden möchten. Zu Beginn verbinden wir uns via SSH mit unserem Windows Host und richten für GitLab-Runner ein entsprechendes Verzeichnis ein.

Prerequisites installieren

scoop ist ein Paket-Manager, mit dem wir eine Vielzahl schöner Tools installieren können. Wir benötigen beispielsweise Git.

GitLab Runner installieren

Üblicherweise kann die gitlab-runner.exe über den PowerShell Command Invoke-WebRequest heruntergeladen werden. Dieser ist jedoch unserer Erfahrung nach sehr langsam.

Schneller geht es, die Datei lokal herunterzuladen und dann per scp auf den Windows Host zu kopieren. Dazu laden wir den GitLab-Runner zunächst auf unsere lokale Maschine herunter: https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe

Nach dem folgenden Schema können wir die Datei per scp auf unseren Windows Host kopieren:

Befindet sich die heruntergeladene Datei nun unter C:\GitLab-Runner\gitlab-runner.exe installieren wir den Dienst.

Unter der URL https://<GitLab-URL>/admin/runners erhalten wir das Token, welches wir benötigen, um den Runner mit GitLab zu verbinden.

Nun ist der GitLab Runner registriert und unter https://<GitLab-URL>/admin/runners gelistet.

Debugging

Lassen wir an diesem Punkt eine Pipeline laufen, stellen wir fest, dass der Job während eines Git-Commands  in einen Timeout läuft. Hier ist es hilfreich ein Tiefgreifendes Debugging vorzunehmen. Zum einen können wir in der Datei C:\GitLab-Runner\config.toml unter unserem gewählten Runner die folgende Zeile ergänzen:

environment =  [„GIT_CURL_VERBOSE=1“, „GIT_TRACE=1“]

Desweiteren können wir den CI-Job in den Debug-Modus versetzen, was für die Produktionsreife jedoch unbedingt wieder abzuschalten ist.

Git konfigurieren

Der Grund dafür, dass der Runner, wie weiter oben erwähnt, in einen Timeout läuft, ist eine Konfiguration in Git. Lassen wir uns die Git Konfiguration ausgeben:

Unter credential.helper benötigen wir statt helper-selector den Wert manager. Hierzu dienen die folgenden Befehle.

Zuletzt starten wir den GitLab-Runner Service und überzeugen uns von seinem Status. Jetzt ist unsere CI-Pipeline in der Lage Windows Container über den auf unserem Windows Host installierten GitLab Runner zu bauen.

Wir hoffen, Euch hat unser Tutorial gefallen und Ihr probiert es aus. Über euer Feedback freuen wir uns sehr.

Ihr möchtet noch mehr über Kubernetes und seine Begrifflichkeiten wissen, dann stöbert gern in unserer Wissensbasis oder besucht uns auf dem OWL Tech und Innovation Day am 26.09. in Paderborn.

Bis demnächst bei  „Kubernetes und ich“