Tutorial: Verwenden von Azure Container Instances 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: Falls 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.
Wählen Sie Speichern.
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
Fügen Sie eine Bezeichnung (Bezeichnungen werden verwendet, um mehrere Agents in einer logischen Gruppe zu gruppieren. Ein Beispiel für eine Bezeichnung zum Gruppieren Ihrer Linux-Agents wäre
linux
.) mit dem Wertlinux
hinzu.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.
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.
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. Sobald mit der Ausführung des Auftrags begonnen wird, wird ein Auftragsstatus angezeigt.
Klicken Sie unter Buildverlauf auf #1.
Wählen Sie Konsolenausgabe aus, um die Ausgabe der Builds anzuzeigen.