Bagikan melalui


Tutorial: Menyebarkan aplikasi ke Azure Spring Apps menggunakan Jenkins dan Azure CLI

Catatan

Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara saat kami berupaya memperbarui aset seperti cuplikan layar, video, dan diagram.

Azure Spring Apps adalah pengembangan layanan mikro yang dikelola sepenuhnya dengan penemuan layanan bawaan dan manajemen konfigurasi. Layanan ini memudahkan penyebaran aplikasi layanan mikro berbasis Spring Boot ke Azure. Tutorial ini menunjukkan bagaimana Anda dapat menggunakan Azure CLI di Jenkins untuk mengotomatiskan integrasi dan pengiriman berkelanjutan (CI/CD) untuk Azure Spring Apps.

Dalam tutorial ini, Anda akan menyelesaikan tugas-tugas ini:

  • Menyediakan instans layanan dan meluncurkan aplikasi Java Spring
  • Menyiapkan server Jenkins Anda
  • Menggunakan Azure CLI dalam alur Jenkins untuk membangun dan menyebarkan aplikasi layanan mikro

Prasyarat

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

Menyediakan instans layanan dan meluncurkan aplikasi Java Spring

Kami menggunakan Piggy Metrics sebagai contoh aplikasi layanan Microsoft dan mengikuti langkah yang sama di Mulai Cepat: Meluncurkan aplikasi Java Spring menggunakan Azure CLI untuk menyediakan instans layanan dan menyiapkan aplikasi. Jika Anda sudah melalui proses yang sama, Anda dapat melompat ke bagian berikutnya. Jika tidak, berikut ini disertakan perintah Azure CLI. Lihat Mulai Cepat: Meluncurkan aplikasi Java Spring menggunakan Azure CLI untuk mendapatkan informasi lebih lanjut.

Komputer lokal Anda harus memenuhi prasyarat yang sama dengan server build Jenkins. Pastikan hal berikut ini dipasang untuk membangun dan menyebarkan aplikasi layanan mikro:

  1. Instal ekstensi Azure Spring Apps:

    az extension add --name spring
    
  2. Buat grup sumber daya untuk berisi layanan Azure Spring Apps Anda:

    az group create --location eastus --name <resource group name>
    
  3. Provisikan instans Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. Fork repositori Piggy Metrics ke akun GitHub Anda sendiri. Di mesin komputer lokal Anda, klon repositori Anda di direktori yang disebut source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Menyiapkan server konfigurasi Anda. Pastikan Anda mengganti <id GitHub Anda> dengan nilai yang benar.

    az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
    
  6. Bangun proyek:

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Buat tiga layanan mikro: gateway, auth-service, dan account-service:

    az spring app create --n gateway -s <service name> -g <resource group name>
    az spring app create --n auth-service -s <service name> -g <resource group name>
    az spring app create --n account-service -s <service name> -g <resource group name>
    
  8. Sebarkan aplikasi:

    az spring app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar
    az spring app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar
    az spring app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jar
    
  9. Tetapkan titik akhir publik ke gateway:

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Kueri aplikasi gateway untuk mendapatkan url sehingga Anda dapat memverifikasi bahwa aplikasi sedang berjalan.

    az spring app show --name gateway | grep url
    
  11. Navigasikan ke URL yang disediakan oleh perintah sebelumnya untuk menjalankan aplikasi PiggyMetrics.

Menyiapkan server Jenkins

Di bagian ini, Anda menyiapkan server Jenkins untuk menjalankan build, yang siap untuk pengujian. Namun, karena implikasi keamanan, Anda harus menggunakan agen Azure mesin virtual atau agen Azure Container untuk men-spin up agen di Azure untuk menjalankan build Anda.

Memasang plug-in

  1. Masuk ke server Jenkins Anda.

  2. Pilih Kelola Jenkins.

  3. Pilih Kelola Plugin.

  4. Pada tab Tersedia, pilih plug-in berikut:

    Jika plug-in ini tidak muncul dalam daftar, periksa tab Terpasang untuk melihat apakah mereka sudah diinstal.

  5. Untuk memasang plug-in, pilih Unduh sekarang dan pasang setelah hidupkan ulang.

  6. Hidupkan ulang server Jenkins Anda untuk menyelesaikan penginstalan.

