Aracılığıyla paylaş


GitHub Actions kullanarak sürekli teslim

GitHub Actions iş akışını kullanarak Azure İşlevleri'da otomatik olarak kod oluşturup işlev uygulamanıza kod dağıtacak bir iş akışı tanımlayabilirsiniz.

İş akışı yapılandırmasını tanımlayan bir YAML dosyası (.yml) deponuzdaki /.github/workflows/ yolda tutulur. Bu tanım, işlevlerinizin geliştirme diline özgü olan iş akışını oluşturan eylemleri ve parametreleri içerir. İşlevler için GitHub Actions iş akışı, dilden bağımsız olarak aşağıdaki görevleri gerçekleştirir:

  1. Ortamı ayarlayın.
  2. Kod projesini oluşturun.
  3. Paketi Azure'daki bir işlev uygulamasına dağıtın.

Azure İşlevleri eylemi, Azure'daki mevcut bir işlev uygulamasına dağıtımı işler.

Dağıtımınız için el ile bir iş akışı yapılandırma dosyası oluşturabilirsiniz. Dosyayı dile özgü şablonlar kümesinden şu yollardan biriyle de oluşturabilirsiniz:

  • Azure portalında
  • Azure CLI'yı kullanma
  • GitHub deponuzdan

YAML dosyanızı el ile oluşturmak istemiyorsanız makalenin üst kısmından farklı bir yöntem seçin.

Önkoşullar

Dağıtım kimlik bilgileri oluşturma

GitHub Actions dağıtım sırasında işlev uygulamanıza erişmek için yayımlama profilinizi kullandığından, önce yayımlama profilinizi almanız ve güvenli bir şekilde GitHub gizli dizisi olarak depolamanız gerekir.

Önemli

Yayımlama profili, Azure kaynaklarına erişim sağlayan değerli bir kimlik bilgisidir. Her zaman güvenli bir şekilde taşıdığınızdan ve depoladığınızdan emin olun. GitHub'da yayımlama profili yalnızca GitHub gizli dizilerinde depolanmalıdır.

Yayımlama profilinizi indirme

İşlev uygulamanızın yayımlama profilini indirmek için:

  1. İşlev uygulamasının Genel Bakış sayfasını ve ardından Yayımlama profilini al'ı seçin.

    Yayımlama profilini indir

  2. Dosyanın içeriğini kaydedin ve kopyalayın.

GitHub gizli dizisini ekleme

  1. GitHub'da deponuza gidin.

  2. Ayarlar'a gidin.

  3. Gizli Diziler ve değişkenler Eylemler'i >seçin.

  4. Yeni depo gizli dizisi'ni seçin.

  5. Adı AZURE_FUNCTIONAPP_PUBLISH_PROFILE ve değeri yayımlama profili dosyasının içeriğine ayarlanmış yeni bir gizli dizi ekleyin.

  6. Add secret (Gizli dizi ekle) öğesini seçin.

GitHub artık Azure'daki işlev uygulamanızda kimlik doğrulaması yapabilir.

Şablondan iş akışı oluşturma

El ile iş akışı yapılandırması oluşturmanın en iyi yolu resmi olarak desteklenen şablondan başlamaktır.

  1. Doğru işletim sistemi şablonunu aldığınızdan emin olmak için Windows veya Linux'ı seçin.

    Windows'a yapılan dağıtımlarda kullanılır runs-on: windows-latest.

  2. Aşağıdaki bağlantıyı kullanarak Azure İşlevleri eylemleri deposundan dile özgü şablonu kopyalayın:

  3. parametresini env.AZURE_FUNCTIONAPP_NAME Azure'daki işlev uygulaması kaynağınızın adıyla güncelleştirin. İsteğe bağlı olarak, uygulamanız tarafından kullanılan dil sürümünü ayarlayan parametreyi güncelleştirmeniz gerekebilir( örneğin DOTNET_VERSION C# için).

  4. Bu yeni YAML dosyasını deponuzdaki /.github/workflows/ yola ekleyin.

Portalda iş akışı yapılandırmasını oluşturma

