Samouczek: wdrażanie w usłudze aplikacja systemu Azure przy użyciu narzędzia Jenkins i interfejsu wiersza polecenia platformy Azure
Ważne
Wiele usług platformy Azure ma wtyczki Jenkins. Niektóre z tych wtyczek nie będą obsługiwane od 29 lutego 2024 r. Interfejs wiersza polecenia platformy Azure to obecnie zalecany sposób integracji serwera Jenkins z usługami platformy Azure. Aby uzyskać więcej informacji, zapoznaj się z artykułem Wtyczki serwera Jenkins dla platformy Azure.
Aby wdrożyć aplikację internetową Java na platformie Azure, możesz użyć interfejsu wiersza polecenia platformy Azure w potoku serwera Jenkins. W tym samouczku wykonasz następujące zadania:
- Tworzenie maszyny wirtualnej usługi Jenkins
- Konfigurowanie usługi Jenkins
- Tworzenie aplikacji internetowej na platformie Azure
- Przygotowywanie repozytorium GitHub
- Tworzenie potoku Jenkins
- Uruchamianie potoku i weryfikowanie aplikacji internetowej
Wymagania wstępne
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Usługa Jenkins zainstaluj narzędzie Jenkins - na maszynie wirtualnej z systemem Linux
- Interfejs wiersza polecenia platformy Azure: zainstaluj interfejs wiersza polecenia platformy Azure (wersja 2.0.67 lub nowsza) na serwerze Jenkins.
Konfigurowanie usługi Jenkins
W poniższych krokach pokazano, jak zainstalować wymagany zestaw Java JDK i narzędzie Maven na kontrolerze serwera Jenkins:
Zaloguj się do kontrolera Serwera Jenkins przy użyciu protokołu SSH.
Pobierz i zainstaluj kompilację Zestawu OpenJDK dla platformy Azure Azul Zulu z repozytorium apt-get:
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
Uruchom następujące polecenie, aby zainstalować narzędzie Maven:
sudo apt-get install -y maven
Dodawanie jednostki usługi platformy Azure do poświadczeń serwera Jenkins
W poniższych krokach pokazano, jak określić poświadczenia platformy Azure:
Upewnij się, że wtyczka Credentials jest zainstalowana.
Na pulpicie nawigacyjnym narzędzia Jenkins wybierz pozycję Poświadczenia —> System ->.
Wybierz pozycję Poświadczenia globalne (bez ograniczeń).
Wybierz pozycję Dodaj poświadczenia, aby dodać jednostkę usługi platformy Microsoft Azure. Upewnij się, że rodzaj poświadczeń to Nazwa użytkownika z hasłem i wprowadź następujące elementy:
- Nazwa użytkownika: jednostka usługi
appId
- Hasło: jednostka usługi
password
- Identyfikator: identyfikator poświadczeń (na przykład
AzureServicePrincipal
)
- Nazwa użytkownika: jednostka usługi
Tworzenie usługi Azure App Service w celu wdrożenia aplikacji internetowej Java
Użyj polecenia az appservice plan create, aby utworzyć plan usługi aplikacja systemu Azure z warstwą cenową BEZPŁATNA:
az appservice plan create \
--name <app_service_plan> \
--resource-group <resource_group> \
--sku FREE
Kluczowe punkty:
- Plan usługi App Service definiuje zasoby fizyczne używane do hostowania aplikacji.
- Wszystkie aplikacje przypisane do planu usługi appservice współdzielą te zasoby.
- Plany usługi AppService umożliwiają oszczędność kosztów podczas hostowania wielu aplikacji.
Tworzenie aplikacji internetowej platformy Azure
Użyj polecenia az webapp create , aby utworzyć definicję aplikacji internetowej w myAppServicePlan
planie usługi App Service.
az webapp create \
--name <app_name> \
--resource-group <resource_group> \
--plan <app_service_plan>
Kluczowe punkty:
- Definicja aplikacji internetowej zawiera adres URL umożliwiający uzyskanie dostępu do aplikacji i konfiguruje kilka opcji wdrażania kodu na platformie Azure.
<app_name>
Zastąp symbol zastępczy unikatową nazwą aplikacji.- Nazwa aplikacji jest częścią domyślnej nazwy domeny aplikacji internetowej. W związku z tym nazwa musi być unikatowa we wszystkich aplikacjach na platformie Azure.
- Niestandardowy wpis nazwy domeny można zmapować na aplikację internetową przed udostępnieniem jej użytkownikom.
Konfigurowanie środowiska Java
Użyj polecenia az appservice web config update , aby skonfigurować konfigurację środowiska uruchomieniowego Java dla aplikacji:
az webapp config set \
--name <app_name> \
--resource-group <resource_group> \
--java-version 1.8 \
--java-container Tomcat \
--java-container-version 8.0
Przygotowywanie repozytorium GitHub
Otwórz repozytorium prostej aplikacji internetowej Java dla platformy Azure.
Wybierz przycisk Rozwidlenie, aby rozwidlić repozytorium do własnego konta usługi GitHub.
Otwórz plik Jenkinsfile, klikając nazwę pliku.
Wybierz ikonę ołówka, aby edytować plik.
Zaktualizuj identyfikator subskrypcji i identyfikator dzierżawy.
withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>', 'AZURE_TENANT_ID=<tenant_id>'])
Zaktualizuj odpowiednio grupę zasobów i nazwę aplikacji internetowej w wierszu 22 i 23.
def resourceGroup = '<resource_group>' def webAppName = '<app_name>'
Aktualizowanie identyfikatora poświadczeń w wystąpieniu serwera Jenkins
withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
Tworzenie potoku Jenkins
Wykonaj następujące czynności, aby utworzyć potok serwera Jenkins:
Otwórz stronę serwera Jenkins w przeglądarce internetowej.
Wybierz pozycję New Item (Nowy element).
Wprowadź nazwę zadania.
Wybierz pozycję Potok.
Wybierz przycisk OK.
Wybierz pozycję Potok.
W polu Definition (Definicja) wybierz wartość Pipeline script from SCM (Skrypt potoku z menedżera SCM).
W polu SCM wybierz wartość Git.
Wprowadź adres URL usługi GitHub dla rozwidlenia repozytorium:
https:\<forked_repo\>.git
Wybierz pozycję Zapisz
Testowanie potoku
Przejdź do utworzonego potoku
Wybierz pozycję Kompiluj teraz
Po zakończeniu kompilacji wybierz pozycję Dane wyjściowe konsoli, aby wyświetlić szczegóły kompilacji.
Weryfikowanie aplikacji internetowej
Wykonaj następujące czynności, aby sprawdzić, czy plik WAR został pomyślnie wdrożony w aplikacji internetowej:
Przejdź do następującego adresu URL:
http://<app_name>.azurewebsites.net/api/calculator/ping
Powinien zostać wyświetlony tekst podobny do następującego:
Welcome to Java Web App!!! This is updated! Today's date
Przejdź do następującego adresu URL (zastąp znaki x i y dwiema wartościami do zsumowania): http://< app_name.azurewebsites.net/api/calculator/add?x>=<x>&y=<y>.> <> <
Wdrażanie w usłudze aplikacja systemu Azure w systemie Linux
Usługa App Service może również hostować aplikacje internetowe natywnie w systemie Linux na potrzeby obsługiwanych stosów aplikacji. Może również uruchamiać niestandardowe kontenery systemu Linux (nazywane również aplikacją internetową dla kontenerów).
Skrypt można zmodyfikować w celu wdrożenia w usłudze aplikacja systemu Azure w systemie Linux. App Service dla systemu Linux obsługuje platformę Docker. W związku z tym należy podać plik Dockerfile, który pakuje aplikację internetową ze środowiskiem uruchomieniowym usługi do obrazu platformy Docker. Wtyczka kompiluje obraz, wypycha go do rejestru platformy Docker i wdraża obraz w aplikacji internetowej.
Zapoznaj się z tematem Migrowanie oprogramowania niestandardowego do usługi aplikacja systemu Azure Przy użyciu kontenera niestandardowego, aby utworzyć usługę aplikacja systemu Azure w systemie Linux i usłudze 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
Upewnij się, że wtyczka potoku platformy Docker jest zainstalowana.
W tym samym rozwidleniu prostej aplikacji internetowej Java dla platformy Azure zmodyfikuj plik Jenkinsfile2 w następujący sposób:
Zaktualizuj identyfikator subskrypcji i identyfikator dzierżawy.
withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>', 'AZURE_TENANT_ID=<myTenantId>']) {
Zaktualizuj nazwy grupy zasobów, aplikacji internetowej i usługi ACR (zastępując symbole zastępcze wartościami).
def webAppResourceGroup = '<resource_group>' def webAppName = '<app_name>' def acrName = '<registry>'
Aktualizowanie
<azsrvprincipal\>
do identyfikatora poświadczeńwithCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
Utwórz nowy potok narzędzia Jenkins, tak jak podczas wdrażania w aplikacji internetowej platformy Azure w systemie Windows przy użyciu polecenia
Jenkinsfile2
.Uruchom nowe zadanie.
Aby sprawdzić, w interfejsie wiersza polecenia platformy Azure uruchom następujące polecenie:
az acr repository list -n <myRegistry> -o json
Powinny zostać wyświetlone wyniki podobne do następujących:
[ "calculator" ]
Przejdź do
http://<app_name>.azurewebsites.net/api/calculator/ping
(zastępując symbol zastępczy). Powinny zostać wyświetlone wyniki podobne do następujących:Welcome to Java Web App!!! This is updated! Today's date
Przejdź do
http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>
(zastępując symbole zastępcze). Wartości określone dlax
iy
są sumowane i wyświetlane.