Tutorial: Menyebarkan ke Azure App Service dengan Jenkins dan Azure CLI
Penting
Banyak layanan Azure memiliki plug-in Jenkins. Beberapa plug-in ini dihentikan pada 29 Februari 2024. Azure CLI adalah cara yang saat ini direkomendasikan untuk mengintegrasikan Jenkins dengan layanan Azure. Untuk informasi selengkapnya, lihat artikel Plug-in Jenkins untuk Azure.
Untuk menyebarkan aplikasi web Java ke Azure, Anda dapat menggunakan Azure CLI di Jenkins Pipeline. Dalam tutorial ini, Anda melakukan tugas-tugas berikut:
- Membuat mesin virtual Jenkins
- Mengonfigurasi Jenkins
- Membuat aplikasi web di Azure
- Menyiapkan repositori GitHub
- Membuat alur Jenkins
- Menjalankan alur dan memverifikasi aplikasi web
Prasyarat
- Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
- Jenkins - Instal Jenkins di mesin virtual Linux
- Azure CLI: Instal Azure CLI (versi 2.0.67 atau lebih tinggi) di server Jenkins.
Mengonfigurasi Jenkins
Langkah-langkah berikut menunjukkan cara menginstal Java JDK dan Maven yang diperlukan pada pengontrol Jenkins:
Masuk ke pengontrol Jenkins menggunakan SSH.
Unduh dan instal build Azul Zulu OpenJDK untuk Azure dari repositori 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
Jalankan perintah berikut untuk menginstal Maven:
sudo apt-get install -y maven
Menambahkan perwakilan layanan Azure ke kredensial Jenkins
Langkah-langkah berikut menunjukkan cara menentukan kredensial Azure Anda:
Pastikan plug-in Credentials diinstal.
Di dasbor Jenkins, pilih Credentials -> System ->.
Pilih Global credentials(unrestricted).
Pilih Add Credentials untuk menambahkan perwakilan layanan Microsoft Azure. Pastikan jenis kredensialnya adalah Nama pengguna dengan kata sandi dan masukkan item berikut:
- Username: Perwakilan layanan
appId
- Password: Perwakilan layanan
password
- ID: Pengidentifikasi kredensial (seperti
AzureServicePrincipal
)
- Username: Perwakilan layanan
Membuat Azure App Service untuk menyebarkan aplikasi web Java
Gunakan az appservice plan create untuk membuat paket Azure App Service dengan tingkat harga GRATIS :
az appservice plan create \
--name <app_service_plan> \
--resource-group <resource_group> \
--sku FREE
Poin utama:
- Paket appservice menentukan sumber daya fisik yang digunakan untuk menghosting aplikasi Anda.
- Semua aplikasi yang ditetapkan ke paket appservice berbagi sumber daya ini.
- Dengan paket appservice, Anda bisa menghemat biaya saat menghosting beberapa aplikasi.
Membuat aplikasi web Azure
Gunakan az webapp create untuk membuat definisi aplikasi web dalam paket myAppServicePlan
App Service.
az webapp create \
--name <app_name> \
--resource-group <resource_group> \
--plan <app_service_plan>
Poin utama:
- Definisi aplikasi web menyediakan URL untuk mengakses aplikasi Anda dan mengonfigurasi beberapa opsi untuk menyebarkan kode Anda ke Azure.
- Ganti tempat penampung
<app_name>
dengan nama aplikasi yang unik. - Nama aplikasi adalah bagian dari nama domain default untuk aplikasi web. Maka nama aplikasi web harus unik di semua aplikasi di Azure.
- Anda dapat memetakan entri nama domain kustom ke aplikasi web sebelum mengeksposnya ke pengguna Anda.
Konfigurasikan Java
Gunakan az appservice web config update untuk menyiapkan konfigurasi runtime Java untuk aplikasi:
az webapp config set \
--name <app_name> \
--resource-group <resource_group> \
--java-version 1.8 \
--java-container Tomcat \
--java-container-version 8.0
Menyiapkan repositori GitHub
Buka repositori Simple Java Web App untuk Azure.
Pilih tombol Fork untuk melakukan fork repositori tersebut ke akun GitHub Anda sendiri.
Buka file Jenkinsfile dengan mengeklik nama file.
Pilih ikon pensil untuk mengedit file.
Perbarui ID langganan dan ID penyewa.
withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>', 'AZURE_TENANT_ID=<tenant_id>'])
Perbarui grup sumber daya dan nama aplikasi web Anda masing-masing pada baris 22 dan 23.
def resourceGroup = '<resource_group>' def webAppName = '<app_name>'
Perbarui ID kredensial di instans Jenkins Anda
withCredentials([usernamePassword(credentialsId: '<service_princial>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
Membuat alur Jenkins
Lakukan hal berikut untuk membuat alur Jenkins:
Buka Jenkins di browser web.
Pilih Item Baru.
Masukkan nama untuk pekerjaan tersebut.
Pilih Alur.
Pilih OK.
Pilih Alur.
Untuk Definisi, pilih Skrip alur dari SCM.
Untuk SCM, pilih Git.
Masukkan URL GitHub untuk repositori Anda yang di-fork:
https:\<forked_repo\>.git
Pilih Simpan
Uji alur Anda
Buka alur yang telah Anda buat
Pilih Bangun sekarang
Setelah build selesai, pilih Output Konsol untuk melihat detail build.
Memverifikasi aplikasi web Anda
Lakukan hal berikut untuk memverifikasi apakah file WAR berhasil disebarkan ke aplikasi web Anda:
Telusuri URL berikut:
http://<app_name>.azurewebsites.net/api/calculator/ping
Anda akan melihat teks seperti berikut ini:
Welcome to Java Web App!!! This is updated! Today's date
Telusuri ke URL berikut (ganti x dan y dengan dua nilai yang akan dijumlahkan): http://< app_name.azurewebsites.net/api/calculator/add?x>=<x>&y=<y>.><><
Menyebarkan ke Azure App Service di Linux
App Service juga dapat menghosting aplikasi web secara asli di Linux untuk tumpukan aplikasi yang didukung. App Service juga dapat menjalankan kontainer Linux kustom (juga dikenal sebagai Web App for Containers).
Anda dapat memodifikasi skrip untuk disebarkan ke Azure App Service di Linux. App Service di Linux mendukung Docker. Dengan demikian, Anda menyediakan Dockerfile yang mengemas aplikasi web Anda dengan runtime layanan ke dalam citra Docker. Plug-in membangun citra, mendorongnya ke registri Docker, dan menyebarkan citra ke aplikasi web Anda.
Lihat artikel Memigrasikan perangkat lunak kustom ke Azure App Service menggunakan kontainer kustom untuk membuat Azure App Service di Linux dan 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
Pastikan plug-in Docker Pipeline diinstal.
Di repositori Simple Java Web App for Azure yang sama yang Anda fork, edit file Jenkinsfile2 sebagai berikut:
Perbarui ID langganan dan ID penyewa.
withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>', 'AZURE_TENANT_ID=<myTenantId>']) {
Perbarui menjadi nama grup sumber daya, aplikasi web, dan ACR Anda (mengganti tempat penampung dengan nilai Anda).
def webAppResourceGroup = '<resource_group>' def webAppName = '<app_name>' def acrName = '<registry>'
Perbarui
<azsrvprincipal\>
menjadi ID kredensial AndawithCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
Buat alur Jenkins baru seperti yang Anda lakukan saat menyebarkan ke aplikasi web Azure di Windows menggunakan
Jenkinsfile2
.Jalankan pekerjaan baru Anda.
Untuk memverifikasi, di Azure CLI, jalankan perintah berikut ini:
az acr repository list -n <myRegistry> -o json
Anda akan melihat hasil yang serupa dengan berikut ini:
[ "calculator" ]
Telusuri ke
http://<app_name>.azurewebsites.net/api/calculator/ping
(mengganti tempat penampung). Anda akan melihat hasil yang serupa dengan berikut ini:Welcome to Java Web App!!! This is updated! Today's date
Telusuri ke
http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>
(mengganti tempat penampung). Nilai yang Anda tentukan untukx
dany
dijumlahkan dan ditampilkan.
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk