Tutorial: Menyebarkan ke Azure Functions menggunakan Jenkins

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.

Azure Functions adalah layanan komputasi tanpa server. Menggunakan Azure Functions, Anda dapat menjalankan kode sesuai permintaan tanpa menyediakan atau mengelola infrastruktur. Tutorial ini menunjukkan cara menyebarkan fungsi Java ke Azure Functions menggunakan plug-in Azure Functions.

Prasyarat

Meninjau kode sumber

Kode sumber yang digunakan untuk tutorial ini terdapat di Repositori GitHub China Visual Studio.

Membuat fungsi Java

Untuk membuat fungsi Java dengan Java runtime stack, gunakan portal Microsoft Azure atau Azure CLI.

Langkah-langkah berikut menunjukkan cara membuat fungsi Java menggunakan Azure CLI:

  1. Buat grup sumber daya, mengganti tempat penampung <resource_group> dengan nama grup sumber daya Anda.

    az group create --name <resource_group> --location eastus
    
  2. Ganti akun penyimpanan Azure, yang menggantikan tempat penampung dengan nilai yang sesuai.

    az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS    
    
  3. Buat aplikasi fungsi pengujian, yang menggantikan tempat penampung dengan nilai yang sesuai.

    az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
    

Menyiapkan server Jenkins

Langkah-langkah berikut menjelaskan cara menyiapkan server Jenkins:

  1. Menyebarkan server Jenkins di Azure. Jika Anda belum memiliki instans server Jenkins yang diinstal, artikel, Buat server Jenkins di Azure memandu Anda melalui proses tersebut.

  2. Masuk ke instans Jenkins dengan SSH.

  3. Pada instans Jenkins, instal Az CLI, versi 2.0.67 atau yang lebih tinggi.

  4. Instal maven menggunakan perintah berikut:

    sudo apt install -y maven
    
  5. Pada instans Jenkins, instal Azure Functions Core Tools dengan mengeluarkan perintah berikut pada prompt terminal:

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    cat /etc/apt/sources.list.d/dotnetdev.list
    sudo apt-get update
    sudo apt-get install azure-functions-core-tools-3
    
  6. Jenkins membutuhkan perwakilan layanan Azure untuk mengautentikasi dan mengakses sumber daya Azure. Lihat Deploy to Azure App Service untuk petunjuk langkah demi langkah.

  7. Pastikan plug-in Credentials diinstal.

    1. Dari menu, pilih Kelola Jenkins.

    2. Di bawah Konfigurasi Sistem, pilih Kelola plug-in.

    3. Pilih tab Terinstal.

    4. Pada bidang filter, masukkan credentials.

    5. Pastikan plug-in Kredensial diinstal. Jika tidak, Anda harus menginstalnya dari tab Tersedia.

    The Credentials Plug-in needs to be installed.

  8. Dari menu, pilih Kelola Jenkins.

  9. Di bawah Keamanan, pilih Kelola Kredensial.

  10. Di bawah Kredensial, pilih (global).

  11. Dari menu, pilih Tambahkan Kredensial.

  12. Masukkan nilai berikut untuk perwakilan layanan Microsoft Azure Anda:

    • Jenis: Pilih nilai: Nama pengguna dengan kata sandi.
    • Nama pengguna: Tentukan appId dari perwakilan layanan yang dibuat.
    • Kata sandi: Tentukan (rahasia)password dari perwakilan layanan.
    • ID: Tentukan pengenal kredensial, seperti azuresp.
  13. Pilih OK.

Fork sampel repositori GitHub

  1. Masuk ke repositori GitHub untuk aplikasi sampel ganjil atau genap.

  2. Di sudut kanan atas di GitHub, pilih Fork.

  3. Ikuti petunjuk untuk memilih akun GitHub Anda dan selesaikan forking.

Membuat Alur Jenkins

Di bagian ini, Anda membuat Alur Jenkins.

  1. Di dasbor Jenkins, buat Alur.

  2. Aktifkan Siapkan lingkungan untuk menjalankan.

  3. Di bagian Definisi >Alur, pilih Skrip alur dari SCM.

  4. Masukkan URL GitHub fork dan jalur skrip Anda ("doc/resources/jenkins/JenkinsFile") untuk digunakan dalam contoh JenkinsFile.

     node {
     withEnv(['AZURE_SUBSCRIPTION_ID=99999999-9999-9999-9999-999999999999',
             'AZURE_TENANT_ID=99999999-9999-9999-9999-999999999999']) {
         stage('Init') {
             cleanWs()
             checkout scm
         }
    
         stage('Build') {
             sh 'mvn clean package'
         }
    
         stage('Publish') {
             def RESOURCE_GROUP = '<resource_group>' 
             def FUNC_NAME = '<function_app>'
             // login Azure
             withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
             sh '''
                 az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
                 az account set -s $AZURE_SUBSCRIPTION_ID
             '''
             }
             sh 'cd $PWD/target/azure-functions/odd-or-even-function-sample && zip -r ../../../archive.zip ./* && cd -'
             sh "az functionapp deployment source config-zip -g $RESOURCE_GROUP -n $FUNC_NAME --src archive.zip"
             sh 'az logout'
             }
         }
     }
    

Membuat dan menyebarkan

Sekarang saatnya untuk menjalankan pekerjaan Jenkins.

  1. Pertama, dapatkan kunci otorisasi melalui instruksi di artikel pemicu dan pengikatan HTTP Azure Functions.

  2. Di browser Anda, masukkan URL aplikasi. Ganti tempat penampung dengan nilai yang sesuai dan tentukan nilai numerik untuk <input_number> sebagai input untuk fungsi Java.

    https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>
    
  3. Anda akan melihat hasil yang mirip dengan output contoh berikut (di mana angka ganjil - 365 - digunakan sebagai pengujian):

    The number 365 is Odd.
    

Membersihkan sumber daya

Jika Anda tidak akan terus menggunakan aplikasi ini, hapus sumber daya yang Anda buat dengan langkah-langkah berikut:

az group delete -y --no-wait -n <resource_group>

Langkah berikutnya