GitHub Actions kullanarak sürekli teslimat

GitHub Actions iş akışı kullanarak Azure Functions'da işlev uygulamanıza otomatik olarak kod oluşturup 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 bir işlev uygulamasına dağıtın.

Azure Functions eylemi, Azure'da 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 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

  • Yerel geliştirme sırasında Azure CLI'yı kullanırken. Azure Cloud Shell'da da Azure CLI kullanabilirsiniz.

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 GitHub gizli dizi olarak güvenli bir şekilde depolamanız gerekir.

Önemli

Yayımlama profili, Azure kaynaklara 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ınlama profili yalnızca GitHub gizli bilgilerde depolanmalıdır.

Yayımlama profilinizi indirin

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

  1. Azure portalında işlev uygulamanızın sayfasını bulun, sol sütunda Settings>Configuration genişletin.

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

  3. İşlev uygulamasının Genel Bakış sayfasına dönün ve ardından Yayımlama profilini al'ı seçin.

    Yayımlama profilini indir

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

GitHub sırrını ekle

  1. GitHub içinde deponuza gidin.

  2. Ayarlar'a gidin.

  3. "Gizli veriler ve değişkenler" eylemleri seçin.

  4. Yeni depo gizli anahtarını seçin.

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

  6. Gizli ekle seçeneğini seçin.

GitHub artık Azure'da 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 dağıtımları runs-on: windows-latest kullanır.

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

  3. env.AZURE_FUNCTIONAPP_NAME parametresini Azure 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 anahtarlarına ekler.

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

Azure portalında bir işlev oluşturduğunuzda Dağıtım sekmesinden GitHub Actions kullanmaya hızlı bir şekilde 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 Deployment öğesini seçin.

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

  2. Her kod güncelleştirmesinin Azure portala bir kod göndermeyi tetiklemesini istiyorsanız Continuous Deployment etkinleştirin.

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

    SB0>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 /.github/workflows/'da yeni bir iş akışı dosyası içeriyor.

Mevcut bir işlev uygulaması için

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

  1. Azure portalında işlev uygulamanıza gidin ve Deployment Center öğesini seçin.

  2. Source GitHub öğesini seçin. varsayılan ileti Building with GitHub Actions seçeneğini görmüyorsanız Change providerGitHub Actions öğesini seçin ve OK öğesini seçin.

  3. GitHub erişimi henüz yetkilendirmediyseniz Authorize öğesini seçin. GitHub kimlik bilgilerinizi sağlayın ve Sign in öğesini seçin. Farklı bir GitHub hesabını yetkilendirmek için Change Account öğesini seçin ve başka bir hesapla oturum açın.

  4. GitHub Organization, Repository ve Branch seçin. GitHub Actions ile dağıtmak için bu depoya yazma erişiminiz olmalıdır.

  5. Authentication settings içinde, User tarafından atanan kimlik veya Basic authentication kimlik bilgileriyle GitHub Actions kimlik doğrulaması yapılıp yapılmayacağını seçin. Temel kimlik doğrulaması için geçerli kimlik bilgileri kullanılır.

  6. 'da GitHub deponuza eklenen iş akışı dosyasını görmek için github/workflows/ öğesini 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 dizilere eklenir.

  1. Bu az functionapp komutunu çalıştırın, githubUser/githubRepo, MyResourceGroup, ve MyFunctionapp değerlerini değiştirerek:

    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 Actions öğesini 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 Functions şablonlarından oluşturabilirsiniz.

  1. GitHub içinde deponuza gidin.

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

  3. İşlevleri arayın.

    GitHub Actions işlev şablonları için arama 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 Configure öğesini seçin.

  5. Yeni oluşturulan YAML dosyasında env.AZURE_FUNCTIONAPP_NAME parametresini Azure 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 bir iş akışı yapılandırmasını güncelleştirmeniz veya değiştirmeniz gerekiyorsa, deponuzdaki konuma gidin /.github/workflows/ , belirli YAML dosyasını açın, gerekli değişiklikleri yapın ve ardından güncelleştirmeleri depoya işleyin.

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

Aşağıdaki şablon örneği, kimlik doğrulaması için functions-action'ün 1. sürümünü ve bir publish profile 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 Functions eylemi

Azure Functions eylemi (Azure/functions-action), 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 ve bu da 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 bilgileri kullanılırken veya Flex olmayan bir Tüketim planına dağıttığınızda, İşlem parametre değerini kendisi çözebilir, bu nedenle parametreyi dahil etmenize gerek yoktur.
uzaktan derleme Bunu true olarak ayarlayın ki paket bir Flex Consumption uygulamasına dağıtıldığında Kudu'dan bir derleme işlemi etkinleşsin. 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 ayarını yapmayın. Varsayılan olarak, bu parametre falseolarak ayarlanır.

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

Parametre Açıklama
scm-do-build-during-deployment (İ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ı çözmek yerine Kudu kullanarak dağıtım davranışlarını denetlemek istediğinizde bunu true olarak 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, scm-do-build-during-deployment ve enable-oryx-build değerlerini true olarak ayarlayın.

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

Parametre Açıklama
yuva adı Bu, üzerine dağıtım yapılacak olan dağıtım yuvasının 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 publish-profile parametresinin üretim sitesi yerine yuvanın kimlik bilgilerini içerdiğinden emin olun. Esnek Tüketim'de şu anda desteklenmiyor.
yayın-profili GitHub sırının yayımlama profilinizi içeren 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 true olarak ve package. olarak ayarlamanız 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ızdaki belirtilen dosya ve klasörleri dışlamak için bu dosyaya uyup uymadığı. Deponuzda bir .funcignore dosyası olduğunda ve metin düzenleyicisi yapılandırmaları, .vscode/ veya Python sanal ortamı (.venv/) gibi yolları ve dosyaları dışlamak istediğinizde bu değeri true olarak ayarlayın. Varsayılan ayar false değeridir.

Dikkat edilmesi gereken noktalar

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

  • GitHub Actions kullanırken kodunuzun dağıtılma şekli, bu tabloda gösterildiği gibi barındırma planınıza bağlıdır:

    Barındırma planı Dağıtım yöntemi
    Esnek Tüketim Tek dağıtım
    Elastik Premium Tüketim'de uygulamalara zip dağıtımı
    Özel (App Service) Tüketim'de uygulamalara zip dağıtımı
    Tüketim Windows: Zip deploy
    Linux: dış paket URL'si*

    * Uygulamalarınızı Linux'ta tüketim planında çalıştırma özelliği kullanımdan kaldırılması planlanıyor. Daha fazla bilgi için Azure Functions Tüketim Planı Barındırma'ya bakın.

  • GitHub tarafından dağıtım için Azure bağlanmak için gereken kimlik bilgileri, GitHub deponuzda Gizli Diziler olarak depolanır ve dağıtımda secrets.<SECRET_NAME> olarak erişilir.

  • GitHub Actions dağıtım için Azure Functions 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 bakınız bu GitHub Actions deposu.

  • 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