Delen via


Zelfstudie: Implementeren in Azure App Service met Jenkins en de Azure CLI

Belangrijk

Hoewel veel Azure-services Jenkins-invoegtoepassingen hebben, beëindigden de meeste van deze invoegtoepassingen vanaf 29 februari 2024 de ondersteuning. Azure CLI is momenteel de aanbevolen manier om Jenkins te integreren met Azure-services. Raadpleeg het artikel Jenkins-invoegtoepassingen voor Azurevoor meer informatie.

Als u een Java-web-app wilt implementeren in Azure, kunt u Azure CLI gebruiken in een Jenkins-pijplijn. In deze zelfstudie voert u de volgende taken uit:

  • Een Jenkins-VM maken
  • Jenkins configureren
  • Een web-app maken in Azure
  • Een GitHub-opslagplaats voorbereiden
  • Jenkins-pijplijn maken
  • Voer de pijplijn uit en controleer de web-app

Vereiste voorwaarden

  • Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.

Jenkins configureren

De volgende stappen laten zien hoe u de vereiste Java JDK en Maven installeert op de Jenkins-controller:

  1. Meld u aan bij de Jenkins-controller met behulp van SSH.

  2. Download en installeer de Azul Zulu-build van OpenJDK voor Azure vanuit een apt-get-opslagplaats:

    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. Voer de volgende opdracht uit om Maven te installeren:

    sudo apt-get install -y maven
    

Azure-service-principal toevoegen aan een Jenkins-referentie

De volgende stappen laten zien hoe u uw Azure-referentie opgeeft:

  1. Zorg ervoor dat de Referentieplug-in is geïnstalleerd.

  2. Binnen het Jenkins-dashboard selecteer Referenties -> Systeem ->.

  3. Selecteer Globale referenties (onbeperkt).

  4. Selecteer Referenties toevoegen om een Microsoft Azure-service-principal toe te voegen. Zorg ervoor dat het type referentie gebruikersnaam met wachtwoord is en voer de volgende items in:

    • Gebruikersnaam: Service-principal appId
    • Wachtwoord: service-principal password
    • ID: Verificatiegegevens-ID (zoals AzureServicePrincipal)

Een Azure App Service maken voor het implementeren van de Java-web-app

Gebruik az appservice plan create om een Azure App Service-plan te maken met de gratis prijscategorie:

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

Belangrijkste punten:

  • Het appservice-plan definieert de fysieke resources die worden gebruikt om uw apps te hosten.
  • Alle toepassingen die zijn toegewezen aan een appservice-plan delen deze resources.
  • Met Appservice-abonnementen kunt u kosten besparen bij het hosten van meerdere apps.

Een Azure-web-app maken

Gebruik az webapp create om een web-app-definitie te maken in het myAppServicePlan App Service-plan.

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

Belangrijkste punten:

  • De definitie van de web-app biedt een URL voor toegang tot uw toepassing en configureert verschillende opties voor het implementeren van uw code in Azure.
  • Vervang de <app_name> tijdelijke aanduiding door een unieke app-naam.
  • De app-naam maakt deel uit van de standaarddomeinnaam voor de web-app. Daarom moet de naam uniek zijn in alle apps in Azure.
  • U kunt een aangepaste domeinnaamvermelding toewijzen aan de web-app voordat u deze beschikbaar maakt voor uw gebruikers.

Java configureren

Gebruik az appservice web config update om de Java Runtime-configuratie voor de app in te stellen:

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

Een GitHub-opslagplaats voorbereiden

  1. Open de Simple Java Web App voor Azure-repository.

  2. Klik op de knop Fork om de repository naar uw eigen GitHub-account te forken.

  3. Open het Jenkinsfile-bestand door op de bestandsnaam te klikken.

  4. Selecteer het potloodpictogram om het bestand te bewerken.

  5. Werk de abonnements-id en tenant-id bij.

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. Werk respectievelijk de resourcegroep en de naam van uw web-app bij op regel 22 en 23.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. De referentie-id in uw Jenkins-exemplaar bijwerken

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

Jenkins-pijplijn maken

Ga als volgt te werk om een Jenkins-pijplijn te maken:

  1. Open Jenkins in een webbrowser.

  2. Selecteer Nieuw Item.

  3. Voer een naam in voor de taak.

  4. Selecteer Pijplijn.

  5. Kies OK.

  6. Selecteer Pijplijn.

  7. Voor Definitie selecteert u Pijplijnscript in SCM.

  8. Selecteer Git voor SCM.

  9. Voer de GitHub-URL in voor uw geforkte opslagplaats: https:\<forked_repo\>.git

  10. Selecteer Opslaan

Uw pijplijn testen

  1. Ga naar de pijplijn die u hebt gemaakt

  2. Selecteer Nu bouwen

  3. Nadat de build is voltooid, selecteert u Console-uitvoer om de builddetails te bekijken.

Uw web-app verifiëren

Ga als volgt te werk om te controleren of het WAR-bestand is geïmplementeerd in uw web-app:

  1. Blader naar de volgende URL: http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. U ziet tekst die er ongeveer als volgt uitziet:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Blader naar de volgende URL (vervang <x> en <y> door twee waarden die moeten worden opgeteld): http://< app_name.azurewebsites.net/api/calculator/add?x>=<x>&y=<y>.

    Voorbeeld van het uitvoeren van de demo-add

Implementeren in Azure App Service in Linux

App Service kan ook webapps native hosten op Linux voor ondersteunde applicatiestacks. Het kan ook aangepaste Linux-containers uitvoeren (ook wel bekend als Web App for Containers.)

U kunt het script wijzigen om te implementeren in een Azure App Service in Linux. App Service op Linux ondersteunt Docker. U geeft een Dockerfile op die uw webapp verpakt met de service-runtime in een Docker-image. De plug-in bouwt de image, pusht deze naar een Docker-register en zet de image in uw web-app in.

  1. Raadpleeg Aangepaste software migreren naar Azure App Service met behulp van een aangepaste container om een Azure App Service in Linux en een Azure Container Registry te maken.

        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. Installeer Docker op uw Jenkins.

  3. Zorg ervoor dat de Docker Pipeline-invoegtoepassing is geïnstalleerd.

  4. Bewerk in dezelfde Simple Java Web App for Azure repository die u hebt geforkt het Jenkinsfile2-bestand als volgt:

    1. Werk de abonnements-id en tenant-id bij.

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. Werk de namen van uw resourcegroep, webapp en ACR bij (vervang de plaatsaanduidingen door uw waarden).

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Bijwerken <azsrvprincipal\> naar uw referentie-id

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Maak een nieuwe Jenkins-pijplijn zoals u hebt gedaan bij de implementatie in Azure-web-app in Windows met behulp van Jenkinsfile2.

  6. Voer uw nieuwe taak uit.

  7. Voer in Azure CLI de volgende opdracht uit om te controleren:

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

    U zou resultaten moeten zien die vergelijkbaar zijn met het volgende:

    [
    "calculator"
    ]
    
  8. Blader naar http://<app_name>.azurewebsites.net/api/calculator/ping (vervang de tijdelijke aanduiding). U zou vergelijkbare resultaten moeten zien als de volgende:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. Blader naar http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y> (vervang de tijdelijke aanduidingen). De waarden die u opgeeft x en y worden opgeteld en weergegeven.

Volgende stappen