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:
- Ortamı ayarlayın.
- Kod projesini oluşturun.
- 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
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
Bir GitHub hesabı. Hesabınız yoksa ücretsiz olarak kaydolun.
GitHub deposunda kaynak koduyla Azure'da barındırılan çalışan bir işlev uygulaması.
- Yerel olarak geliştirme yaparken Azure CLI. Azure Cloud Shell'de Azure CLI'yi de 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 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:
Azure portalında işlev uygulamanızın sayfasını bulun ve sol sütundaki Ayarlar>Yapılandırması'nı genişletin.
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.
İşlev uygulamasının Genel Bakış sayfasına dönün ve yayımlama profili al'ı seçin.
Dosyanın içeriğini kaydedin ve kopyalayın.
GitHub gizli dizisini ekleme
Ayarlar'a gidin.
Gizli Diziler ve değişkenler Eylemler'i >seçin.
Yeni depo gizli dizisi'ni seçin.
Adı
AZURE_FUNCTIONAPP_PUBLISH_PROFILE
ve değeri yayımlama profili dosyasının içeriğine ayarlanmış yeni bir gizli dizi ekleyin.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.
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 İşlevleri eylemleri deposundan dile özgü şablonu kopyalayın:
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ğinDOTNET_VERSION
C# 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 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:
Azure portalında İşlev Uygulaması Oluştur akışında Dağıtım'ı seçin.
Her kod güncelleştirmesinin Azure portalına bir kod gönderimi tetiklemesini istiyorsanız Sürekli Dağıtım'ı etkinleştirin.
GitHub kuruluşunuzu, deponuzu ve dalınızı girin.
İş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:
Azure portalında işlev uygulamanıza gidin ve Dağıtım Merkezi'ni seçin.
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.
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.
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.
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.
GitHub deponuza eklenen iş akışı dosyasını görmek için Önizleme dosyası'nı
github/workflows/
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 dizilerine eklenir.
, ve
MyFunctionapp
değerlerinigithubUser/githubRepo
MyResourceGroup
değiştirerek buaz 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.
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-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
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.
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 Yapılandır'ı seçin.
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ğinDOTNET_VERSION
C# 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 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:
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 false ayarlanı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 false ayarlanı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 false ayarlanı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 false ayarlanı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
.