Bagikan melalui


Tutorial: Menyebarkan ke Azure App Service dengan Jenkins dan Azure CLI

Penting

Meskipun banyak layanan Azure memiliki plug-in Jenkins, sebagian besar plug-in ini mengakhiri dukungan per 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 Jenkins VM
  • Mengonfigurasi Jenkins
  • Membuat aplikasi web di Azure
  • Menyiapkan repositori GitHub
  • Membuat alur Jenkins
  • Jalankan alur dan verifikasi aplikasi web

Prasyarat

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Mengonfigurasi Jenkins

Langkah-langkah berikut menunjukkan cara menginstal Java JDK dan Maven yang diperlukan pada pengontrol Jenkins:

  1. Masuk ke pengontrol Jenkins menggunakan SSH.

  2. 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
    
  3. Jalankan perintah berikut untuk menginstal Maven:

    sudo apt-get install -y maven
    

Menambahkan prinsipal layanan Azure ke kredensial Jenkins

Langkah-langkah berikut menunjukkan cara menentukan kredensial Azure Anda:

  1. Pastikan plug-in Kredensial diinstal.

  2. Dalam dasbor Jenkins, pilih Kredensial -> Sistem ->.

  3. Pilih Kredensial global(tidak dibatasi).

  4. Pilih Tambahkan Kredensial untuk menambahkan perwakilan layanan Microsoft Azure. Pastikan bahwa jenis kredensial adalah Nama pengguna dengan kata sandi dan masukkan item berikut:

    • Nama pengguna: Perwakilan layanan appId
    • Kata sandi: Prinsipal layanan password
    • ID: Pengidentifikasi kredensial (seperti AzureServicePrincipal)

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 layanan aplikasi menentukan sumber daya fisik yang digunakan untuk menghosting aplikasi Anda.
  • Semua aplikasi yang ditetapkan ke paket layanan aplikasi berbagi sumber daya ini.
  • Paket Appservice memungkinkan Anda menghemat biaya saat menghosting beberapa aplikasi.

Membuat aplikasi web Azure

Gunakan az webapp create untuk membuat definisi aplikasi web dalam myAppServicePlan paket 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 dengan dan mengonfigurasi beberapa opsi untuk menyebarkan kode Anda ke Azure.
  • Ganti penampung sementara <app_name> dengan nama aplikasi yang unik.
  • Nama aplikasi adalah bagian dari nama domain default untuk aplikasi web. Oleh karena itu, namanya harus unik di semua aplikasi di Azure.
  • Anda dapat memetakan entri nama domain kustom ke aplikasi web sebelum mengeksposnya ke pengguna Anda.

Mengonfigurasi Java

Gunakan az appservice web config update untuk mengatur 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

  1. Buka repositori Simple Java Web App for Azure .

  2. Pilih tombol Fork untuk membuat fork repositori ke akun GitHub Anda sendiri.

  3. Buka file Jenkinsfile dengan mengklik nama file.

  4. Pilih ikon pensil untuk mengedit file.

  5. Perbarui ID langganan dan ID penyewa.

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. Perbarui grup sumber daya dan nama aplikasi web Anda masing-masing di baris 22 dan 23.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Memperbarui ID kredensial di instans Jenkins Anda

    withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
    

Membuat alur Jenkins

Lakukan hal berikut untuk membuat alur Jenkins:

  1. Buka Jenkins di browser web.

  2. Pilih Item Baru.

  3. Masukkan nama untuk pekerjaan tersebut.

  4. Pilih Alur.

  5. Pilih OK.

  6. Pilih Alur.

  7. Untuk Definisi, pilih skrip pipeline dari SCM.

  8. Untuk SCM, pilih Git.

  9. Masukkan URL GitHub untuk repositori fork Anda: https:\<forked_repo\>.git

  10. Pilih Simpan

Menguji alur Anda

  1. Masuk ke alur yang Anda buat

  2. Pilih Bangun Sekarang

  3. Setelah build selesai, pilih Keluaran Konsol untuk melihat detail build.

Memverifikasi aplikasi web Anda

Lakukan hal berikut untuk memverifikasi bahwa file WAR berhasil disebarkan ke aplikasi web Anda:

  1. Telusuri KE URL berikut: http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. Anda akan melihat teks yang mirip dengan yang berikut ini:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Arahkan 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>.

    Contoh menjalankan penambahan demo

Menyebarkan ke Azure App Service di Linux

App Service juga dapat menghosting aplikasi web secara asli di Linux untuk tumpukan aplikasi yang didukung. Ini juga dapat menjalankan kontainer Linux kustom (juga dikenal sebagai Aplikasi Web untuk Kontainer.)

Anda dapat mengubah skrip untuk disebarkan ke Azure App Service di Linux. App Service di Linux mendukung Docker. Dengan demikian, Anda menyediakan sebuah Dockerfile yang mengemas aplikasi web Anda dengan runtime layanan menjadi sebuah gambar Docker. Plug-in membangun gambar, mendorongnya ke registri Docker, dan menyebarkan gambar ke aplikasi web Anda.

  1. Lihat 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
    
  2. Pasang Docker di Jenkins Anda.

  3. Pastikan plug-in Docker Pipeline terinstal.

  4. Di repositori yang sama Simple Java Web App for Azure yang Anda fork, edit file Jenkinsfile2 sebagai berikut:

    1. Perbarui ID langganan dan ID penyewa.

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. Perbarui nama grup sumber daya, aplikasi web, dan ACR Anda (gantilah placeholder dengan nilai Anda).

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Memperbarui <azsrvprincipal\> ke ID kredensial Anda

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Buat alur Jenkins baru seperti yang Anda lakukan saat menyebarkan ke aplikasi web Azure di Windows menggunakan Jenkinsfile2.

  6. Jalankan pekerjaan baru Anda.

  7. Untuk memverifikasi, di Azure CLI, jalankan perintah berikut:

    az acr repository list -n <myRegistry> -o json
    

    Anda akan melihat hasil yang mirip dengan yang berikut ini:

    [
    "calculator"
    ]
    
  8. Telusuri http://<app_name>.azurewebsites.net/api/calculator/ping (gantikan placeholder). Anda akan melihat hasil yang serupa dengan berikut ini:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. Buka http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y> (mengganti placeholder). Nilai yang Anda tentukan untuk x dan y dijumlahkan dan ditampilkan.

Langkah selanjutnya