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. Azure portalında işlev uygulamanızın sayfasını bulun ve sol sütundaki Ayarlar>Yapılandırması'nı genişletin.

  2. Yapılandırma sayfasında Genel ayarlar sekmesini seçin ve SCM Temel Kimlik Doğrulama Yayımlama Kimlik Bilgileri'nin Açık olduğundan emin olun. Bu ayar Kapalı olduğunda yayımlama profillerini kullanamazsınız, bu nedenle Açık'ı ve ardından Kaydet'i seçin.

  3. İşlev uygulamasının Genel Bakış sayfasına dönün ve yayımlama profili al'ı seçin.

    Yayımlama profilini indir

  4. 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-action publish 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

Tüm işlev uygulaması planları için aşağıdaki parametreler gereklidir:

Parametre Açıklama
uygulama adı İşlev uygulamanızın adı.
paket Bu, projenizde yayımlanacak konumdur. Varsayılan olarak, bu değer olarak .ayarlanır. Bu, GitHub deposundaki tüm dosya ve klasörlerin dağıtılacağı anlamına gelir.

Esnek Tüketim planı için aşağıdaki parametreler gereklidir:

Parametre Açıklama
Sku Publish-profile ile kimlik doğrulaması yaparken bunu olarak flexconsumption ayarlayın. RBAC kimlik bilgilerini kullanırken veya Flex olmayan bir Tüketim planına dağıtırken Eylem değeri çözümleyebilir, bu nedenle parametrenin dahil edilmesi gerekmez.
uzaktan derleme Paket bir Flex Consumption uygulamasına true dağıtıldığında Kudu'dan bir derleme eylemini etkinleştirmek için bunu olarak ayarlayın. Oryx derlemesi her zaman Flex Consumption'da uzak bir derleme sırasında gerçekleştirilir; dağıtım sırasında scm-do-build-veya enable-oryx-build ayarlamayın. Varsayılan olarak, bu parametre olarak falseayarlanır.

Aşağıdaki parametreler Tüketim, Elastik Premium ve App Service (Ayrılmış) planlarına özeldir:

Parametre Açıklama
Dağıtım sırasında scm-do-build- (İsteğe bağlı) Kudu sitesinin (örneğin https://<APP_NAME>.scm.azurewebsites.net/), uzak derlemeler gibi dağıtım öncesi işlemleri gerçekleştirmesine izin verin. Bu, varsayılan olarak olarak falseayarlanır. GitHub iş akışınızdaki bağımlılıkları çözümlemek yerine Kudu kullanarak dağıtım davranışlarını denetlemek istediğinizde olarak true ayarlayın. Daha fazla bilgi için ayara SCM_DO_BUILD_DURING_DEPLOYMENT bakın.
enable-oryx-build (İsteğe bağlı) Kudu sitesinin Oryx ile proje bağımlılıklarınızı çözümlemesine izin verin. Bu, varsayılan olarak olarak falseayarlanır. GitHub İş Akışı yerine bağımlılıklarınızı çözmek için Oryx kullanmak istiyorsanız, hem scm-do-build-during-deployment hem de enable-oryx-build değerini olarak true ayarlayın.

Tüm işlev uygulaması planları için isteğe bağlı parametreler:

Parametre Açıklama
yuva adı Bu, dağıtılacak dağıtım yuvası adıdır. Varsayılan olarak, bu değer boş olduğundan GitHub Eylemi üretim sitenize dağıtılır. Bu ayar üretim dışı bir yuvayı işaret ettiğinde lütfen publish-profile parametresinin üretim sitesi yerine yuvanın kimlik bilgilerini içerdiğinden emin olun. Esnek Tüketim'de şu anda desteklenmiyor.
publish-profile Yayımlama profilinizi içeren GitHub gizli dizisinin adı.
respect-pom-xml 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 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.

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