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

Vorbereiten des Jenkins-Controllers

  1. Navigieren Sie zu Ihrem Jenkins-Portal.

  2. Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.

  3. Wählen Sie unter System Configuration (Systemkonfiguration) die Option Configure System (System konfigurieren) aus.

  4. Vergewissern Sie sich, dass die Jenkins-URL auf die HTTP-Adresse Ihrer Jenkins-Installation festgelegt ist: http://<your_host>.<your_domain>:8080/.

  5. Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.

  6. Wählen Sie unter Security (Sicherheit) die Option Configure Global Security (Globale Sicherheit konfigurieren) aus.

  7. Geben Sie unter Agents den Port Fixed (Fest) an, und geben Sie die entsprechende Portnummer für Ihre Umgebung ein.

    Konfigurationsbeispiel: Configure TCP port

  8. Wählen Sie Speichern aus.

Erstellen eines Jenkins-Arbeits-Agents

  1. Navigieren Sie zu Ihrem Jenkins-Portal.

  2. Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.

  3. Wählen Sie unter System Configuration (Systemkonfiguration) die Option Manage Nodes and Clouds (Knoten und Clouds verwalten) aus.

  4. Wählen Sie im Menü die Option New Node (Neuer Knoten) aus.

  5. Geben Sie unter Node Name (Knotenname) einen Wert ein.

  6. Wählen Sie Permanent Agent (Dauerhafter Agent) aus.

  7. Wählen Sie OK aus.

  8. Geben Sie einen Wert für Remote root directory (Remotestammverzeichnis)ein. Beispiel: /home/jenkins/work

  9. 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 von linux.

  10. Legen Sie Launch method (Startmethode) auf Launch agent by connecting to the master (Agent durch Verbindungsherstellung mit dem Master starten) fest.

  11. Vergewissern Sie sich, dass alle erforderlichen Felder ausgefüllt sind:

    Example Jenkins agent configuration

  12. Wählen Sie Speichern aus.

  13. 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.

    The build-agent secret is displays after its successful creation.

Erstellen der Azure Container Instances-Instanz mithilfe der CLI

  1. Verwenden Sie az group create, um eine Azure-Ressourcengruppe zu erstellen.

    az group create --name my-resourcegroup --location westus
    
  2. 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.

  3. Kehren Sie zurück zum Jenkins-Dashboard, und überprüfen Sie den Agent-Status.

    Agent has started successfully

    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.

  1. 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.

    Box for the name of the build job, and list of project types

  2. 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.

  3. 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.

  4. 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.

  1. 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:

  2. Klicken Sie unter Buildverlauf auf #1.

  3. Wählen Sie Konsolenausgabe aus, um die Ausgabe der Builds anzuzeigen.

Nächste Schritte