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.
Kod projenizi Azure'daki bir işlev uygulamasına otomatik olarak dağıtmak için Azure Pipelines'ı kullanın. Azure Pipelines, Azure DevOps kullanarak sürekli tümleştirme (CI) ve sürekli teslim (CD) ile derlemenizi, test etmenizi ve dağıtmanızı sağlar.
YAML işlem hatları, deponuzda bir YAML dosyası kullanılarak tanımlanır. Adım, işlem hattının en küçük yapı taşıdır ve betik veya görev (önceden paketlenmiş betik) olabilir. İşlem hattını oluşturan temel kavramlar ve bileşenler hakkında bilgi edinin.
Kodunuzu dağıtmak için AzureFunctionApp görevini kullanırsınız. Şimdi, bu tabloda karşılaştırılan iki sürümü AzureFunctionAppvardır:
| Karşılaştırma/sürüm | AzureFunctionApp@2 | AzureFunctionApp@1 |
|---|---|---|
| Flex Tüketim planını destekler | ✔ | ❌ |
| Gelişmiş doğrulama desteği içerir* | ✔ | ❌ |
| Ne zaman kullanılır?... | Yeni uygulama dağıtımları için önerilir | Eski dağıtımlar için bakım |
* Gelişmiş doğrulama desteği, hatalar nedeniyle işlem hatlarının başarısız olma olasılığını azaltır.
Makalenin üst kısmında görev sürümünüzü seçin.
Not
Yeni özelliklere ve uzun süreli desteğe erişmek için AzureFunctionApp@1'dan AzureFunctionApp@2'e yükseltin.
Önkoşullar
Bir Azure DevOps kuruluşu. Kuruluşunuz yoksa şimdi ücretsiz olarak bir tane oluşturabilirsiniz. Ekibinizde zaten varsa kullanmak istediğiniz Azure DevOps projesinin yöneticisi olduğunuzdan emin olun.
Microsoft tarafından barındırılan aracılarda işlem hatlarını çalıştırma olanağı. Paralel bir iş satın alabilir veya ücretsiz katman isteyebilirsiniz.
Azure Repos yerine GitHub kullanmayı planlıyorsanız bir GitHub deposuna da ihtiyacınız vardır. GitHub hesabınız yoksa ücretsiz bir hesap oluşturabilirsiniz.
Azure'da kaynak kodu desteklenen bir depoda bulunan mevcut bir işlev uygulaması. Henüz bir Azure İşlevleri kod projeniz yoksa, aşağıdaki dile özgü makaleyi tamamlayarak bir kod oluşturabilirsiniz:
Yerel kod projesini işlev uygulamanızda yayımladıktan sonra GitHub veya Azure Repos deponuza yüklemeyi unutmayın.
Uygulamanızı derleme
- Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
- Projenizde İşlem Hatları sayfasına gidin. Ardından eylemi seçerek yeni bir işlem hattı oluşturun.
- İlk olarak kaynak kodunuzun konumu olarak GitHub'ı seçerek sihirbazın adımlarını izleyin.
- Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin.
- Depo listesi görüntülendiğinde örnek uygulama deponuzu seçin.
- Azure Pipelines deponuzu analiz eder ve bir şablon önerir. Kaydet ve çalıştır'ı seçin, ardından Doğrudan ana dala işle'yi ve ardından Kaydet ve yeniden çalıştır'ı seçin.
- Yeni bir çalıştırma başlatılır. Çalıştırmanın bitmesini bekleyin.
Örnek YAML derleme işlem hatları
Aşağıdaki dile özgü işlem hatları uygulama oluşturmak için kullanılabilir.
Bir .NET uygulaması oluşturmak üzere YAML dosyası oluşturmak için aşağıdaki örneği kullanabilirsiniz:
pool:
vmImage: 'windows-latest'
steps:
- task: UseDotNet@2
displayName: 'Install .NET 8.0 SDK'
inputs:
packageType: 'sdk'
version: '8.0.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
arguments: '--configuration Release --output $(System.DefaultWorkingDirectory)/publish_output'
projects: 'csharp/*.csproj'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
- Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
- Projenizde İşlem Hatları sayfasına gidin. Ardından Yeni işlem hattı'ni seçin.
- Kodunuz nerede? için şu seçeneklerden birini belirleyin:
- GitHub: Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin. Bu bağlantı ilk GitHub bağlantınız olduğunda sihirbaz, DevOps'u GitHub hesaplarınıza bağlama işleminde size yol gösterir.
- Azure Repos Git: Geçerli DevOps projenizde hemen bir depo seçebilirsiniz.
- Depo listesi görüntülendiğinde örnek uygulama deponuzu seçin.
- Azure Pipelines deponuzu analiz eder ve İşlem hattınızı yapılandırma bölümünde olası şablonların bir listesini sağlar. Diliniz için uygun işlev uygulaması şablonunu seçin. Doğru şablonu görmüyorsanız Daha fazla göster'i seçin.
- Kaydet ve çalıştır'ı seçin, ardından Doğrudan ana dala işle'yi ve ardından Kaydet ve yeniden çalıştır'ı seçin.
- Yeni bir çalıştırma başlatılır. Çalıştırmanın bitmesini bekleyin.
Örnek YAML derleme işlem hatları
Aşağıdaki dile özgü işlem hatları uygulama oluşturmak için kullanılabilir.
Bir .NET uygulaması oluşturmak üzere YAML dosyası oluşturmak için aşağıdaki örneği kullanabilirsiniz.
Uygulamanızı oluştururken hatalar görürseniz kullandığınız .NET sürümünün Azure İşlevleri sürümünüzle eşleştiğini doğrulayın. Daha fazla bilgi için bkz. Azure İşlevleri çalışma zamanı sürümlerine genel bakış.
pool:
vmImage: 'windows-latest'
steps:
- task: UseDotNet@2
displayName: 'Install .NET 8.0 SDK'
inputs:
packageType: 'sdk'
version: '8.0.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
arguments: '--configuration Release --output $(System.DefaultWorkingDirectory)/publish_output'
projects: 'csharp/*.csproj'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
Uygulamanızı dağıtma
Azure İşlev Uygulaması Dağıtma v2 göreviyle dağıtım yapacaksınız. Bu görev, giriş olarak bir Azure hizmet bağlantısı gerektirir. Azure hizmet bağlantısı, Azure Pipelines'tan Azure'a bağlanmak için kimlik bilgilerini depolar. İş yükü kimlik federasyonu kullanan bir bağlantı oluşturmanız gerekir.
Azure İşlevleri'ne dağıtmak için, uygulamanızın Linux veya Windows üzerinde çalışıp çalışmadığına bağlı olarak bu kod parçacığını dosyanızın azure-pipelines.yml sonuna ekleyin:
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'windows-latest'
- task: AzureFunctionApp@2 # Add this at the end of your file
inputs:
azureSubscription: <Name of your Azure subscription>
appType: functionApp # this specifies a Windows-based function app
appName: $(appName)
package: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required. Deployment method. Default: auto.
#Uncomment the next lines to deploy to a deployment slot
#Note that deployment slots is not supported for Linux Dynamic SKU
#deployToSlotOrASE: true
#resourceGroupName: '<RESOURCE_GROUP>'
#slotName: '<SLOT_NAME>'
Varsayılan appType Windows (functionApp). Linux'ı olarak ayarlayarak appTypefunctionAppLinuxbelirtebilirsiniz.
Flex Consumption uygulaması Linux üzerinde çalışır ve hem appType: functionAppLinux hem de isFlexConsumption: true değerini ayarlamanız gerekir.
Kod parçacığı, YAML dosyanızdaki derleme adımlarının aracınızdaki klasörde zip arşivini $(System.ArtifactsDirectory) ürettiğini varsayar.
Azure İşlev Uygulaması Dağıtma görevini kullanarak dağıtabilirsiniz. Bu görev, giriş olarak bir Azure hizmet bağlantısı gerektirir. Azure hizmet bağlantısı, Azure Pipelines'tan Azure'a bağlanmak için kimlik bilgilerini depolar.
Önemli
Flex Consumption uygulamasına dağıtım, @v1AzureFunctionApp görevi kullanılarak desteklenmez.
Azure İşlevleri'ne dağıtmak için dosyanızın azure-pipelines.yml sonuna şu kod parçacığını ekleyin:
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: DownloadBuildArtifacts@1 # Add this at the end of your file
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'drop'
itemPattern: '**/*.zip'
downloadPath: '$(System.ArtifactsDirectory)'
- task: AzureFunctionApp@1
inputs:
azureSubscription: $(azureSubscription)
appType: functionAppLinux # default is functionApp
appName: $(appName)
package: $(System.ArtifactsDirectory)/**/*.zip
Linux üzerinde çalışan bir uygulamaya dağıtım yaparken gerekli olan appType'i functionAppLinux olarak ayarlayan bu kısa kod. Varsayılan appType Windows (functionApp).
Örnek, YAML dosyanızdaki derleme adımlarının aracınızdaki klasörde zip arşivini $(System.ArtifactsDirectory) ürettiğini varsayar.
Kapsayıcı dağıtma
Tavsiye
İşlev uygulamanızı özel bir Linux kapsayıcısında barındırmak için Azure Container Apps'te Azure İşlevleri desteğini kullanmanızı öneririz. Daha fazla bilgi için bkz. Azure Container Apps üzerinde Azure İşlevleri'ne genel bakış.
Kapsayıcılı işlev uygulaması dağıtırken, kullandığınız dağıtım görevi belirli barındırma ortamına bağlıdır.
İşlev uygulaması görüntüsünü Azure İşlevleri için iyileştirilmiş bir Azure Container App örneğine dağıtmak için Azure Container Apps Dağıtma görevini (AzureContainerApps) kullanabilirsiniz.
Bu kod, .NET 8 yalıtılmış işlem modeli işlev uygulaması için temel görüntüyü dağıtır:
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzureContainerApps@1
inputs:
azureSubscription: <Name of your Azure subscription>
imageToDeploy: 'mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0'
containerAppName: <Name of your container app>
resourceGroup: <Name of the resource group>
İdeal olan, bu örnekte gösterildiği gibi temel görüntü kullanmak yerine işlem hattında kendi özel kapsayıcınızı oluşturmanızdır. Daha fazla bilgi için bkz. Azure Pipelines'tan Azure Container Apps'e dağıtma.
Yuvaya dağıtma
Önemli
Flex Consumption planı şu anda yuvaları desteklememektedir. Linux uygulamaları tüketim planında çalışırken yuvaları da desteklemez ve gelecekte bu uygulamalara yönelik destek kullanımdan kaldırılacaktır.
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'windows-latest'
- task: AzureFunctionApp@2 # Add this at the end of your file
inputs:
azureSubscription: <Name of your Azure subscription>
appType: functionApp # this specifies a Windows-based function app
appName: $(appName)
package: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required. Deployment method. Default: auto.
deployToSlotOrASE: true
resourceGroupName: '<RESOURCE_GROUP>'
slotName: '<SLOT_NAME>'
İşlev uygulamanızı birden çok yuvaya sahip olacak şekilde yapılandırabilirsiniz. Yuvalar, uygulamanızı güvenli bir şekilde dağıtmanıza ve müşterilerinizin kullanımına sunmadan önce test etmeye olanak sağlar.
Aşağıdaki YAML kod parçacığı, hazırlama yuvasına dağıtmayı ve ardından üretim yuvasına geçmeyi gösterir:
- task: AzureFunctionApp@1
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux
appName: <Name of the function app>
package: $(System.ArtifactsDirectory)/**/*.zip
deployToSlotOrASE: true
resourceGroupName: <Name of the resource group>
slotName: staging
- task: AzureAppServiceManage@0
inputs:
azureSubscription: <Azure service connection>
WebAppName: <name of the function app>
ResourceGroupName: <name of resource group>
SourceSlot: staging
SwapWithProduction: true
Dağıtım yuvalarını kullanırken, dağıtımınızın bir parçası olarak yuva değişimi gerçekleştirmek için aşağıdaki görevi de ekleyebilirsiniz.
- task: AzureAppServiceManage@0
inputs:
azureSubscription: <AZURE_SERVICE_CONNECTION>
WebAppName: <APP_NAME>
ResourceGroupName: <RESOURCE_GROUP>
SourceSlot: <SLOT_NAME>
SwapWithProduction: true
Azure CLI ile işlem hattı oluşturma
Azure'da derleme işlem hattı oluşturmak için komutunu kullanın az functionapp devops-pipeline create. Derleme işlem hattı, deponuzda yapılan kod değişikliklerini derlemek ve yayınlamak için oluşturulur. komutu derleme ve yayın işlem hattını tanımlayan yeni bir YAML dosyası oluşturur ve ardından deponuza işler. Bu komutun önkoşulları kodunuzun konumuna bağlıdır.
Kodunuz GitHub'daysa:
Aboneliğiniz için yazma izinlerine sahip olmanız gerekir.
Azure DevOps'ta proje yöneticisi olmanız gerekir.
Yeterli izinlere sahip bir GitHub kişisel erişim belirteci (PAT) oluşturmak için izinleriniz olmalıdır. Daha fazla bilgi için bkz . GitHub PAT izin gereksinimleri.
Otomatik oluşturulan YAML dosyasını işleyebilmek için GitHub deponuzdaki ana dala işleme izinleriniz olmalıdır.
Kodunuz Azure Repos'taysa:
Aboneliğiniz için yazma izinlerine sahip olmanız gerekir.
Azure DevOps'ta proje yöneticisi olmanız gerekir.