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 som distribueras med Hjälp av Azure Service Manager. Den 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 pipelineuppgiften 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)
- Definiera några variabler för lagringskontot för att förbereda distributionen av ARM-mallen.
- Använd uppgiften VSBuild@1 – Visual Studio build v1 för att skapa molntjänstprojektet och mata ut molntjänstpaketfilen eller konfigurationsfilen.
- Använd den inbyggda uppgiften AzureFileCopy@5 – Azure-filkopiering v5 för att ladda upp en byggkatalog till bloblagringen.
- 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.
- Använd utdata från föregående uppgift och värdet för uppgiften AzureResourceManagerTemplateDeployment@3 – ARM-malldistribution v3.
Steg för att publicera Cloud Services (utökad support)
Skapa en startpipeline och förbered för att ladda upp till lagringskontot. Dessa variabler kan hjälpa dig med följande ytterligare åtgärder.
- <stg_account namnet på lagringskontot>
- <stg_key åtkomstnyckel för lagringskonto>
- <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)
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.
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)'
Använd pipelineaktiviteten AzureFileCopy@4 – Azure-filkopiering v4-uppgift 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 hjälp av 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:
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.
Använd Azure PowerShell-pipelineaktiviteten 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'
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'
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.
I Azure Portal kan du hitta distributionsresultaten i resursgruppen för molntjänsten.
Distributionsetiketten ska vara samma som den tidsstämpel som du definierade.
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.