Zelfstudie: Implementeren in Azure-app Service met Jenkins en de Azure CLI

Belangrijk

Veel Azure-services hebben Jenkins-invoegtoepassingen. Sommige van deze invoegtoepassingen worden vanaf 29 februari 2024 niet meer ondersteund. Azure CLI is momenteel de aanbevolen manier om Jenkins te integreren met Azure-services. Raadpleeg het artikel Jenkins-invoegtoepassingen voor Azure voor meer informatie.

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

  • Een Jenkins-VM maken
  • Jenkins configureren
  • Een web-app maken in Azure
  • Een GitHub-opslagplaats voorbereiden
  • Een Jenkins-pijplijn maken
  • De pijplijn uitvoeren en de web-app controleren

Vereisten

  • 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 invoegtoepassing Referenties is geïnstalleerd.

  2. Selecteer referenties in het Jenkins-dashboard -> 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: Referentie-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-abonnement te maken met de gratis prijscategorie:

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

Belangrijkste punten:

  • Het App Service-plan definieert de fysieke resources die gebruikt worden voor het hosten van uw apps.
  • 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 diverse opties voor het implementeren van uw code naar 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 domeinnaam 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 opslagplaats Eenvoudige Java-web-App voor Azure.

  2. Selecteer de knop Fork om de opslagplaats te splitsen in uw eigen GitHub-account.

  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_princial>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
    

Een 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 voor de taak in.

  4. Selecteer Pijplijn.

  5. Selecteer OK.

  6. Selecteer Pijplijn.

  7. Selecteer bij Definitie de optie Pijplijnscript uit SCM.

  8. Bij SCM selecteert u Git.

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

  10. Selecteer Opslaan

Test uw pijplijn

  1. Ga naar de pijplijn die u hebt gemaakt

  2. Nu bouwen selecteren

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

    Example of running the demo add

Implementeren in Azure-app-service in Linux

App Service kan web-apps ook systeemeigen hosten op Linux voor ondersteunde toepassingsstacks. 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. Als zodanig geeft u een Dockerfile op waarmee uw web-app wordt verpakt met serviceruntime in een Docker-installatiekopieën. De invoegtoepassing bouwt de installatiekopieën, pusht deze naar een Docker-register en implementeert de installatiekopieën in uw web-app.

  1. Raadpleeg Aangepaste software migreren naar Azure-app Service met behulp van een aangepaste container om een Azure-app-service te maken in Linux en een 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. 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-opslagplaats die u hebt gesplitst 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 bij naar de namen van uw resourcegroep, web-app en ACR (vervang de tijdelijke aanduidingen 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
    

    Als het goed is, ziet u resultaten die er ongeveer als volgt uitzien:

    [
    "calculator"
    ]
    
  8. Blader naar http://<app_name>.azurewebsites.net/api/calculator/ping (vervang de tijdelijke aanduiding). Als het goed is, ziet u vergelijkbare resultaten als hieronder:

    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