Öğretici: Jenkins kullanarak Azure Işlevlerine dağıtma

Önemli

Birçok Azure hizmetine Jenkins eklentileri vardır. Bu eklentilerin bazıları 29 Şubat 2024 itibariyle destek dışı olacaktır. Azure CLı, Jenkins 'i Azure hizmetleriyle tümleştirmeye yönelik Şu anda önerilen yoldur. Daha fazla bilgi için Azure Için Jenkins eklentilerimakalesine bakın.

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

Önkoşullar

Kaynak kodunu görüntüleme

bu öğretici için kullanılan kaynak kodu Visual Studio çin GitHubdeposunda bulunur.

Java işlevi oluşturma

Java çalışma zamanı yığını ile bir Java işlevi oluşturmak için Azure Portal veya Azure CLIkullanın.

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

  1. Resource_group > yer tutucusunu 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ırlanacağı açıklanmaktadır:

  1. Azure 'da bir Jenkins sunucusu dağıtın. Jenkins sunucusunun bir örneği zaten yüklü değilse, Azure 'da bir Jenkins sunucusu oluşturun , süreç boyunca size kılavuzluk eder.

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

  3. Jenkins örneğinde, az CLı, Version 2.0.67 veya üzeri sürümünü yükledikten sonra.

  4. Aşağıdaki komutu kullanarak Maven 'yi yüklersiniz:

    sudo apt install -y maven
    
  5. Jenkins örneğinde, bir Terminal isteminde aşağıdaki komutları vererek Azure Functions Core Tools yüklersiniz:

    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 kimlik doğrulaması ve Azure kaynaklarına erişmesi için bir Azure hizmet sorumlusu olması gerekir. Adım adım yönergeler için Azure App Service dağıtma bölümüne bakın.

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

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

    2. Sistem yapılandırmasıaltında, Eklentiyi Yönet' i seçin.

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

    4. Filtre alanına, girin .

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

    Kimlik bilgileri eklentisinin yüklenmesi gerekir.

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

  9. Güvenlikaltında, kimlik bilgilerini Yönet' i seçin.

  10. Kimlik bilgilerialtında (genel)öğesini seçin.

  11. Menüden kimlik bilgileri ekle' yi seçin.

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

    • Tür: tür, parola ile Kullanıcı adıolduğunu doğrulayın.
    • Kullanıcı adı: oluşturulan hizmet sorumlusu uygulama kimliği .
    • Parola: oluşturulan hizmet sorumlusu parolası .
    • ID: kimlik bilgisi tanımlayıcısı .
  13. Tamam’ı seçin.

örnek GitHub depoyu çatal

  1. tek veya hatta örnek uygulama için GitHub depoda oturum açın.

  2. GitHub ' deki sağ üst köşede çatal' ı seçin.

  3. GitHub hesabınızı seçmek ve bu adımları izlemek için istemleri izleyin.

Jenkins işlem hattı oluşturma

Bu bölümde, Jenkinsişlem hattını oluşturursunuz.

  1. Jenkins panosunda bir işlem hattı oluşturun.

  2. Çalıştırma için bir ortamhazırlamayı etkinleştirin.

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

  4. jenkinsfile örneğindekullanmak üzere 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'
             }
         }
     }
    

Oluşturma ve dağıtma

Jenkins işini çalıştırmak artık zaman alabilir.

  1. İlk olarak, Azure IŞLEVLERI http Tetikleyicileri ve bağlamaları makalesindeki yönergeler aracılığıyla yetkilendirme anahtarını edinin.

  2. Tarayıcınızda uygulamanın URL 'sini girin. Yer tutucuları uygun değerlerle değiştirin ve Java işlevi için girdi olarak input_number > 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 çıktıya benzer sonuçlar görürsünüz (tek bir sayı-365-test olarak kullanılır):

    The number 365 is Odd.
    

Kaynakları temizleme

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

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

Sonraki adımlar