Lernprogramm: Verwenden von Azure-Containerinstanzen als Jenkins-Build-Agent
Wichtig
Viele Azure-Dienste verfügen über Jenkins-Plug-Ins. Einige dieser Plug-Ins werden ab dem 29. Februar 2024 nicht mehr unterstützt. Die Azure CLI ist die derzeit empfohlene Methode zur Integration von Jenkins in Azure-Dienste. Weitere Informationen finden Sie im Artikel Jenkins-Plug-Ins für Azure.
Mit Azure Container Instances (ACI) steht Ihnen eine bedarfsgesteuerte, burstfähige und isolierte Umgebung zum Ausführen von containerbasierten Workloads zur Verfügung. Aufgrund dieser Attribute ist ACI eine hervorragende Plattform für die Ausführung von Jenkins-Buildaufträgen in großem Umfang. In diesem Artikel erfahren Sie, wie Sie eine ACI-Instanz bereitstellen und als dauerhaften Build-Agent für einen Jenkins-Controller hinzufügen.
Weitere Informationen zu Azure Container Instances finden Sie unter Azure Container Instances.
Voraussetzungen
- Azure-Abonnement: Wenn Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Azure-Konto erstellen, bevor Sie beginnen.
- Jenkins-Server: Wenn Sie keinen Jenkins-Server installiert haben, erstellen Sie einen Jenkins-Server in Azure.
Vorbereiten des Jenkins-Controllers
Navigieren Sie zu Ihrem Jenkins-Portal.
Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.
Wählen Sie unter System Configuration (Systemkonfiguration) die Option Configure System (System konfigurieren) aus.
Vergewissern Sie sich, dass die Jenkins-URL auf die HTTP-Adresse Ihrer Jenkins-Installation festgelegt ist:
http://<your_host>.<your_domain>:8080/
.Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.
Wählen Sie unter Security (Sicherheit) die Option Configure Global Security (Globale Sicherheit konfigurieren) aus.
Geben Sie unter Agents den Port Fixed (Fest) an, und geben Sie die entsprechende Portnummer für Ihre Umgebung ein.
Konfigurationsbeispiel:
Wählen Sie Speichern aus.
Erstellen eines Jenkins-Arbeits-Agents
Navigieren Sie zu Ihrem Jenkins-Portal.
Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.
Wählen Sie unter System Configuration (Systemkonfiguration) die Option Manage Nodes and Clouds (Knoten und Clouds verwalten) aus.
Wählen Sie im Menü die Option New Node (Neuer Knoten) aus.
Geben Sie unter Node Name (Knotenname) einen Wert ein.
Wählen Sie Permanent Agent (Dauerhafter Agent) aus.
Wählen Sie OK aus.
Geben Sie einen Wert für Remote root directory (Remotestammverzeichnis)ein. Beispiel:
/home/jenkins/work
Hinzufügen einer Bezeichnung (Bezeichnungen werden verwendet, um mehrere Agents in einer logischen Gruppe zu gruppieren. Ein Beispiel für eine Bezeichnung wäre
linux
, Ihre Linux-Agents zu gruppieren.) mit dem Wert vonlinux
.Legen Sie Launch method (Startmethode) auf Launch agent by connecting to the master (Agent durch Verbindungsherstellung mit dem Master starten) fest.
Vergewissern Sie sich, dass alle erforderlichen Felder ausgefüllt sind:
Wählen Sie Speichern aus.
Auf der Seite mit dem Agent-Status sollten das Jenkins-Geheimnis (
JENKINS_SECRET
) und der Agent-Name (AGENT_NAME
) angezeigt werden. Der folgende Screenshot zeigt, wo Sie diese Werte finden. Beide Werte werden beim Erstellen der Azure Container Instances-Instanz benötigt.
Erstellen der Azure Container Instances-Instanz mithilfe der CLI
Verwenden Sie az group create, um eine Azure-Ressourcengruppe zu erstellen.
az group create --name my-resourcegroup --location westus
Verwenden Sie az container create , um eine Azure-Containerinstanz zu erstellen. Ersetzen Sie die Platzhalter durch die Werte, die Sie beim Erstellen des Arbeits-Agents erhalten haben.
az container create \ --name my-dock \ --resource-group my-resourcegroup \ --ip-address Public --image jenkins/inbound-agent:latest \ --os-type linux \ --ports 80 \ --command-line "jenkins-agent -url http://jenkinsserver:port <JENKINS_SECRET> <AGENT_NAME>"
Ersetzen Sie
http://jenkinsserver:port
,<JENKINS_SECRET>
und<AGENT_NAME>
durch die Informationen für Ihre Jenkins-Controller und -Agents. Nach dem Start des Containers wird von diesem automatisch eine Verbindung mit dem Jenkins-Controllerserver hergestellt.Kehren Sie zurück zum Jenkins-Dashboard, und überprüfen Sie den Agent-Status.
Hinweis
Jenkins-Agents stellen über den Port
5000
eine Verbindung mit dem Controller her. Stellen Sie sicher, dass an diesem Port eingehender Datenverkehr für den Jenkins-Controller zugelassen wird.
Erstellen eines Buildauftrags
Nun wird ein Jenkins-Buildauftrag erstellt, um Jenkins-Builds auf einer Azure-Containerinstanz zu veranschaulichen.
Klicken Sie auf Neues Element, geben Sie dem Buildprojekt einen Namen wie aci-demo, wählen Sie Freestyle project (Freestyleprojekt) aus, und klicken Sie dann auf OK.
Vergewissern Sie sich, dass unter General (Allgemein) die Option Restrict where this project can be run (Ausführungsort dieses Projekts beschränken) aktiviert ist. Geben Sie als Bezeichnungsausdruck linux ein. Mit dieser Konfiguration wird sichergestellt, dass dieser Buildauftrag in der ACI-Cloud ausgeführt wird.
Klicken Sie unter Build auf Buildschritt hinzufügen, und klicken Sie auf Execute Shell (Shell ausführen). Geben Sie den Befehl
echo "aci-demo"
ein.Wählen Sie Speichern aus.
Ausführen des Buildauftrags
Starten Sie einen Build manuell, um den Buildauftrag zu testen und sich mit Azure Container Instances vertraut zu machen.
Klicken Sie auf Build Now (Jetzt erstellen), um einen Buildauftrag zu starten. Nach dem Starten des Auftrags wird ein Status ähnlich der folgenden Abbildung angezeigt:
Klicken Sie unter Buildverlauf auf #1.
Wählen Sie Konsolenausgabe aus, um die Ausgabe der Builds anzuzeigen.