GitHub Actions'ı etkinleştirmek için portalı kullandığınızda İşlevler, uygulama yığınınızı temel alan bir iş akışı dosyası oluşturur ve bunu doğru dizindeki GitHub deponuza işler.

Portal, yayımlama profilinizi otomatik olarak alır ve deponuzun GitHub gizli dizilerine ekler.

İşlev uygulaması oluşturma sırasında

Azure portalında bir işlev oluşturduğunuzda Dağıtım sekmesi aracılığıyla GitHub Actions ile hızlı bir şekilde çalışmaya başlayabilirsiniz. Yeni bir işlev uygulaması oluştururken GitHub Actions iş akışı eklemek için:

  1. Azure portalında İşlev Uygulaması Oluştur akışında Dağıtım'ı seçin.

    İşlevler menüsündeki Dağıtım seçeneğinin ekran görüntüsü.

  2. Her kod güncelleştirmesinin Azure portalına bir kod gönderimi tetiklemesini istiyorsanız Sürekli Dağıtım'ı etkinleştirin.

  3. GitHub kuruluşunuzu, deponuzu ve dalınızı girin.

    GitHub kullanıcı hesabı ayrıntılarının ekran görüntüsü.

  4. İşlev uygulamanızı yapılandırmayı tamamlayın. GitHub deponuz artık içinde /.github/workflows/yeni bir iş akışı dosyası içeriyor.

Mevcut bir işlev uygulaması için

Mevcut bir işlev uygulamasına GitHub Actions iş akışı eklemek için:

  1. Azure portalında işlev uygulamanıza gidin ve Dağıtım Merkezi'ni seçin.

  2. Kaynak için GitHub'ı seçin. GitHub Actions ile oluşturma varsayılan iletisini görmüyorsanız Sağlayıcıyı değiştir'i ve GitHub Actions'ı seçin ve Tamam'ı seçin.

  3. GitHub erişimine henüz yetki vermediyseniz Yetkilendir'i seçin. GitHub kimlik bilgilerinizi sağlayın ve Oturum aç'ı seçin. Farklı bir GitHub hesabını yetkilendirmek için Hesabı Değiştir'i seçin ve başka bir hesapla oturum açın.

  4. GitHub Kuruluşunuzu, Deponuzu ve Dalınızı seçin. GitHub Actions ile dağıtmak için bu depoya yazma erişiminiz olmalıdır.

  5. Kimlik doğrulama ayarlarında GitHub Actions'ın Kullanıcı tarafından atanan kimlikle mi yoksa Temel kimlik doğrulaması kimlik bilgileriyle mi kimlik doğrulaması gerçekleştireceğini seçin. Temel kimlik doğrulaması için geçerli kimlik bilgileri kullanılır.

  6. GitHub deponuza eklenen iş akışı dosyasını görmek için Önizleme dosyası'nıgithub/workflows/seçin.

  7. İş akışı dosyasını deponuza eklemek için Kaydet'i seçin.

Deponuza iş akışı yapılandırması ekleme

komutunu kullanarak az functionapp deployment github-actions add işlev uygulamanız için doğru şablondan bir iş akışı yapılandırma dosyası oluşturabilirsiniz. Yeni YAML dosyası daha sonra sağladığınız GitHub deposunda doğru konumda (/.github/workflows/) depolanırken, uygulamanızın yayımlama profili dosyası aynı depodaki GitHub gizli dizilerine eklenir.

  1. , ve MyFunctionappdeğerlerini githubUser/githubRepoMyResourceGroupdeğiştirerek bu az functionapp komutu çalıştırın:

    az functionapp deployment github-actions add --repo "githubUser/githubRepo" -g MyResourceGroup -n MyFunctionapp --login-with-github
    

    Bu komut, GitHub hesabınız için kişisel erişim belirtecini almak için etkileşimli bir yöntem kullanır.

  2. Terminal pencerenizde aşağıdaki iletiye benzer bir şey görmeniz gerekir:

    Please navigate to https://github.com/login/device and enter the user code XXXX-XXXX to activate and retrieve your GitHub personal access token.
    
  3. Benzersiz XXXX-XXXX kodu kopyalayın, adresine https://github.com/login/devicegidin ve kopyaladığınız kodu girin. Kodunuzu girdikten sonra aşağıdaki iletiye benzer bir şey görmeniz gerekir:

    Verified GitHub repo and branch
    Getting workflow template using runtime: java
    Filling workflow template with name: func-app-123, branch: main, version: 8, slot: production, build_path: .
    Adding publish profile to GitHub
    Fetching publish profile with secrets for the app 'func-app-123'
    Creating new workflow file: .github/workflows/master_func-app-123.yml
    
  4. GitHub deponuza gidin ve Eylemler'i seçin. İş akışınızın çalıştığını doğrulayın.

