Cloud Services yayımlamak için Azure DevOps'u kullanma (genişletilmiş destek)
Bu makalede, Azure Resource Manager (ARM) şablonunu kullanarak Azure Cloud Services (genişletilmiş destek) dağıtımını oluşturma veya güncelleştirme hakkında yönergeler sağlanır.
Arka plan
Azure Cloud Services (genişletilmiş destek), Azure Cloud Services için yeni bir ARM tabanlı dağıtım modelidir. Cloud Services (genişletilmiş destek), Azure Service Manager kullanılarak dağıtılan Azure Cloud Services ile özellik eşlikinin yanı sıra bölgesel dayanıklılık sağlamanın birincil avantajına sahiptir. Ayrıca rol tabanlı erişim ve denetim (RBAC), etiketler, ilkeler gibi bazı ARM özellikleri sunar ve dağıtım şablonlarını destekler.
Klasik Cloud Services için Azure DevOps yerleşik işlem hattı görevi AzureCloudPowerShellDeployment@1 CI/CD ilerleme durumunun kolayca yönetilmesine yardımcı olabilir. Ancak Cloud Services (genişletilmiş destek) görevi henüz hazır değil.
yayımlama Cloud Services ana noktaları (genişletilmiş destek)
- ARM şablonu dağıtımına hazırlanmak için depolama hesabı için bazı değişkenler tanımlayın.
- VSBuild@1 - Visual Studio derleme v1 görevini kullanarak bulut hizmeti projesini derleyin ve bulut hizmeti paketi dosyasını veya yapılandırma dosyasının çıktısını oluşturun.
- Blob depolamaya derleme dizini yüklemek için yerleşik AzureFileCopy@5 - Azure dosya kopyalama v5 görevini kullanın.
- AzurePowerShell@5 - Azure PowerShell v5 görevine göre SAS belirteci oluşturmak için erişim anahtarı dahil olmak üzere depolama başvuruyu kullanın ve belirteci sonraki görevde kullanılacak bir değişkene çıkış olarak kullanın.
- Önceki görevin çıkışını ve AzureResourceManagerTemplateDeployment@3 - ARM şablonu dağıtımı v3 görevinin değerini kullanın.
Cloud Services yayımlama adımları (genişletilmiş destek)
Başlangıç işlem hattı oluşturun ve depolama hesabına yüklemeye hazırlanın. Bu değişkenler aşağıdaki diğer işlemlerde yardımcı olabilir.
- <Depolama hesabının adını stg_account>
- <depolama hesabının erişim anahtarını stg_key>
- <Depolama hesabının kapsayıcı adını stg_container>
- $[format('{0:yMdDHHmm}', pipeline.startTime)] stg_prefix
- stg_url
https://$(stg_account).blob.core.windows.net/$(stg_container)
- <Yapılandırma dosyasının adını cscfg_name>
- <Paket dosyasının adını cspkg_name>
- $(stg_url)/$(stg_prefix)/$(cscfg_name) url_cscfg
- $(stg_url)/$(stg_prefix)/$(cspkg_name) url_cspkg
Visual Studio derleme görevini kullanarak görevinizi bulut hizmeti proje çözüm dosyanızı temel alarak derleyin ve aracıdaki yerel bir yola gönderin. Daha fazla bilgi için bkz. MSBuild.
Proje derlemek için YAML dosyası aşağıdadır:
# Build your project under your repository. # 1. Restore the NuGet dependency. - task: NuGetCommand@2 inputs: command: 'restore' restoreSolution: '**/*.sln' feedsToUse: 'select' vstsFeed: xxx # 2. Use MS build to output the cloud service project configuration and package to the temporary location of the local agent. - task: VSBuild@1 inputs: solution: '**\*.sln' msbuildArgs: '/t:Publish /p:DeployOnBuild=true /p:AutomatedBuild=True /p:configuration=release /p:TargetProfile=Cloud /p:PublishDir=%SYSTEM_DEFAULTWORKINGDIRECTORY%/Debug/publish' # 3. Copy the configuration and package files to the local path on the agent where any artifacts locate. - task: CopyFiles@2 inputs: SourceFolder: 'Debug/publish' Contents: '**' TargetFolder: '$(Build.ArtifactStagingDirectory)' # 4. Copy the definition file to the local path on the agent where any artifacts locate. - task: CopyFiles@2 inputs: SourceFolder: 'Project' Contents: '*.csdef' TargetFolder: '$(Build.ArtifactStagingDirectory)'
Bulut hizmetinin yapılandırma, tanım ve paket dosyalarını karşıya yüklemek için AzureFileCopy@4 - Azure dosya kopyalama v4 görevini kullanın. Görev, Microsoft Entra ID tabanlı kimlik doğrulamasını destekler. Kimlik doğrulaması bir hizmet sorumlusu ve yönetilen kimlik kullanılarak yapılabilir. Hizmet bağlantılarına erişim izni vermek için Katkıda Bulunan ve Depolama Blob Verileri Katkıda Bulunanı izinlerini atayabilirsiniz.
Hizmet ilkesini proje ayarlarında bulabilirsiniz:
Dosya Kopyalama'nın YAML sürümü:
# Upload the cloud service via Azure File Copy - task: AzureFileCopy@5 inputs: SourcePath: '$(Build.ArtifactsStagingDirectory) /*' # you can set $(Build.ArtifactsStagingDirectory) as Build part for output of the MSBuild. azureSubscription: xxx # the name of service connector Destination: 'AzureBlob' storage: $(stg_account) # variable stg_account ContainerName: $(stg_container) # variable stg_container BlobPrefix: $(stg_prefix) # variable stg prefix is $[format('{0:yyyyMMddHHmm}', pipeline.startTime)] AdditionalArgumentsForBlobCopy: '--recursive' # recursively copy the files in this directory
Dosyayı kopyaladıktan sonra, kopyalanan bulut hizmeti paketini depolama alanında görürsünüz.
Beş dakika boyunca geçici bir SAS belirteci oluşturmak için Azure PowerShell işlem hattı görevini kullanın.
# Generate temp SAS token for 5 mins - task: AzurePowerShell@5 # please make sure the Azure PowerShell contains the module of Az and AzureRm. name: GenerateSasToken inputs: azureSubscription: xxx # the name of service connector ScriptType: 'InlineScript' Inline: | $account_name = ${env:STG_ACCOUNT} $account_key = ${env:STG_KEY} $context = New-AzStorageContext -StorageAccountName $account_name -StorageAccountKey $account_key $sas = New-AzStorageAccountSASToken -Service Blob -ResourceType Service,Container,Object -Permission "rl" -ExpiryTime (Get-Date).AddMinutes(5) -Context $context $cspkg = ${env:URL_CSPKG} + $sas $cscfg = ${env:URL_CSCFG} + $sas Write-Host ("##vso[task.setvariable variable=cspkg]$cspkg") # output $cspkg in PowerShell to global variable cspkg Write-Host ("##vso[task.setvariable variable=cscfg]$cscfg") # output $cscfg in PowerShell to global variable cscfg azurePowerShellVersion: 'LatestVersion'
Cloud Services (genişletilmiş destek) dağıtımını dağıtmak için ARM şablonu işlem hattı görevini kullanın. Örnek şablonu almak için bkz . 101-cses-multirole-rdp.
#Azure Resource Manager template deployment - task: AzureResourceManagerTemplateDeployment@3 inputs: deploymentScope: 'Resource Group' # resource group level deployment azureResourceManagerConnection: xxx # the name of service connector subscriptionId: xxx # subscription id of the service connector action: 'Create Or Update Resource Group' resourceGroupName: 'rg-002' location: 'Australia Central' templateLocation: 'Linked artifact' csmFile: 'Template/CSES.template.json' csmParametersFile: 'Template/CSES.parameter.json' overrideParameters: '-packageSasUri $(cspkg) -configurationSasUri $(cscfg) -cloudServiceName cses4test002 -deploymentLabel deploy$(stg_prefix)' # overwrite some parameters of template. deploymentMode: 'Incremental'
Dağıtım tamamlandıktan sonra aşağıdaki görev sonuçlarını ve etiketli bulut hizmetini görmeniz gerekir. Geçerli dağıtımı güncelleştirmek için kodu ve yapılandırmayı değiştirebilirsiniz.
Azure portal, dağıtım sonuçlarını bulut hizmeti kaynak grubunda bulabilirsiniz.
Dağıtım etiketi, tanımladığınız zaman damgasıyla aynı olmalıdır.
Yardım için bize ulaşın
Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.