Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Während viele Azure-Dienste über Jenkins-Plug-Ins verfügen, endete der Support für die meisten dieser Plug-Ins ab dem 29. Februar 2024. Azure CLI ist die derzeit empfohlene Methode zum Integrieren von Jenkins in Azure-Dienste. Weitere Informationen finden Sie im Artikel Jenkins-Plug-Ins für Azure.
Um eine Java-Web-App in Azure bereitzustellen, können Sie Azure CLI in einer Jenkins-Pipeline verwenden. In diesem Tutorial werden Sie die folgenden Aufgaben ausführen:
- Erstellen einer Jenkins-VM
- Konfigurieren von Jenkins
- eine Web-App in Azure erstellen
- Vorbereiten eines GitHub-Repositorys
- Erstellen der Jenkins-Pipeline
- Führen Sie die Pipeline aus und überprüfen Sie die Web-App
Voraussetzungen
- Azure-Abonnement: Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
- Jenkins - Installieren von Jenkins auf einer Linux-VM
- Azure CLI: Installieren Sie Azure CLI (Version 2.0.67 oder höher) auf dem Jenkins-Server.
Konfigurieren von Jenkins
Die folgenden Schritte zeigen, wie Sie den erforderlichen Java JDK und Maven auf dem Jenkins-Controller installieren:
Melden Sie sich mit SSH bei Jenkins-Controller an.
Laden Sie den Azul Zulu-Build von OpenJDK für Azure aus einem apt-get-Repository herunter, und installieren Sie es:
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-jdkFühren Sie den folgenden Befehl aus, um Maven zu installieren:
sudo apt-get install -y maven
Azure-Dienstprinzipal zu Jenkins-Anmeldeinformationen hinzufügen
Die folgenden Schritte zeigen, wie Sie Ihre Azure-Anmeldeinformationen angeben:
Stellen Sie sicher, dass das Anmeldeinformationen-Plug-In installiert ist.
Wählen Sie im Jenkins-Dashboard „Credentials -> System“> aus.
Wählen Sie "Globale Anmeldeinformationen(uneingeschränkt)" aus.
Wählen Sie "Anmeldeinformationen hinzufügen" aus, um einen Microsoft Azure-Dienstprinzipal hinzuzufügen. Stellen Sie sicher, dass die Art der Anmeldeinformationen Benutzername mit Kennwort ist, und geben Sie die folgenden Elemente ein:
-
Benutzername: Dienstprinzipal
appId -
Kennwort: Service Principal
password -
ID: Berechtigungsnachweis-ID (wie z. B.
AzureServicePrincipal)
-
Benutzername: Dienstprinzipal
Erstellen eines Azure App Service für die Bereitstellung der Java-Web-App
Verwenden Sie az appservice plan create, um einen Azure App Service-Plan mit der KOSTENLOSEN Preisstufe zu erstellen.
az appservice plan create \
--name <app_service_plan> \
--resource-group <resource_group> \
--sku FREE
Die wichtigsten Punkte:
- Der Appservice-Plan definiert die physischen Ressourcen, die zum Hosten Ihrer Apps verwendet werden.
- Alle Anwendungen, die einem Appservice-Plan zugewiesen sind, teilen diese Ressourcen.
- Mit Appservice-Plänen können Sie Kosten sparen, wenn Sie mehrere Apps hosten.
Erstellen einer Azure Web App
Verwenden Sie az webapp create , um eine Web-App-Definition im myAppServicePlan App Service-Plan zu erstellen.
az webapp create \
--name <app_name> \
--resource-group <resource_group> \
--plan <app_service_plan>
Die wichtigsten Punkte:
- Die Web-App-Definition bietet eine URL für den Zugriff auf Ihre Anwendung mit und konfiguriert mehrere Optionen für die Bereitstellung Ihres Codes in Azure.
- Ersetzen Sie den
<app_name>Platzhalter durch einen eindeutigen App-Namen. - Der App-Name ist Teil des Standarddomänennamens für die Web-App. Daher muss der Name in allen Apps in Azure eindeutig sein.
- Sie können der Web-App einen benutzerdefinierten Domänennameneintrag zuordnen, bevor Sie ihn Ihren Benutzern zur Verfügung stellen.
Konfigurieren von Java
Verwenden Sie az appservice web config update , um die Java-Laufzeitkonfiguration für die App einzurichten:
az webapp config set \
--name <app_name> \
--resource-group <resource_group> \
--java-version 1.8 \
--java-container Tomcat \
--java-container-version 8.0
Vorbereiten eines GitHub-Repositorys
Öffnen Sie die einfache Java Web App für Azure-Repository .
Wählen Sie die Fork-Schaltfläche aus, um das Repository in Ihr eigenes GitHub-Konto zu forken.
Öffnen Sie die Jenkinsfile-Datei , indem Sie auf den Dateinamen klicken.
Wählen Sie das Bleistiftsymbol aus, um die Datei zu bearbeiten.
Aktualisieren Sie die Abonnement-ID und die Mandanten-ID.
withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>', 'AZURE_TENANT_ID=<tenant_id>'])Aktualisieren Sie die Ressourcengruppe und den Namen Ihrer Web-App in Zeile 22 bzw. 23.
def resourceGroup = '<resource_group>' def webAppName = '<app_name>'Aktualisieren Sie die Anmeldeinformations-ID in Ihrer Jenkins-Instanz
withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
Erstellen der Jenkins-Pipeline
Gehen Sie wie folgt vor, um eine Jenkins-Pipeline zu erstellen:
Öffnen Sie Jenkins in einem Webbrowser.
Wählen Sie Neues Element aus.
Geben Sie einen Namen für den Auftrag ein.
Wählen Sie Pipeline aus.
Wählen Sie OK aus.
Wählen Sie Pipeline aus.
Wählen Sie für DefinitionPipelineskript aus SCM aus.
Wählen Sie für SCMGit aus.
Geben Sie die GitHub-URL für Ihr geforktes Repository ein:
https:\<forked_repo\>.gitWählen Sie "Speichern" aus.
Teste deine Pipeline
Gehen Sie zu der von Ihnen erstellten Pipeline
Jetzt Builden
Wählen Sie nach Abschluss des Builds die Konsolenausgabe aus, um Builddetails anzuzeigen.
Überprüfen Ihrer Web-App
Führen Sie die folgenden Schritte aus, um zu überprüfen, ob die WAR-Datei erfolgreich in Ihrer Web-App bereitgestellt wurde:
Navigieren Sie zu der folgenden URL:
http://<app_name>.azurewebsites.net/api/calculator/pingEs sollte Text ähnlich wie folgt angezeigt werden:
Welcome to Java Web App!!! This is updated! Today's dateNavigieren Sie zur folgenden URL (ersetzen Sie <x> und <y> durch zwei zu addierende Werte): http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>.
Bereitstellen auf Azure App Service unter Linux
Von App Service können Web-Apps für unterstützte Anwendungsstapel auch nativ unter Linux gehostet werden. Sie kann auch benutzerdefinierte Linux-Container (auch als Web App für Container bezeichnet) ausführen.)
Sie können das Skript so ändern, dass es in einem Azure App Service unter Linux bereitgestellt wird. Der App-Dienst unter Linux unterstützt Docker. So stellen Sie eine Dockerfile bereit, die Ihre Web-App mit Dienstlaufzeit in ein Docker-Image packt. Das Plug-In erstellt das Image, verschiebt es an eine Docker-Registrierung und stellt das Image in Ihrer Web-App bereit.
Verweisen Sie auf Migrieren von benutzerdefinierter Software zu Azure App Service mithilfe eines benutzerdefinierten Containers, um zu erfahren, wie man einen Azure App Service unter Linux und eine Azure-Containerregistrierung erstellt.
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:latestStellen Sie sicher, dass das Docker Pipeline-Plug-In installiert ist.
Bearbeiten Sie die Datei Jenkinsfile2 im gleichen Simple Java Web App for Azure Repository, das Sie geforkt haben, wie folgt:
Aktualisieren Sie die Abonnement-ID und die Mandanten-ID.
withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>', 'AZURE_TENANT_ID=<myTenantId>']) {Aktualisieren Sie die Namen Ihrer Ressourcengruppe, Web-App und ACR (ersetzen Sie die Platzhalter durch Ihre Werte).
def webAppResourceGroup = '<resource_group>' def webAppName = '<app_name>' def acrName = '<registry>'Aktualisieren
<azsrvprincipal\>in Ihre Anmelde-IDwithCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
Erstellen Sie eine neue Jenkins-Pipeline, wie Sie es bei der Bereitstellung in einer Azure-Web-App unter Windows mit
Jenkinsfile2gemacht haben.Führen Sie Ihren neuen Auftrag aus.
Führen Sie zum Überprüfen in Azure CLI den folgenden Befehl aus:
az acr repository list -n <myRegistry> -o jsonDie Ergebnisse sollten ähnlich wie folgt angezeigt werden:
[ "calculator" ]Navigieren Sie zu
http://<app_name>.azurewebsites.net/api/calculator/ping(ersetzen Sie den Platzhalter). Das Ergebnis sollte etwa wie folgt aussehen:Welcome to Java Web App!!! This is updated! Today's dateNavigieren Sie zu
http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>(ersetzen Sie die Platzhalter). Die Werte, die Sie fürxundyangeben, werden addiert und angezeigt.