İş akışı yapılandırma dosyasını oluşturma

GitHub Actions iş akışı yapılandırma dosyasını doğrudan GitHub deponuzdan Azure İşlevleri şablonlarından oluşturabilirsiniz.

  1. GitHub'da deponuza gidin.

  2. Eylemler ve Yeni iş akışı'ı seçin.

  3. İşlevleri arayın.

    GitHub Actions işlev şablonları arama işleminin ekran görüntüsü.

  4. Microsoft Azure tarafından yazılan görüntülenen işlevler uygulaması iş akışlarında, kod dilinizle eşleşeni bulun ve Yapılandır'ı seçin.

  5. Yeni oluşturulan YAML dosyasında parametresini env.AZURE_FUNCTIONAPP_NAME Azure'daki işlev uygulaması kaynağınızın adıyla güncelleştirin. İsteğe bağlı olarak, uygulamanız tarafından kullanılan dil sürümünü ayarlayan parametreyi güncelleştirmeniz gerekebilir( örneğin DOTNET_VERSION C# için).

  6. Yeni iş akışı dosyasının kaydedildiğini /.github/workflows/ doğrulayın ve Değişiklikleri işle...'i seçin.

İş akışı yapılandırmasını güncelleştirme

Herhangi bir nedenle mevcut iş akışı yapılandırmasını güncelleştirmeniz veya değiştirmeniz gerekiyorsa deponuzdaki konuma gitmeniz /.github/workflows/ , belirli BIR YAML dosyasını açmanız, gerekli değişiklikleri yapmanız ve ardından güncelleştirmeleri depoya kaydetmeniz yeterlidir.

Örnek: iş akışı yapılandırma dosyası

Aşağıdaki şablon örneği, kimlik doğrulaması için ve'nin functions-actionpublish profile 1. sürümünü kullanır. Şablon, seçtiğiniz dile ve işlev uygulamanızın dağıtıldığı işletim sistemine bağlıdır:

İşlev uygulamanız Linux üzerinde çalışıyorsa Linux'ı seçin.

name: Deploy DotNet project to Azure Function App

on:
  [push]

env:
  AZURE_FUNCTIONAPP_NAME: 'your-app-name'   # set this to your function app name on Azure
  AZURE_FUNCTIONAPP_PACKAGE_PATH: '.'       # set this to the path to your function app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'                   # set this to the dotnet version to use (e.g. '2.1.x', '3.1.x', '5.0.x')

jobs:
  build-and-deploy:
    runs-on: windows-latest
    environment: dev
    steps:
    - name: 'Checkout GitHub Action'
      uses: actions/checkout@v3

    - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: 'Resolve Project Dependencies Using Dotnet'
      shell: pwsh
      run: |
        pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
        dotnet build --configuration Release --output ./output
        popd

    - name: 'Run Azure Functions Action'
      uses: Azure/functions-action@v1
      id: fa
      with:
        app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
        package: '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output'
        publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}

Azure İşlevleri eylemi

Azure İşlevleri eylemi (Azure/azure-functions), kodunuzun Azure'daki mevcut bir işlev uygulamasında veya uygulamanızdaki belirli bir yuvada nasıl yayımlandığını tanımlar.

Parametreler

Aşağıdaki parametreler en yaygın olarak bu eylemle birlikte kullanılır:

