Dela via


Så här använder du Azure DevOps för att publicera Cloud Services (utökad support)

Den här artikeln innehåller vägledning om hur du använder ARM-mallen (Azure Resource Manager) för att skapa eller uppdatera distributionen av Azure Cloud Services (utökad support).

Bakgrund

Azure Cloud Services (utökad support) är en ny ARM-baserad distributionsmodell för Azure Cloud Services. Cloud Services (utökad support) har den främsta fördelen att tillhandahålla regional återhämtning tillsammans med funktionsparitet med Azure Cloud Services distribueras med hjälp av Azure Service Manager. Det erbjuder även vissa ARM-funktioner som rollbaserad åtkomst och kontroll (RBAC), taggar, principer och stöder distributionsmallar.

För klassiska Cloud Services kan den inbyggda Pipeline-uppgiften i Azure DevOps AzureCloudPowerShellDeployment@1 enkelt hantera CI/CD-förloppet. Men uppgiften för Cloud Services (utökad support) är inte klar än.

Huvudpunkter för publicering av Cloud Services (utökat stöd)

  1. Definiera några variabler för lagringskontot för att förbereda distributionen av ARM-mallen.
  2. Använd uppgiften VSBuild@1 – Visual Studio build v1 för att skapa molntjänstprojektet och mata ut molntjänstpaketfilen eller konfigurationsfilen.
  3. Använd den inbyggda uppgiften AzureFileCopy@5 – Azure-filkopiering v5 för att ladda upp en byggkatalog till bloblagringen.
  4. Använd lagringsreferensen inklusive åtkomstnyckeln för att generera en SAS-token av AzurePowerShell@5 – Azure PowerShell v5-uppgift och mata ut token till en variabel som ska användas i nästa uppgift.
  5. Använd utdata från föregående uppgift och värdet för uppgiften AzureResourceManagerTemplateDeployment@3 – ARM-malldistribution v3.

Skärmbild av pipelines som nyligen körts.

Steg för att publicera Cloud Services (utökad support)

  1. Skapa en startpipeline och förbered för uppladdning till lagringskontot. De här variablerna kan hjälpa dig med följande ytterligare åtgärder.

    • <stg_account namnet på lagringskontot>
    • <stg_key åtkomstnyckel för lagringskontot>
    • <stg_container containernamn för lagringskontot>
    • stg_prefix $[format('{0:yyyyMMddHHmm}', pipeline.startTime)]
    • stg_url https://$(stg_account).blob.core.windows.net/$(stg_container)
    • <cscfg_name namnet på konfigurationsfilen>
    • <cspkg_name namnet på paketfilen>
    • url_cscfg $(stg_url)/$(stg_prefix)/$(cscfg_name)
    • url_cspkg $(stg_url)/$(stg_prefix)/$(cspkg_name)

    Skärmbild av variabler.

  2. Använd Visual Studio-bygguppgiften för att skapa din uppgift baserat på din molntjänstprojektlösningsfil och mata ut den till en lokal sökväg på agenten. Mer information finns i MSBuild.

    Skärmbild av ett exempel på en molntjänstprojektlösningsfil.

    Här är YAML-filen för att skapa ett projekt:

    # 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. Använd pipelineaktiviteten AzureFileCopy@4 – Azure-filkopiering v4 för att ladda upp konfigurations-, definitions- och paketfilerna för molntjänsten. Uppgiften stöder autentisering baserat på Microsoft Entra ID. Autentisering kan göras med tjänstens huvudnamn och hanterade identitet. Du kan tilldela behörigheten Deltagare och Storage Blob Data-deltagare för att tillåta åtkomst till tjänstanslutningar.

    Hitta tjänstprincipen i projektinställningarna:

    Skärmbild av ett exempel på tjänstanslutningstyp.

    Skärmbild av rolltilldelningar.

    YAML-versionen av Filkopiering:

    # 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
    

    När du har kopierat filen visas det kopierade molntjänstpaketet i lagringen.

    Skärmbild av ett molntjänstpaket som kopieras i lagringen.

  4. Använd Azure PowerShell pipeline-uppgiften för att generera en tillfällig SAS-token i fem minuter.

    # 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. Använd ARM-mallens pipelineuppgift för att distribuera distributionen av Cloud Services (utökad support). Information om hur du hämtar exempelmallen finns i 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. När distributionen är klar bör du se följande aktivitetsresultat och molntjänsten med taggen . Du kan ändra koden och konfigurationen för att uppdatera den aktuella distributionen.

    Skärmbild av ett exempel på aktivitetsresultat.

I Azure Portal hittar du distributionsresultaten i molntjänstresursgruppen.

Skärmbild av ett exempel på distributionsresultat.

Distributionsetiketten ska vara samma som den tidsstämpel som du definierade.

Skärmbild av ett exempel på en distributionsetikett.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.