我试图在下面的管道代码中添加手动验证任务,但是每次它都会抛出相同的消息。阅读其他几篇文章,其中有人说尝试使用 pool: server,但是存在一个问题,比如我希望所有任务(如 terraform 安装、初始化、计划和应用)都应在我创建的自托管代理上运行。
以下是我的管道:
trigger:
branches:
include:
- none
pool: terraform-vm
stages:
- stage: "Independent"
jobs:
- job: ""
- template: template/terraform.yaml
下面是我的 terraform.yaml 模板,它正在由我的管道调用。
stages:
- stage: "TF_tasks"
condition: and(succeeded(), or(eq(variables['Build.SourceBranchName'], 'main'), eq(variables['Build.SourceBranchName'], 'dev'), eq(variables['Build.SourceBranchName'], 'uat')))
displayName: "Terraform tasks"
jobs:
- deployment: DeploymentToDev
displayName: 'Deploy To Dev'
condition: eq(variables['Build.SourceBranchName'], 'dev')
environment: 'dev'
strategy:
runOnce:
deploy:
steps:
- task: TerraformInstaller@1
inputs:
terraformVersion: 'latest'
- task: TerraformTaskV4@4
displayName: "Terraform Init"
inputs:
provider: 'azurerm'
command: 'init'
workingDirectory: '$(Pipeline.Workspace)/s'
backendServiceArm: 'xxxxxxxxx'
backendAzureRmResourceGroupName: 'xxxxxxxxxxxxx'
backendAzureRmStorageAccountName: 'xxxxx'
backendAzureRmContainerName: 'xxxxxxxxxx'
backendAzureRmKey: 'xxxxxxxxxxxx'
- task: TerraformTaskV4@4
displayName: "Terraform_validate"
inputs:
provider: 'azurerm'
command: 'validate'
environmentServiceNameAzureRM: 'xxxxxxxxxxxxx'
workingDirectory: '$(Pipeline.Workspace)/s'
- task: TerraformTaskV4@4
displayName: "Terraform plan"
inputs:
provider: 'azurerm'
command: 'plan'
workingDirectory: '$(Pipeline.Workspace)/s'
commandOptions: '-var-file=tfvars/dev.tfvars'
environmentServiceNameAzureRM: 'xxxxxxxxxxxxx'
- task: ManualValidation@0
timeoutInMinutes: 5
inputs:
notifyUsers: "xxxxxxxxxxxxxxx"
- task: TerraformTaskV4@4
displayName: "Terraform Apply"
inputs:
provider: 'azurerm'
command: 'apply'
workingDirectory: '$(Pipeline.Workspace)/s'
commandOptions: '-var-file=tfvars/dev.tfvars'
environmentServiceNameAzureRM: 'xxxxxxxxxxxxxx'
请参阅此文档:ManualValidation@0 - 手动验证 v0 任务
此任务仅在 YAML 管道中受支持,并且只能在 YAML 管道的无代理作业中使用。
当您在 YAML 管道中使用 ManualValidation@0 任务时,您需要使用 无代理作业。这是预期的行为。
例如:
jobs:
- job: waitForValidation
displayName: Wait for external validation
pool: server
timeoutInMinutes: 4320 # job times out in 3 days
steps:
- task: ManualValidation@0
timeoutInMinutes: 1440 # task times out in 1 day
inputs:
notifyUsers: |
[email protected]
[email protected]
instructions: 'Please validate the build configuration and resume'
onTimeout: 'resume'
我希望我的所有任务(例如 terraform 安装、初始化、计划和应用)都应在我创建的自托管代理上运行。
由于ManualValidation任务需要在无代理作业中运行,恐怕现在无法实现您的要求。
您需要使用无代理作业来运行 ManualValidation 和自托管代理作业来运行其他 terraform 任务。
另一方面,单代理作业运行过程中没有其他任务可以添加手动审批。
我完全理解您的要求。您可以在网站开发者社区提交建议票来报告此功能