Parametre Açıklama
uygulama adı (Zorunlu) İşlev uygulamanızın adı.
yuva adı (İsteğe bağlı) Dağıtmak istediğiniz belirli bir dağıtım yuvasının adı. Yuva, işlev uygulamanızda zaten mevcut olmalıdır. Belirtilmediğinde kod etkin yuvaya dağıtılır.
publish-profile (İsteğe bağlı) Yayımlama profilinizi içeren GitHub gizli dizisinin adı.

Aşağıdaki parametreler de desteklenir, ancak yalnızca belirli durumlarda kullanılır:

Parametre Açıklama
Paket (İsteğe bağlı) Deponuzda yayımlanması gereken bir alt yol ayarlar. Varsayılan olarak, bu değer olarak .ayarlanır. Bu, GitHub deposundaki tüm dosya ve klasörlerin dağıtıldığı anlamına gelir.
respect-pom-xml (İsteğe bağlı) Yalnızca Java işlevleri için kullanılır. Uygulamanızın dağıtım yapıtının pom.xml dosyasından türetilmesi için gerekli olup olmadığı. Java işlev uygulamalarını dağıtırken bu parametreyi olarak true ve olarak ayarlamanız package.gerekir. Varsayılan olarak, bu parametre olarak falseayarlanır. Bu, parametrenin uygulamanızın package yapıt konumunu (örneğin, ) işaret etmesi gerektiği anlamına gelir. ./target/azure-functions/
respect-funcignore (İsteğe bağlı) GitHub Actions'ın .funcignore dosyanızı, içinde tanımlanan dosya ve klasörleri dışlamak için kullanıp kullanmadığı. true Deponuzda bir .funcignore dosyası olduğunda ve bunu metin düzenleyicisi yapılandırmaları, .vscode/ veya Python sanal ortamı (.venv/) gibi dışlama yollarını ve dosyalarını kullanmak istediğinizde olarak ayarlayın. Varsayılan ayar false değeridir.
Dağıtım sırasında scm-do-build- (İsteğe bağlı) App Service dağıtım sitesinin (Kudu) dağıtım öncesi işlemleri gerçekleştirip gerçekleştirmediği. İşlev uygulamanızın dağıtım sitesini adresinde https://<APP_NAME>.scm.azurewebsites.net/bulabilirsiniz. GitHub Actions iş akışındaki bağımlılıkları çözümlemek yerine Kudu'daki dağıtımları denetlemeniz gerektiğinde olarak bu ayarı true değiştirin. Varsayılan değer şudur: false. Daha fazla bilgi için SCM_DO_BUILD_DURING_DEPLOYMENT ayarına bakın.
enable-oryx-build (İsteğe bağlı) Kudu dağıtım sitesinin Oryx kullanarak proje bağımlılıklarınızı çözümleyip çözümlemediği. true GitHub Actions iş akışı yerine uzak bir derleme kullanarak proje bağımlılıklarınızı çözmek için Oryx kullanmak istediğiniz zaman olarak ayarlayın. olduğunda true, olarak da ayarlamanız scm-do-build-during-deploymenttruegerekir. Varsayılan değer şudur: false.

Dikkat edilmesi gereken noktalar

Azure İşlevleri eylemini kullanırken aşağıdaki noktaları göz önünde bulundurun:

  • GitHub Actions kullanılırken kod, Azure İşlevleri için Zip dağıtımı kullanılarak işlev uygulamanıza dağıtılır.

  • GitHub'ın dağıtım için Azure'a bağlanması için gereken kimlik bilgileri GitHub deponuzda Gizli Diziler olarak depolanır ve dağıtımda olarak secrets.<SECRET_NAME>erişilir.

  • GitHub Actions'ın dağıtım için Azure İşlevleri kimlik doğrulaması yapmanın en kolay yolu yayımlama profili kullanmaktır. Hizmet sorumlusu kullanarak da kimlik doğrulaması yapabilirsiniz. Daha fazla bilgi edinmek için bu GitHub Actions deposuna bakın.

  • Ortamı ayarlama ve derleme çalıştırma eylemleri şablonlardan oluşturulur ve dile özeldir.

  • Şablonlar, derlemenize ve dağıtımınıza özgü ayarları tanımlamak için öğeleri kullanır env .

Sonraki adımlar