Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
- Ortamı ayarlayın.
- Kod projesini oluşturun.
- 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
Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturun.
GitHub hesabı. Hesabınız yoksa ücretsiz olarak kaydolun.
GitHub deposunda kaynak koduyla Azure üzerinde barındırılan çalışan bir işlev uygulaması.
- 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:
Azure portalında işlev uygulamanızın sayfasını bulun, sol sütunda Settings>Configuration genişletin.
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.
İşlev uygulamasının Genel Bakış sayfasına dönün ve ardından Yayımlama profilini al'ı seçin.
Dosyanın içeriğini kaydedin ve kopyalayın.
GitHub sırrını ekle
GitHub içinde deponuza gidin.
Ayarlar'a gidin.
"Gizli veriler ve değişkenler" eylemleri seçin. Yeni depo gizli anahtarını seçin.
Adı
AZURE_FUNCTIONAPP_PUBLISH_PROFILEve değeri yayımlama profili dosyasının içeriğine ayarlanmış yeni bir sır ekleyin.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.
Doğru işletim sistemi şablonunu aldığınızdan emin olmak için Windows veya Linux seçin.
Aşağıdaki bağlantıyı kullanarak Azure Functions eylemleri deposundan dile özgü şablonu kopyalayın:
env.AZURE_FUNCTIONAPP_NAMEparametresini 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ğinDOTNET_VERSIONC# için).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:
Azure portalında İşlev Uygulaması Oluştur akışında Deployment öğesini seçin.
Her kod güncelleştirmesinin Azure portala bir kod göndermeyi tetiklemesini istiyorsanız Continuous Deployment etkinleştirin.
GitHub kuruluşunuzu, deponuzu ve dalınızı girin.
İş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:
Azure portalında işlev uygulamanıza gidin ve Deployment Center öğesini seçin.
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.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.
GitHub Organization, Repository ve Branch seçin. GitHub Actions ile dağıtmak için bu depoya yazma erişiminiz olmalıdır.
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.
'da GitHub deponuza eklenen iş akışı dosyasını görmek için
github/workflows/öğesini seçin.İş 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.
Bu
az functionappkomutunu çalıştırın,githubUser/githubRepo,MyResourceGroup, veMyFunctionappdeğerlerini değiştirerek:az functionapp deployment github-actions add --repo "githubUser/githubRepo" -g MyResourceGroup -n MyFunctionapp --login-with-githubBu komut, GitHub hesabınız için kişisel erişim belirtecini almak için etkileşimli bir yöntem kullanır.
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.Benzersiz
XXXX-XXXXkodu 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.ymlGitHub 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.
GitHub içinde deponuza gidin.
Eylemler ve Yeni iş akışı'ı seçin.
İşlevleri arayın.
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.
Yeni oluşturulan YAML dosyasında
env.AZURE_FUNCTIONAPP_NAMEparametresini 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ğinDOTNET_VERSIONC# için).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:
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.