如果 azure 管道中的任何任务失败,请删除 Azure 资源

Div*_*hta 0 virtual-machine azure azure-devops azure-pipelines

我有 Azure Pipeline,它创建 VM、存储、NIC 等。我希望如果管道中的任何任务失败,应删除这些资源。如何实现这一点,我是否需要在 YAML 中使用脚本或者是否有任何可用的扩展?

Bow*_*SFT 5

给你一个样本。您只需要输出变量,然后使用条件进行检查:

trigger:
- none

pool:
  vmImage: windows-latest

steps:
- task: AzurePowerShell@5
  displayName: Create Storage1
  name: createstorage1
  inputs:
    azureSubscription: 'xxx'
    ScriptType: 'InlineScript'
    Inline: |
      $resourceGroup = "xxx"
      $location = "westus"
      $accountName = "bowman08191"
      Write-Host "##vso[task.setvariable variable=resourceGroup;isoutput=true]$resourceGroup"
      Write-Host "##vso[task.setvariable variable=location;isoutput=true]$location"
      Write-Host "##vso[task.setvariable variable=accountName;isoutput=true]$accountName"
      New-AzStorageAccount -ResourceGroupName $resourceGroup `
        -Name $accountName `
        -Location $location `
        -SkuName Standard_RAGRS `
        -Kind StorageV2
    azurePowerShellVersion: 'LatestVersion'
    
- task: AzurePowerShell@5
  displayName: Create Storage2
  name: createstorage2
  inputs:
    azureSubscription: 'xxx'
    ScriptType: 'InlineScript'
    Inline: |
      $resourceGroup = "xxx"
      $location = "westus"
      $accountName = "bowman08192"
      Write-Host "##vso[task.setvariable variable=resourceGroup;isoutput=true]$resourceGroup"
      Write-Host "##vso[task.setvariable variable=location;isoutput=true]$location"
      Write-Host "##vso[task.setvariable variable=accountName;isoutput=true]$accountName"
      New-AzStorageAccount -ResourceGroupName $resourceGroup `
        -Name $accountName `
        -Location $location `
        -SkuName Standard_RAGRS `
        -Kind StorageV2
    azurePowerShellVersion: 'LatestVersion'

- task: AzurePowerShell@5
  displayName: This will be failed
  inputs:
    azureSubscription: 'xxx'
    ScriptType: 'InlineScript'
    Inline: |
      xxx
    azurePowerShellVersion: 'LatestVersion'
- task: AzurePowerShell@5
  displayName: Create Storage1
  name: createstorage3
  inputs:
    azureSubscription: 'xxx'
    ScriptType: 'InlineScript'
    Inline: |
      xxx
      $resourceGroup = "xxx"
      $location = "westus"
      $accountName = "bowman08193"
      Write-Host "##vso[task.setvariable variable=resourceGroup;isoutput=true]$resourceGroup"
      Write-Host "##vso[task.setvariable variable=location;isoutput=true]$location"
      Write-Host "##vso[task.setvariable variable=accountName;isoutput=true]$accountName"
      New-AzStorageAccount -ResourceGroupName $resourceGroup `
        -Name $accountName `
        -Location $location `
        -SkuName Standard_RAGRS `
        -Kind StorageV2
    azurePowerShellVersion: 'LatestVersion'
- task: AzurePowerShell@5
  condition: failed()
  continueOnError: true
  inputs:
    azureSubscription: 'xxx'
    ScriptType: 'InlineScript'
    Inline: |
      Remove-AzStorageAccount -Name $(createstorage1.accountName) -ResourceGroupName $(createstorage1.resourceGroup) -Force
      Remove-AzStorageAccount -Name $(createstorage2.accountName) -ResourceGroupName $(createstorage2.resourceGroup) -Force
      Remove-AzStorageAccount -Name $(createstorage3.accountName) -ResourceGroupName $(createstorage3.resourceGroup) -Force
    azurePowerShellVersion: 'LatestVersion'
Run Code Online (Sandbox Code Playgroud)

以上是存储服务,其他服务类似。

顺便说一句,您可以将所有服务部署到新的资源组中,如果失败,只需删除整个资源组即可。