Jak używać usługi Azure DevOps do publikowania usług Cloud Services (wsparcie dodatkowe)
Ten artykuł zawiera wskazówki dotyczące używania szablonu usługi Azure Resource Manager (ARM) do tworzenia lub aktualizowania wdrożenia usług Azure Cloud Services (rozszerzonej pomocy technicznej).
Tło
Azure Cloud Services (wsparcie dodatkowe) to nowy model wdrażania oparty na usłudze ARM dla usług Azure Cloud Services. Usługi Cloud Services (rozszerzona pomoc techniczna) mają podstawową zaletę zapewniania odporności regionalnej wraz z parzystością funkcji z usługami Azure Cloud Services wdrożonych przy użyciu programu Azure Service Manager. Oferuje również niektóre funkcje usługi ARM, takie jak kontrola dostępu oparta na rolach (RBAC), tagi, zasady i obsługuje szablony wdrażania.
W przypadku klasycznych usług Cloud Services wbudowane zadanie potoku usługi Azure DevOps AzureCloudPowerShellDeployment@1 może ułatwić zarządzanie postępem ciągłej integracji/ciągłego wdrażania. Jednak zadanie dotyczące usług Cloud Services (wsparcie dodatkowe) nie jest jeszcze gotowe.
Główne punkty publikowania usług Cloud Services (wsparcie dodatkowe)
- Zdefiniuj zmienne dla konta magazynu, aby przygotować się do wdrożenia szablonu usługi ARM.
- Użyj zadania VSBuild@1 — Visual Studio build v1, aby skompilować projekt usługi w chmurze i wygenerować plik pakietu usługi w chmurze lub plik konfiguracji.
- Użyj wbudowanego zadania AzureFileCopy@5 — kopiowanie plików platformy Azure w wersji 5 w celu przekazania katalogu kompilacji do magazynu obiektów blob.
- Użyj odwołania do magazynu, w tym klucza dostępu, aby wygenerować token SAS przez AzurePowerShell@5 — zadanie programu Azure PowerShell w wersji 5 i wyprowadzić token do zmiennej, która będzie używana w następnym zadaniu.
- Użyj danych wyjściowych poprzedniego zadania i wartości zadania AzureResourceManagerTemplateDeployment@3 — wdrożenie szablonu usługi ARM w wersji 3.
Kroki publikowania usług Cloud Services (wsparcie dodatkowe)
Utwórz potok startowy i przygotuj się do przekazania na konto magazynu. Te zmienne mogą pomóc w kolejnych operacjach.
- <stg_account nazwę konta magazynu>
- <stg_key klucz dostępu konta magazynu>
- <stg_container nazwa kontenera konta magazynu>
- stg_prefix $[format({0:yyyyMmdHHmm}', pipeline.startTime)]
- stg_url
https://$(stg_account).blob.core.windows.net/$(stg_container)
- <cscfg_name nazwę pliku konfiguracji>
- <cspkg_name nazwę pliku pakietu>
- url_cscfg $(stg_url)/$(stg_prefix)/$(cscfg_name)
- url_cspkg $(stg_url)/$(stg_prefix)/$(cspkg_name)
Zadanie kompilacji programu Visual Studio umożliwia skompilowanie zadania na podstawie pliku rozwiązania projektu usługi w chmurze i wyprowadzenie go do ścieżki lokalnej na agencie. Aby uzyskać więcej informacji, zobacz MSBuild.
Oto plik YAML do skompilowania projektu:
# 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)'
Użyj zadania potoku AzureFileCopy@4 — zadanie kopiowania plików platformy Azure w wersji 4 w celu przekazania plików konfiguracji, definicji i pakietu usługi w chmurze. Zadanie obsługuje uwierzytelnianie na podstawie identyfikatora Entra firmy Microsoft. Uwierzytelnianie można wykonać przy użyciu jednostki usługi i tożsamości zarządzanej. Możesz przypisać uprawnienie Współautor i Współautor danych obiektu blob usługi Storage, aby zezwolić na dostęp do połączeń usług.
Znajdź zasadę usługi w ustawieniach projektu:
Wersja YAML kopii pliku:
# 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
Po skopiowaniu pliku zobaczysz skopiowany pakiet usługi w chmurze w magazynie.
Użyj zadania potoku programu Azure PowerShell, aby wygenerować tymczasowy token SAS przez pięć minut.
# 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'
Użyj zadania potoku szablonu usługi ARM, aby wdrożyć wdrożenie usług Cloud Services (wsparcie dodatkowe). Aby uzyskać przykładowy szablon, zobacz 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'
Po zakończeniu wdrażania powinny zostać wyświetlone następujące wyniki zadania i usługa w chmurze z tagiem . Możesz zmienić kod i konfigurację, aby zaktualizować bieżące wdrożenie.
W witrynie Azure Portal wyniki wdrożenia można znaleźć w grupie zasobów usługi w chmurze.
Etykieta wdrożenia powinna być taka sama jak zdefiniowana sygnatura czasowa.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.