Öğretici: Jenkins kullanarak Azure İşlevleri dağıtma

Önemli

Birçok Azure hizmeti Jenkins eklentilerine sahiptir. Bu eklentilerden bazıları 29 Şubat 2024 itibarıyla destekten çıkarılacaktır. Azure CLI, Jenkins'i Azure hizmetleriyle tümleştirmenin şu anda önerilen yoludur. Daha fazla bilgi için Azure için Jenkins eklentileri makalesine bakın.

Azure İşlevleri sunucusuz bir işlem hizmetidir. Azure İşlevleri kullanarak altyapıyı sağlamadan veya yönetmeden isteğe bağlı olarak kod çalıştırabilirsiniz. Bu öğreticide, Azure İşlevleri eklentisini kullanarak Azure İşlevleri için bir Java işlevinin nasıl dağıtılacağı gösterilmektedir.

Önkoşullar

Kaynak kodu görüntüleme

Bu öğretici için kullanılan kaynak kodu Visual Studio China GitHub deposunda bulunur.

Java işlevi oluşturma

Java çalışma zamanı yığınıyla bir Java işlevi oluşturmak için Azure portalını veya Azure CLI'yı kullanın.

Aşağıdaki adımlarda, Azure CLI kullanarak bir Java işlevinin nasıl oluşturulacağı gösterilmektedir:

  1. resource_group> yer tutucuyu <kaynak grubu adınızla değiştirerek bir kaynak grubu oluşturun.

    az group create --name <resource_group> --location eastus
    
  2. Yer tutucuları uygun değerlerle değiştirerek bir Azure depolama hesabı oluşturun.

    az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS    
    
  3. Yer tutucuları uygun değerlerle değiştirerek test işlevi uygulamasını oluşturun.

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

Jenkins sunucusunu hazırlama

Aşağıdaki adımlarda Jenkins sunucusunun nasıl hazır yapılacağı açıklanmaktadır:

  1. Azure'da bir Jenkins sunucusu dağıtma. Jenkins sunucusunun bir örneğini henüz yüklemediyseniz Azure'da Jenkins sunucusu oluşturma makalesi bu işlemde size yol gösterir.

  2. Jenkins örneğinde SSH ile oturum açın.

  3. Jenkins örneğinde Az CLI, sürüm 2.0.67 veya üzerini yükleyin.

  4. Aşağıdaki komutu kullanarak maven'i yükleyin:

    sudo apt install -y maven
    
  5. Jenkins örneğinde, terminal isteminde aşağıdaki komutları vererek Azure İşlevleri Core Tools'u yükleyin:

    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'in Azure kaynaklarının kimliğini doğrulamak ve bu kaynaklara erişmek için bir Azure hizmet sorumlusuna ihtiyacı vardır. Adım adım yönergeler için Azure Uygulaması Hizmetine Dağıtma bölümüne bakın.

  7. Kimlik Bilgileri eklentisinin yüklü olduğundan emin olun.

    1. Menüden Jenkins'i Yönet'i seçin.

    2. Sistem Yapılandırması'nın altında Eklentiyi yönet'i seçin.

    3. Yüklü öğeler sekmesini seçin.

    4. Filtre alanına girincredentials.

    5. Kimlik Bilgileri eklentisinin yüklü olduğunu doğrulayın. Aksi takdirde, Kullanılabilir sekmesinden yüklemeniz gerekir.

    The Credentials Plug-in needs to be installed.

  8. Menüden Jenkins'i Yönet'i seçin.

  9. Güvenlik'in altında Kimlik Bilgilerini Yönet'i seçin.

  10. Kimlik bilgileri'nin altında (genel) öğesini seçin.

  11. Menüden Kimlik Bilgileri Ekle'yi seçin.

  12. Microsoft Azure hizmet sorumlunuz için aşağıdaki değerleri girin:

    • Tür: Değerini seçin: Parolalı kullanıcı adı.
    • Kullanıcı adı: Oluşturulan hizmet sorumlusunun değerini belirtin appId .
    • Parola: Hizmet sorumlusunun password (gizli dizisini) belirtin.
    • Kimlik: Gibi azurespkimlik bilgisi tanımlayıcısını belirtin.
  13. Tamam seçeneğini işaretleyin.

Örnek GitHub deposunda çatal oluşturma

  1. Tek veya çift örnek uygulama için GitHub deposunda oturum açın.

  2. GitHub'ın sağ üst köşesinde Çatal'ı seçin.

  3. GitHub hesabınızı seçmek ve çatal oluşturma işlemini tamamlamak için istemleri izleyin.

Jenkins İşlem Hattı Oluşturma

Bu bölümde Jenkins İşlem Hattı'nı oluşturacaksınız.

  1. Jenkins panosunda bir İşlem Hattı oluşturun.

  2. Çalıştırma için ortam hazırlama'yı etkinleştirin.

  3. İşlem Hattı Tanımı> bölümünde SCM'den İşlem hattı betiği'ni seçin.

  4. JenkinsFile örneğinde kullanmak için GitHub çatalınızın URL'sini ve betik yolunu ("doc/resources/jenkins/JenkinsFile") girin.

     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'
             }
         }
     }
    

Derleme ve dağıtma

Şimdi Jenkins işini çalıştırmanın zamanı geldi.

  1. İlk olarak, Azure İşlevleri HTTP tetikleyicileri ve bağlamaları makalesindeki yönergeler aracılığıyla yetkilendirme anahtarını alın.

  2. Tarayıcınızda uygulamanın URL'sini girin. Yer tutucuları uygun değerlerle değiştirin ve Java işlevi için <giriş olarak input_number> için sayısal bir değer belirtin.

    https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>
    
  3. Aşağıdaki örnek çıkışa benzer sonuçlar görürsünüz (burada tek sayı - 365 - test olarak kullanılmıştır):

    The number 365 is Odd.
    

Kaynakları temizleme

Bu uygulamayı kullanmaya devam etmeyecekseniz, aşağıdaki adımla oluşturduğunuz kaynakları silin:

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

Sonraki adımlar