Freigeben über


Lernprogramm: Bereitstellen von Azure App Service mit Jenkins und der Azure CLI

Von Bedeutung

Während viele Azure-Dienste über Jenkins-Plug-Ins verfügen, endete der Support für die meisten dieser Plug-Ins ab dem 29. Februar 2024. Azure CLI ist die derzeit empfohlene Methode zum Integrieren von Jenkins in Azure-Dienste. Weitere Informationen finden Sie im Artikel Jenkins-Plug-Ins für Azure.

Um eine Java-Web-App in Azure bereitzustellen, können Sie Azure CLI in einer Jenkins-Pipeline verwenden. In diesem Tutorial werden Sie die folgenden Aufgaben ausführen:

  • Erstellen einer Jenkins-VM
  • Konfigurieren von Jenkins
  • eine Web-App in Azure erstellen
  • Vorbereiten eines GitHub-Repositorys
  • Erstellen der Jenkins-Pipeline
  • Führen Sie die Pipeline aus und überprüfen Sie die Web-App

Voraussetzungen

  • Azure-Abonnement: Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Konfigurieren von Jenkins

Die folgenden Schritte zeigen, wie Sie den erforderlichen Java JDK und Maven auf dem Jenkins-Controller installieren:

  1. Melden Sie sich mit SSH bei Jenkins-Controller an.

  2. Laden Sie den Azul Zulu-Build von OpenJDK für Azure aus einem apt-get-Repository herunter, und installieren Sie es:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
    sudo apt-add-repository "deb http://repos.azul.com/azure-only/zulu/apt stable main"
    sudo apt-get -q update
    sudo apt-get -y install zulu-8-azure-jdk
    
  3. Führen Sie den folgenden Befehl aus, um Maven zu installieren:

    sudo apt-get install -y maven
    

Azure-Dienstprinzipal zu Jenkins-Anmeldeinformationen hinzufügen

Die folgenden Schritte zeigen, wie Sie Ihre Azure-Anmeldeinformationen angeben:

  1. Stellen Sie sicher, dass das Anmeldeinformationen-Plug-In installiert ist.

  2. Wählen Sie im Jenkins-Dashboard „Credentials -> System“> aus.

  3. Wählen Sie "Globale Anmeldeinformationen(uneingeschränkt)" aus.

  4. Wählen Sie "Anmeldeinformationen hinzufügen" aus, um einen Microsoft Azure-Dienstprinzipal hinzuzufügen. Stellen Sie sicher, dass die Art der Anmeldeinformationen Benutzername mit Kennwort ist, und geben Sie die folgenden Elemente ein:

    • Benutzername: Dienstprinzipal appId
    • Kennwort: Service Principal password
    • ID: Berechtigungsnachweis-ID (wie z. B. AzureServicePrincipal)

Erstellen eines Azure App Service für die Bereitstellung der Java-Web-App

Verwenden Sie az appservice plan create, um einen Azure App Service-Plan mit der KOSTENLOSEN Preisstufe zu erstellen.

az appservice plan create \
    --name <app_service_plan> \ 
    --resource-group <resource_group> \
    --sku FREE

Die wichtigsten Punkte:

  • Der Appservice-Plan definiert die physischen Ressourcen, die zum Hosten Ihrer Apps verwendet werden.
  • Alle Anwendungen, die einem Appservice-Plan zugewiesen sind, teilen diese Ressourcen.
  • Mit Appservice-Plänen können Sie Kosten sparen, wenn Sie mehrere Apps hosten.

Erstellen einer Azure Web App

Verwenden Sie az webapp create , um eine Web-App-Definition im myAppServicePlan App Service-Plan zu erstellen.

az webapp create \
    --name <app_name> \ 
    --resource-group <resource_group> \
    --plan <app_service_plan>

Die wichtigsten Punkte:

  • Die Web-App-Definition bietet eine URL für den Zugriff auf Ihre Anwendung mit und konfiguriert mehrere Optionen für die Bereitstellung Ihres Codes in Azure.
  • Ersetzen Sie den <app_name> Platzhalter durch einen eindeutigen App-Namen.
  • Der App-Name ist Teil des Standarddomänennamens für die Web-App. Daher muss der Name in allen Apps in Azure eindeutig sein.
  • Sie können der Web-App einen benutzerdefinierten Domänennameneintrag zuordnen, bevor Sie ihn Ihren Benutzern zur Verfügung stellen.

Konfigurieren von Java

Verwenden Sie az appservice web config update , um die Java-Laufzeitkonfiguration für die App einzurichten:

az webapp config set \ 
    --name <app_name> \
    --resource-group <resource_group> \ 
    --java-version 1.8 \ 
    --java-container Tomcat \
    --java-container-version 8.0

