Zelfstudie: Implementeren naar Azure App Service met Jenkins en de Azure CLI
Belangrijk
Veel Azure-services hebben Jenkins-in plug-ins. Sommige van deze in plug-ins worden vanaf 29 februari 2024 niet meer ondersteund. Azure CLI is de momenteel aanbevolen manier om Jenkins te integreren met Azure-services. Raadpleeg het artikel Jenkins-in plug-ins 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, maak dan een gratis account aan voordat u begint.
- JenkinsJenkins installeren op een Linux-VM
- Azure CLI:installeer Azure CLI (versie 2.0.67 of hoger) op de Jenkins-server.
Jenkins configureren
De volgende stappen laten zien hoe u de vereiste Java JDK en Maven installeert op de Jenkins-controller:
Meld u aan bij de Jenkins-controller met behulp van SSH.
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-jdkVoer 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:
Zorg ervoor dat de aanmeldingsgegevens is geïnstalleerd.
Selecteer in het Jenkins-dashboard Referenties - Systeem - >.
Selecteer Globale referenties (onbeperkt).
Selecteer Referenties toevoegen om een service-principal Microsoft Azure toevoegen. Zorg ervoor dat het referentie-type Gebruikersnaam met wachtwoord is en voer de volgende items in:
- Gebruikersnaam:service-principal
- Wachtwoord:Service-principal
- Id:Referentie-id (zoals )
Een Azure App Service maken voor het implementeren van de Java-web-app
Gebruik az appservice plan create om een abonnement Azure App Service maken met de prijscategorie GRATIS:
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-plannen 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 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 voor 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-runtimeconfiguratie 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
Open de opslagplaats Eenvoudige Java-web-App voor Azure.
Selecteer de knop Fork om de repo naar uw eigen account GitHub fork.
Open het Jenkinsfile-bestand door op de bestandsnaam te klikken.
Selecteer het potloodpictogram om het bestand te bewerken.
Werk de abonnements-id en tenant-id bij.
withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>', 'AZURE_TENANT_ID=<tenant_id>'])Werk de resourcegroep en de naam van uw web-app bij op respectievelijk regel 22 en 23.
def resourceGroup = '<resource_group>' def webAppName = '<app_name>'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:
Open Jenkins in een webbrowser.
Selecteer Nieuw Item.
Voer een naam voor de taak in.
Selecteer Pijplijn.
Selecteer OK.
Selecteer Pijplijn.
Selecteer bij Definitie de optie Pijplijnscript uit SCM.
Bij SCM selecteert u Git.
Voer de GitHub voor uw gevorkte repo in:
https:\<forked_repo\>.gitSelecteer Opslaan
Test uw pijplijn
Ga naar de pijplijn die u hebt gemaakt
Selecteer Nu bouwen
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:
Blader naar de volgende URL:
http://<app_name>.azurewebsites.net/api/calculator/pingDe tekst ziet er ongeveer als volgt uit:
Welcome to Java Web App!!! This is updated! Today's dateBlader 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 > .

Implementeren naar Azure App Service op Linux
App Service kan web-apps ook systeemeigen hosten op Linux voor ondersteunde toepassingsstacks. Er kunnen ook aangepaste Linux-containers worden uitgevoerd (ook wel bekend als Web App for Containers.)
U kunt het script wijzigen om te implementeren op een Azure App Service op Linux. App Service op Linux ondersteunt Docker. Als zodanig geeft u een Dockerfile op waarmee uw web-app met serviceruntime wordt verpakt in een Docker-afbeelding. De in plug-in bouwt de -afbeelding, pusht deze naar een Docker-register en implementeert de -afbeelding in uw web-app.
Raadpleeg Aangepaste software migreren naar Azure App Service met behulp van een aangepaste container om een Azure App Service op 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:latestZorg ervoor dat de Docker Pipeline-in plug-in is geïnstalleerd.
Bewerk het Jenkinsfile2-bestand als volgt in dezelfde eenvoudige Java-web-app voor Azure-repo die u hebt gevorkt:
Werk de abonnements-id en tenant-id bij.
withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>', 'AZURE_TENANT_ID=<myTenantId>']) {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>'Bijwerken
<azsrvprincipal\>naar uw referentie-idwithCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
Maak een nieuwe Jenkins-pijplijn zoals u hebt gedaan bij het implementeren in een Azure-web-app in Windows met behulp van
Jenkinsfile2.Voer uw nieuwe taak uit.
Voer in Azure CLI de volgende opdracht uit om dit te controleren:
az acr repository list -n <myRegistry> -o jsonDe resultaten moeten er ongeveer als volgt uit zien:
[ "calculator" ]Blader naar
http://<app_name>.azurewebsites.net/api/calculator/ping(vervang de tijdelijke aanduiding). De resultaten moeten er ongeveer als volgt uit zien:Welcome to Java Web App!!! This is updated! Today's dateBlader naar
http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>(vervang de tijdelijke aanduidingen). De waarden die u opgeeftxvooryen worden opgeteld en weergegeven.