Drücke "Enter", um den Text zu überspringen.

Schlagwort: DevOps

Deploy multiple ARM templates to Azure using PowerShell and GitHub Actions

This is kind of an experiment. Usually, I produce all my content in German language, but to see if englisch content is of higher use for the community, I will give it a try…

In the last days, I dealt a lot with GitHub Actions to find out, how it can be used to deploy Azure ARM templates to the cloud. My last „evolution“ step now – I was working on this because of the very valuable hint of a collegue – is able to deploy ARM templates to all 4 available scope levels:

  • Tenant level
  • Management Group level
  • Subscription level
  • Resource Group level

And it also could be used, even when you don’t use GitHub Actions! But let’s start from the beginning…

Schreibe einen Kommentar...

Azure ARM Templates mit GitHub Actions deployen

Geht es um den Aufbau automatisierter CI/CD Pipelines für Azure, so denken die meisten wohl eher an Azure DevOps. Aber auch mit GitHub lässt sich so etwas erreichen – und zwar völlig kostenlos. Das Werkzeug dazu heißt GitHub Actions. Zu GitHub Actions selbst will ich hier gar nicht so viel schreiben – es gibt bereits einige Blogartikel und co. dazu. Ich verweise aber gerne auf mein Video, welches ich dazu gemacht habe:

Mein YouTube Video zu GitHub Actions

Nun kam von einem meiner geschätzten Kollegen zu Recht die Frage, wie man denn in dieser (ersten, im Video gezeigten) Variante mehrere ARM Templates bereitstellen kann. Und dazu möchte ich hier die passende Antwort liefern…

Schreibe einen Kommentar...

PowerShell Core und Jenkins – Continuous Integration für PowerShell auf Linux

In letzter Zeit beschäftige ich mich immer mal wieder mit DevOps-Themen. Eines davon ist Continuous Integration und das dafür gemachte Jenkins. Einige meiner Erfahrungen hierzu möchte ich gerne teilen.

Dieser Artikel beschäftigt sich mit PowerShell Core und Jenkins. In einem vorherigen Artikel habe ich in Kurzform erläutert, wie man Jenkins unter Debian Linux installiert. Das ist für diesen Artikel eine Art Voraussetzung.

Auch ohne PS Core kann Jenkins PowerShell-Code und –Skripte ausführen – allerdings braucht es dazu immer einen sogenannten “Build Slave” (also einen weiteren Jenkins-Knoten) mit Windows als Betriebssystem,

Mit der Verfügbarkeit von PowerShell Core für Linux ist es künftig nicht mehr zwingend nötig, einen Windows Buildslave zu verwenden, wenn man PowerShell benutzen möchte. Was leider NICHT funktioniert (zumindest mit Stand Heute), ist das PowerShell-Plugin für Jenkins. Dieses ruft den Code in einer Art und Weise auf, wie es nur unter Windows funktioniert. Selbst wenn man den dort verwendeten Aufruf “powershell.exe” mittels symbolic Link oder Alias auf pwsh mappt, wird es nicht funktionieren.

Ein möglicher Weg führt aber über den Einsatz eines Batch-Skriptes. Und das könnte so aussehen:

jenkins9
jenkins10

Mit Hilfe von Parametern kann später flexibler mit dem Build Job umgegangen werden (siehe weiter unten):

jenkins11

Der Einfachheit halber sollte der Parametername keine Leer- oder Sonderzeichen enthalten.

Für den eigentlichen Build (also die Aktionen, die durch den Job auszuführen sind), muss man hier nun auf “Shell ausführen” zurückgreifen. Der Menüpunkt “Windows PowerShell” wird nicht funktionieren (er steht auch nur zur Verfügung, wenn das Plugin bereits installiert ist).

jenkins12

Mein Aufruf für die Shell lautet hier beispielhaft:

pwsh -command „(Get-Variable -Name ${VariableName}).Value“

Mit ${PARAMETER} kann man auf den oben definierten Parameter zurückgreifen.

jenkins17

Anschließend kann man den Buildjob über “Bauen mit Parametern” aufrufen. Dabei kann man dann den Wert des/der Parameter definieren (oder, falls man Defaultwerte definiert hat, diese einfach beibehalten):

jenkins18

Anschließend kann man mit einem Klick auf den kleinen Pfeil neben dem Buildjob unten bei “Build-Verlauf” die “Konsolenausgabe” aufrufen:

jenkins19

Dort sieht man dann entweder den/die Fehler, falls welche aufgetreten sind, oder eben die Ausgabe des Jobs:

jenkins20

Schreibe einen Kommentar...

Jenkins auf Linux für Continuous Integration

In letzter Zeit beschäftige ich mich immer mal wieder mit DevOps-Themen. Eines davon ist Continuous Integration und das dafür gemachte Jenkins. Einige meiner Erfahrungen hierzu möchte ich gerne teilen.

In diesem Artikel möchte ich kurz beleuchten, wie man Jenkins auf Debian 9 “Stretch” installieren kann. Es gibt sicherlich einige andere Wege, aber dieser hier funktioniert sehr schnell und zuverlässig.

Als erstes braucht ihr natürlich eine Debian Maschine. Ich nutze dafür gerne Hyper-V oder Azure, aber jede andere Plattform wird ebenso funktionieren. Wichtig ist am Ende eigentlich nur, dass die Maschine Internetzugriff hat.

Als nächstes braucht man die passenden Keys und eine Quelle für APT:

1
2
wget -q -O - http://pkg.jenkins-ci.org/debian-stable/jenkins-ci.org.key | sudo apt-key add
echo "deb http://pkg.jenkins-ci.org/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list

Nach einem anschließenden “apt-get update” kann man nun Jenkins installieren:

1
2
3
sudo apt-get update
sudo apt-get install jenkins -y
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Der letzte Aufruf gibt das Initialpasswort aus, welches man anschließend für die Einrichtung benötigt.

Nun kann man unter

http://HOSTNAME:8080

den frisch installierten Jenkins aufrufen und einrichten:

jenkins1

Hier wird nun also der vorhin ausgelesene Key benötigt.

jenkins2

Bei den Plugins kann man im Zweifel erstmal mit den “suggested plugins” beginnen, aber ich bevorzuge es, einige nicht benötigte Plugins gar nicht erst zu installieren und wähle daher “Select plugins to install”. Meine konkrete Auswahl kann man in Teilen unten sehen:

jenkins3

Nun muss man noch ein Admin-Konto anlegen und dann kann es auch schon losgehen…

jenkins4

Schreibe einen Kommentar...