Självstudie: Distribuera till Azure App Service med Jenkins och Azure CLI

Viktigt!

Många Azure-tjänster har Jenkins-plugin-program. Vissa av dessa plugin-program kommer att vara utan stöd från och med den 29 februari 2024. Azure CLI är det för närvarande rekommenderade sättet att integrera Jenkins med Azure-tjänster. Mer information finns i artikeln Jenkins-plugin-program för Azure.

Om du vill distribuera en Java-webbapp till Azure kan du använda Azure CLI i en Jenkins-pipeline. I den här självstudien utför du följande uppgifter:

  • Skapa en virtuell dator i Jenkins
  • Konfigurera Jenkins
  • Skapa en webbapp i Azure
  • Förbereda en GitHub-lagringsplats
  • Skapa en Jenkins-pipeline
  • Köra pipelinen och verifiera webbappen

Förutsättningar

  • Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Konfigurera Jenkins

Följande steg visar hur du installerar java-JDK och Maven på Jenkins-styrenheten:

  1. Logga in på Jenkins-kontrollanten med hjälp av SSH.

  2. Ladda ned och installera Azul Zulu-versionen av OpenJDK för Azure från en apt-get-lagringsplats:

    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. Kör följande kommando för att installera Maven:

    sudo apt-get install -y maven
    

Lägga till Azure-tjänstens huvudnamn i en Jenkins-autentiseringsuppgift

Följande steg visar hur du anger dina Azure-autentiseringsuppgifter:

  1. Kontrollera att plugin-programmet Autentiseringsuppgifter är installerat.

  2. På Jenkins-instrumentpanelen väljer du Autentiseringsuppgifter –> System ->.

  3. Välj Globala autentiseringsuppgifter(obegränsad).

  4. Välj Lägg till autentiseringsuppgifter för att lägga till ett Huvudnamn för Microsoft Azure-tjänsten. Kontrollera att typen av autentiseringsuppgifter är Användarnamn med lösenord och ange följande:

    • Användarnamn: Tjänstens huvudnamn appId
    • Lösenord: Tjänstens huvudnamn password
    • ID: Identifierare för autentiseringsuppgifter (till exempel AzureServicePrincipal)

Skapa en Azure App Service för distribution av Java-webbappen

Använd az appservice plan create för att skapa en Azure App Service-plan med prisnivån KOSTNADSFRI :

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

Viktiga punkter:

  • App Service-planen definierar vilka fysiska resurser som används som värd för dina appar.
  • Alla program som tilldelats en apptjänstplan delar dessa resurser.
  • Med Appservice-planer kan du spara kostnader när du är värd för flera appar.

Skapa en Azure-webbapp

Använd az webapp create för att skapa en webbappsdefinition i myAppServicePlan App Service-planen.

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

Viktiga punkter:

  • Webbappsdefinitionen innehåller en URL för att få åtkomst till appen och konfigurerar flera alternativ för att distribuera koden till Azure.
  • <app_name> Ersätt platshållaren med ett unikt appnamn.
  • Appnamnet är en del av standarddomännamnet för webbappen. Därför måste namnet vara unikt för alla appar i Azure.
  • Du kan mappa en anpassad domännamnspost till webbappen innan du exponerar den för användarna.

Konfigurera Java

Använd az appservice web config update för att konfigurera Java-körningskonfigurationen för appen:

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

Förbereda en GitHub-lagringsplats

  1. Öppna lagringsplatsen Enkel Java-Webbapp för Azure.

  2. Välj knappen Förgrening för att förgrena lagringsplatsen till ditt eget GitHub-konto.

  3. Öppna Jenkinsfile-filen genom att klicka på filnamnet.

  4. Välj pennikonen för att redigera filen.

  5. Uppdatera prenumerations-ID och klient-ID.

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. Uppdatera resursgruppen och namnet på webbappen på rad 22 respektive 23.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Uppdatera autentiserings-ID:t i Jenkins-instansen

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

Skapa en Jenkins-pipeline

Gör följande för att skapa en Jenkins-pipeline:

  1. Öppna Jenkins i en webbläsare.

  2. Välj Nytt objekt.

  3. Ange ett namn för jobbet.

  4. Välj Pipeline.

  5. Välj OK.

  6. Välj Pipeline.

  7. För Definition väljer du Pipeline-skript från SCM.

  8. För SCM väljer du Git.

  9. Ange GitHub-URL:en för din förgrenade lagringsplats: https:\<forked_repo\>.git

  10. Välj Spara

Testa din pipeline

  1. Gå till pipelinen som du skapade

  2. Välj Skapa nu

  3. När bygget är klart väljer du Konsolutdata för att se bygginformation.

Verifiera din webbapp

Gör följande för att kontrollera att WAR-filen har distribuerats till webbappen:

  1. Bläddra till följande URL: http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. Du bör se text som liknar följande:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Bläddra till följande URL (ersätt x och y med två värden som ska summeras): http://< app_name.azurewebsites.net/api/calculator/add?x>=<x>&y=<y>.><><

    Example of running the demo add

Distribuera till Azure App Service på Linux

App Service kan också vara värd för webbappar internt i Linux för programstackar som stöds. Den kan också köra anpassade Linux-containrar (kallas även webapp för containrar.)

Du kan ändra skriptet så att det distribueras till en Azure-App Service på Linux. App Service på Linux stöder Docker. Därför anger du en Dockerfile som paketerar webbappen med tjänstkörning i en Docker-avbildning. Plugin-programmet skapar avbildningen, push-överför den till ett Docker-register och distribuerar avbildningen till webbappen.

  1. Se Migrera anpassad programvara till Azure App Service med hjälp av en anpassad container för att skapa en Azure App Service på Linux och ett Azure Container Registry.

        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. Installera Docker på Jenkins.

  3. Kontrollera att Docker Pipeline-plugin-programmet är installerat.

  4. Redigera Jenkinsfile2-filen på följande sätt i samma Enkla Java-webbapp för Azure-lagringsplats som du förgrenade:

    1. Uppdatera prenumerations-ID och klient-ID.

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. Uppdatera till namnen på resursgruppen, webbappen och ACR (ersätt platshållarna med dina värden).

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Uppdatera <azsrvprincipal\> till ditt autentiserings-ID

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Skapa en ny Jenkins-pipeline som du gjorde när du distribuerade till Azure-webbappen i Windows med .Jenkinsfile2

  6. Kör det nya jobbet.

  7. Kontrollera att du kör följande kommando i Azure CLI:

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

    Du bör se resultat som liknar följande:

    [
    "calculator"
    ]
    
  8. Bläddra till http://<app_name>.azurewebsites.net/api/calculator/ping (ersätta platshållaren). Du bör se liknande resultat som följande:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. Bläddra till http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y> (ersätta platshållarna). De värden som du anger för x och y summeras och visas.

Nästa steg