Vorbereiten eines GitHub-Repositorys

  1. Öffnen Sie die einfache Java Web App für Azure-Repository .

  2. Wählen Sie die Fork-Schaltfläche aus, um das Repository in Ihr eigenes GitHub-Konto zu forken.

  3. Öffnen Sie die Jenkinsfile-Datei , indem Sie auf den Dateinamen klicken.

  4. Wählen Sie das Bleistiftsymbol aus, um die Datei zu bearbeiten.

  5. Aktualisieren Sie die Abonnement-ID und die Mandanten-ID.

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. Aktualisieren Sie die Ressourcengruppe und den Namen Ihrer Web-App in Zeile 22 bzw. 23.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Aktualisieren Sie die Anmeldeinformations-ID in Ihrer Jenkins-Instanz

    withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
    

Erstellen der Jenkins-Pipeline

Gehen Sie wie folgt vor, um eine Jenkins-Pipeline zu erstellen:

  1. Öffnen Sie Jenkins in einem Webbrowser.

  2. Wählen Sie Neues Element aus.

  3. Geben Sie einen Namen für den Auftrag ein.

  4. Wählen Sie Pipeline aus.

  5. Wählen Sie OK aus.

  6. Wählen Sie Pipeline aus.

  7. Wählen Sie für DefinitionPipelineskript aus SCM aus.

  8. Wählen Sie für SCMGit aus.

  9. Geben Sie die GitHub-URL für Ihr geforktes Repository ein: https:\<forked_repo\>.git

  10. Wählen Sie "Speichern" aus.

Teste deine Pipeline

  1. Gehen Sie zu der von Ihnen erstellten Pipeline

  2. Jetzt Builden

  3. Wählen Sie nach Abschluss des Builds die Konsolenausgabe aus, um Builddetails anzuzeigen.

Überprüfen Ihrer Web-App

Führen Sie die folgenden Schritte aus, um zu überprüfen, ob die WAR-Datei erfolgreich in Ihrer Web-App bereitgestellt wurde:

  1. Navigieren Sie zu der folgenden URL: http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. Es sollte Text ähnlich wie folgt angezeigt werden:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Navigieren Sie zur folgenden URL (ersetzen Sie <x> und <y> durch zwei zu addierende Werte): http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>.

    Beispiel für die Ausführung des Demo-Add-Ins

Bereitstellen auf Azure App Service unter Linux

Von App Service können Web-Apps für unterstützte Anwendungsstapel auch nativ unter Linux gehostet werden. Sie kann auch benutzerdefinierte Linux-Container (auch als Web App für Container bezeichnet) ausführen.)

Sie können das Skript so ändern, dass es in einem Azure App Service unter Linux bereitgestellt wird. Der App-Dienst unter Linux unterstützt Docker. So stellen Sie eine Dockerfile bereit, die Ihre Web-App mit Dienstlaufzeit in ein Docker-Image packt. Das Plug-In erstellt das Image, verschiebt es an eine Docker-Registrierung und stellt das Image in Ihrer Web-App bereit.

  1. Verweisen Sie auf Migrieren von benutzerdefinierter Software zu Azure App Service mithilfe eines benutzerdefinierten Containers, um zu erfahren, wie man einen Azure App Service unter Linux und eine Azure-Containerregistrierung erstellt.

        az group create --name myResourceGroup2 --location westus2
        az acr create --name myACRName --resource-group myResourceGroup2 --sku Basic --admin-enabled true
        az appservice plan create --name myAppServicePlan --resource-group  myResourceGroup2 --is-linux
        az webapp create --resource-group myResourceGroup2 --plan myAppServicePlan --name myApp --deployment-container-image-name myACRName.azurecr.io/calculator:latest
    
  2. Installieren Sie Docker auf Ihren Jenkins.

  3. Stellen Sie sicher, dass das Docker Pipeline-Plug-In installiert ist.

  4. Bearbeiten Sie die Datei Jenkinsfile2 im gleichen Simple Java Web App for Azure Repository, das Sie geforkt haben, wie folgt:

    1. Aktualisieren Sie die Abonnement-ID und die Mandanten-ID.

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. Aktualisieren Sie die Namen Ihrer Ressourcengruppe, Web-App und ACR (ersetzen Sie die Platzhalter durch Ihre Werte).

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Aktualisieren <azsrvprincipal\> in Ihre Anmelde-ID

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Erstellen Sie eine neue Jenkins-Pipeline, wie Sie es bei der Bereitstellung in einer Azure-Web-App unter Windows mit Jenkinsfile2 gemacht haben.

  6. Führen Sie Ihren neuen Auftrag aus.

  7. Führen Sie zum Überprüfen in Azure CLI den folgenden Befehl aus:

    az acr repository list -n <myRegistry> -o json
    

    Die Ergebnisse sollten ähnlich wie folgt angezeigt werden:

    [
    "calculator"
    ]
    
  8. Navigieren Sie zu http://<app_name>.azurewebsites.net/api/calculator/ping (ersetzen Sie den Platzhalter). Das Ergebnis sollte etwa wie folgt aussehen:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. Navigieren Sie zu http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y> (ersetzen Sie die Platzhalter). Die Werte, die Sie für x und y angeben, werden addiert und angezeigt.

Nächste Schritte