步骤引用版本“0.238.0”的任务“ManualValidation”,该任务对于给定作业目标无效

问题描述 投票:0回答:1

我试图在下面的管道代码中添加手动验证任务,但是每次它都会抛出相同的消息。阅读其他几篇文章,其中有人说尝试使用 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'
azure-devops azure-pipelines
1个回答
-1
投票

请参阅此文档: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 任务。

另一方面,单代理作业运行过程中没有其他任务可以添加手动审批。

我完全理解您的要求。您可以在网站开发者社区提交建议票来报告此功能

© www.soinside.com 2019 - 2024. All rights reserved.