Azure Pipelines ile sürekli teslim
Azure İşlevleri 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.
görevi Azure İşlevleri dağıtmak için kullanacaksınızAzureFunctionApp
. AzureFunctionApp görevinin iki sürümü vardır (AzureFunctionApp@1, AzureFunctionApp@2). AzureFunctionApp@2
, hatalar nedeniyle işlem hatlarının başarısız olma olasılığını azaltan gelişmiş doğrulama desteği içerir.
Makalenin üst kısmında görev sürümünüzü seçin. YAML işlem hatları Azure DevOps 2019 ve önceki sürümlerde kullanılamaz.
Ö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 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:
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
inputs:
command: publish
arguments: '--configuration Release --output publish_output'
projects: '*.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 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.
Azure İşlevleri dağıtmak için dosyanızın azure-pipelines.yml
sonuna aşağıdaki kod parçacığını ekleyin. Varsayılan değer appType
Windows'dur. Linux'ı olarak ayarlayarak appType
functionAppLinux
belirtebilirsiniz. Flex Consumption uygulamasına dağıtım, AzureFunctionApp göreviyle @v1 desteklenmez.
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: AzureFunctionApp@1 # Add this at the end of your file
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux # default is functionApp
appName: $(appName)
package: $(System.ArtifactsDirectory)/**/*.zip
#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 Name>'
#slotName: '<Slot name>'
Kod parçacığı, 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
Her başarılı derlemeden sonra kodunuzu otomatik olarak kapsayıcılı işlev uygulaması olarak dağıtabilirsiniz. Kapsayıcılar hakkında daha fazla bilgi edinmek için bkz. Kapsayıcılarla çalışma ve Azure İşlevleri.
Kapsayıcıya dağıtmanın en basit yolu, Kapsayıcı Dağıtımında Azure İşlev Uygulaması görevini kullanmaktır.
Dağıtmak için YAML dosyanızın sonuna aşağıdaki kod parçacığını ekleyin:
trigger:
- main
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: <Docker registry service connection>
imageRepository: <Name of your image repository>
containerRegistry: <Name of the Azure container registry>
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
tag: '$(Build.BuildId)'
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureFunctionAppContainer@1 # Add this at the end of your file
inputs:
azureSubscription: '<Azure service connection>'
appName: '<Name of the function app>'
imageName: $(containerRegistry)/$(imageRepository):$(tag)
Kod parçacığı Docker görüntüsünü Azure Container Registry'nize gönderir. Kapsayıcı Dağıtımındaki Azure İşlev Uygulaması görevi, belirtilen depodan öğesine karşılık gelen BuildId
uygun Docker görüntüsünü çeker ve görüntüyü dağıtır.
Kapsayıcıyı oluşturma ve kapsayıcı kayıt defterinde yayımlama gibi eksiksiz bir uçtan uca işlem hattı örneği için bu Azure Pipelines kapsayıcı dağıtımı örneğine bakın.
Yuvaya dağıtma
İş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
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.
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:
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
inputs:
command: publish
arguments: '--configuration Release --output publish_output'
projects: '*.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.
Görevin v2 sürümü .NET, Python ve Node için daha yeni uygulama yığınları desteği içerir. Görev, ağ dağıtım öncesi denetimlerini içerir. Dağıtım öncesi sorunlar olduğunda dağıtım durdurulur.
Azure İşlevleri dağıtmak için dosyanızın azure-pipelines.yml
sonuna aşağıdaki kod parçacığını ekleyin. Varsayılan değer appType
Windows'dur. Linux'ı olarak ayarlayarak appType
functionAppLinux
belirtebilirsiniz. Flex Consumption uygulamasına dağıtmak için hem hem isFlexConsumption: true
de appType: functionAppLinux
değerlerini ayarlamanız gerekir.
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <SUBSCRIPTION_NAME>
appName: <APP_NAME>
# Agent VM image name
vmImageName: 'windows-latest'
- task: AzureFunctionApp@2 # Add this at the end of your file
inputs:
azureSubscription: <AZURE_SERVICE_CONNECTION>
appType: functionApp # this specifies a Windows-based function app
appName: $(appName)
package: $(System.ArtifactsDirectory)/**/*.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>'