↓ Zum Hauptinhalt springen

Powershell + GitLab

·254 Wörter·2 min
Ing. Gerhard Sulzberger
Autor
Ing. Gerhard Sulzberger

Powershell + GitLab

Ursprünglich veröffentlicht auf LinkedIn am 2020-01-19.

In meinem letzten Artikel habe ich über die Powershell-DevOps-Pipeline geschrieben und dass ich gitlab-ce für dieses Projekt verwenden möchte. Heute habe ich also einige Dinge kombiniert, die mich in meinem Homelab interessieren. Starten wir gitlab-ce mit podman in einer CentOS 8.1 VM.

[administrator@podnode01 ~]$ sudo podman run --detach --hostname gitlab.test.vm --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.test.vm/'" --publish 443:443 --publish 80:80 --publish 222:22 --name gitlab gitlab/gitlab-ce:latest

Hier geht es los. Ich erstelle ein Git-Projekt auf meinem lokalen Rechner und habe das Repository an die gitlab-ce-Instanz gepusht.

Starten wir auch einen Windows 2019-Server im Labor und führen einen Powershell-Shell gitlab-runner darauf aus.

GitLab CE-Server mit Windows 2019-VM und PowerShell-Runner-Setup im Homelab

Okay, also habe ich den gitlab-ce-Server, den Powershell gitlab-runner mit dem Label “windows” und ein Git-Repository. Wie kann man diese kombinieren? Fügen Sie einfach eine .gitlab-ci.yml-Datei innerhalb des Git-Repositorys hinzu.

cat .gitlab-ci.yml
pages:
  stage: deploy
  tags:
  - windows
  script:
  # Führe PowerShell-Befehl aus
  - powershell -Command "Get-Date"
  # Führe PowerShell-Skript aus
  # - powershell -File copyFiles.ps1

Okay, machen wir einen Commit und einen Push, um zu sehen, ob dies einen "Build" auslöst. Ich weiß, dass "Get-Date" kein Befehl ist, der einen Build auslöst, aber anstelle von "Get-Date" können wir in Zukunft andere PowerShell-Skripte wie Pester verwenden.

![GitLab CI/CD-Pipeline führt PowerShell-Skript erfolgreich aus](/linkedin/powershell-gitlab/powershell-pipeline.png)

Das war nur ein POC. Aber es hat mich weniger als 1 Stunde gekostet, die Maschinen zu erstellen und diese zu kombinieren. Ich denke, das ist eine einfache Möglichkeit, eine Build-Pipeline auch für PowerShell-Module und -Skripte zu erstellen.

Der nächste Schritt wird sein, die Pester-Tests innerhalb der Build-Pipeline auszuführen.