Aracılığıyla paylaş


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)

  1. ARM şablonu dağıtımına hazırlanmak için depolama hesabı için bazı değişkenler tanımlayın.
  2. 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.
  3. Blob depolamaya derleme dizini yüklemek için yerleşik AzureFileCopy@5 - Azure dosya kopyalama v5 görevini kullanın.
  4. 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.
  5. Önceki görevin çıkışını ve AzureResourceManagerTemplateDeployment@3 - ARM şablonu dağıtımı v3 görevinin değerini kullanın.

Son çalıştırılacak işlem hatlarının ekran görüntüsü.

Cloud Services yayımlama adımları (genişletilmiş destek)

  1. 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

    Değişkenlerin ekran görüntüsü.

  2. 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.

    Bulut hizmeti projesi çözüm dosyası örneğinin ekran görüntüsü.

    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)'
    
  3. 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:

    Hizmet bağlantı türü örneğinin ekran görüntüsü.

    Rol atamalarının ekran görüntüsü.

    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.

    Depolama alanına kopyalanan bulut hizmeti paketinin ekran görüntüsü.

  4. 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'
    
  5. 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'
    
  6. 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.

    Görev sonucu örneğinin ekran görüntüsü.

Azure portal, dağıtım sonuçlarını bulut hizmeti kaynak grubunda bulabilirsiniz.

Dağıtım sonucu örneğinin ekran görüntüsü.

Dağıtım etiketi, tanımladığınız zaman damgasıyla aynı olmalıdır.

Dağıtım etiketi örneğinin ekran görüntüsü.

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.