Menambahkan informasi masuk Azure Service Principal Anda di penyimpanan informasi masuk Jenkins

  1. Anda memerlukan Azure Service Principal untuk menyebarkan ke Azure. Untuk informasi selengkapnya, lihat bagian Membuat perwakilan layanan di tutorial Menyebarkan ke Azure App Service. Output dari az ad sp create-for-rbac terlihat seperti ini:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. Di dasbor Jenkins, pilih Informasi masuk>Sistem. Kemudian, pilih Informasi masuk global (tidak terbatas).

  3. Pilih Tambahkan Kredensial.

  4. Pilih Microsoft Azure Service Principal sebagai jenis.

  5. Masukkan nilai untuk bidang berikut ini:

    • ID Langganan: ID langganan Azure
    • ID Klien: ID aplikasi perwakilan layanan
    • Rahasia Klien: Kata sandi perwakilan layanan
    • ID Penyewa: ID penyewa akun Microsoft
    • Lingkungan Azure: Pilih nilai yang sesuai untuk lingkungan Anda. Misalnya, gunakan Azure untuk Azure Global
    • ID: Ditetapkan sebagai azure_service_principal. Kita menggunakan ID ini di langkah selanjutnya pada artikel ini
    • Deskripsi: Nilai ini bersifat opsional, tetapi direkomendasikan dari sudut pandang dokumentasi/pemeliharaan.

Menginstal ekstensi spring Maven dan Azure CLI

Alur sampel menggunakan Maven untuk membangun dan Azure CLI untuk menyebarkan ke instans layanan. Saat Jenkins dipasang, Jenkins akan membuat akun administrator bernama jenkins. Pastikan bahwa pengguna jenkins memiliki izin untuk menjalankan ekstensi spring.

  1. Sambungkan ke pengendali Jenkins melalui SSH.

  2. Pasang Maven.

    sudo apt-get install maven
    
  3. Verifikasi bahwa Azure CLI dipasang dengan memasukkan az version. Jika Azure CLI belum terpasang, lihat Memasang Azure CLI.

  4. Beralih ke jenkins pengguna:

    sudo su jenkins
    
  5. Pasang ekstensi spring:

    az extension add --name spring
    

Membuat Jenkinsfile

  1. Dalam repositori Anda sendiri - https://github.com/your_github_id/piggymetrics - buat Jenkinsfile di root.

  2. Perbarui file sebagai berikut. Pastikan Anda mengganti nilai <nama grup sumber daya> dan <.nama layanan>. Ganti azure_service_principal dengan ID yang tepat jika Anda menggunakan nilai yang berbeda saat menambahkan informasi masuk di Jenkins.

        node {
          stage('init') {
            checkout scm
          }
          stage('build') {
            sh 'mvn clean package'
          }
          stage('deploy') {
            withCredentials([azureServicePrincipal('azure_service_principal')]) {
              // Log in to Azure
              sh '''
                az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
                az account set -s $AZURE_SUBSCRIPTION_ID
              '''  
              // Set default resource group name and service name. Replace <resource group name> and <service name> with the right values
              sh 'az config set defaults.group=<resource group name>'
              sh 'az config set defaults.spring=<service name>'
    
              // Deploy applications
              sh 'az spring app deploy -n gateway --jar-path ./gateway/target/gateway.jar'
              sh 'az spring app deploy -n account-service --jar-path ./account-service/target/account-service.jar'
              sh 'az spring app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar'
              sh 'az logout'
            }
          }
        }
    
  3. Simpan dan terapkan perubahan.

Membuat pekerjaan

  1. Di dasbor Jenkins, pilih Item Baru.

  2. Berikan nama, Deploy-PiggyMetrics untuk pekerjaan tersebut dan pilih Alur. Klik OK.

  3. Pilih tab Alur.

  4. Untuk Definisi, pilih Skrip alur dari SCM.

  5. Untuk SCM, pilih Git.

  6. Masukkan URL GitHub untuk repositori Anda yang di-fork: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. Untuk Branch Specifier (hitam untuk 'any'), pilih /Azure.

  8. Untuk Jalur skrip, pilih Jenkinsfile.

  9. Pilih Simpan

Validasi dan jalankan pekerjaan

Sebelum menjalankan pekerjaan, edit teks di kotak input masuk untuk masukkan ID masuk.

  1. Di repositori Anda, buka index.html di /gateway/src/main/resources/static/.

  2. Cari enter your login dan perbarui teks tersebut menjadi enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Simpan dan terapkan perubahan.

  4. Jalankan pekerjaan di Jenkins secara manual. Di dasbor Jenkins, pilih pekerjaan Deploy-PiggyMetrics lalu pilih Bangun sekarang.

Setelah pekerjaan selesai, navigasikan ke IP publik aplikasi gateway dan verifikasi bahwa aplikasi Anda telah diperbarui.

Updated Piggy Metrics

Membersihkan sumber daya

Bila tidak lagi diperlukan, hapus sumber daya yang dibuat dalam artikel ini:

az group delete -y --no-wait -n <resource group name>

Langkah berikutnya