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 ha support från och med den 29 februari 2024. Azure CLI är det 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-kontrollanten:

  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änsade).

  4. Välj Lägg till autentiseringsuppgifter för att lägga till ett Microsoft Azure tjänstens huvudnamn. Kontrollera att typ av autentiseringsuppgifter är Användarnamn med lösenord och ange följande objekt:

    • 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 har tilldelats en appserviceplan delar dessa resurser.
  • Med Appservice-planer kan du spara pengar 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örgrena 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 klientorganisations-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 autentiseringsuppgifts-ID:t i Jenkins-instansen

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

Skapa en Jenkins-pipeline

Skapa en Jenkins-pipeline genom att göra följande:

  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 den 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>=<xy>&=<y>.><><

    Example of running the demo add

Distribuera till Azure App Service i 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 Web App for Containers).)

Du kan ändra skriptet så att det distribueras till en Azure App Service i Linux. App Service på Linux stöder Docker. Därför tillhandahåller 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 din webbapp.

  1. Se Migrera anpassad programvara för att Azure App Service använda en anpassad container för att skapa en Azure App Service i Linux och en 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 plugin-programmet Docker Pipeline är installerat.

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

    1. Uppdatera prenumerations-ID och klientorganisations-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 autentiseringsuppgifts-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 hjälp av Jenkinsfile2.

  6. Kör det nya jobbet.

  7. Kontrollera genom att köra 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ätt 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ätt platshållarna). De värden som du anger för x och y summeras och visas.

Nästa steg