多配置 Azure Devops 2019 构建管道中的条件管道(Visual Studio 测试)任务

Conditional Pipeline (Visual Studio Test) Task in Multi-Configuration Azure Devops 2019 Build Pipeline

我们有一个使用 Azure Devops 2019 的本地 TFVC 设置。我正在构建一个 C++ 库,并设置了一个工作正常的多配置构建(调试、发布)。但是,我想 运行 仅在构建发布配置时进行一组单元测试。我已经添加了一个“Visual Studio 测试”任务,不幸的是,它在两种配置下都是 运行ning,并且在调试配置下花费的时间太长。每个测试都是 运行 孤立的。

我没有看到有条件地 运行 任务的任何选项(我无法编辑 YAML)。

有没有办法 运行 管道中的任务仅针对特定配置?

首先,您必须拥有在项目中创建、编辑和删除管道的权限。如果没有权限,需要联系项目管理员。

假设配置的变量是Configuration = Debug,Release。 运行 管道中的任务仅用于特定配置:

  1. 如果您的管道是使用经典编辑器创建的,您可以按照下面屏幕截图中显示的步骤进行操作。
  • 在管道中设置Configuration变量
  • 设置多配置作业,并添加条件以在[=34]时跳过Visual Studio测试任务=]ConfigurationDebug
  1. 如果您的管道是使用 YAML 创建的。
  • 使用if条件跳过Visual Studio测试任务。
jobs:
- job: Build
  strategy:
   maxParallel: 2
   matrix:
     DEBUG:
       Configuration: Debug
     RELEASE:
      Configuration: Release
  steps:
  - task: Bash@3
    displayName: 'Show current Configuration'
    inputs:
      targetType: 'inline'
      script: 'echo "Configuration = $(Configuration)"'

  . . .

  - ${{ if eq(variables['Configuration'], 'Release') }}:
    - task: VSTest@2
      displayName: 'VsTest - testAssemblies'
      inputs:
        platform: '$(buildPlatform)'
        configuration: '$(buildConfiguration)'

这样,当ConfigurationDebug时,Visual Studio 测试 任务将被跳过并隐藏在作业运行 中。

  • 使用condition跳过Visual Studio测试任务。
jobs:
- job: Build
  strategy:
   maxParallel: 2
   matrix:
     DEBUG:
       Configuration: Debug
     RELEASE:
      Configuration: Release
  steps:
  - task: Bash@3
    displayName: 'Show current Configuration'
    inputs:
      targetType: 'inline'
      script: 'echo "Configuration = $(Configuration)"'

  . . .

  - task: VSTest@2
    displayName: 'VsTest - testAssemblies'
    condition: eq(variables['Configuration'], 'Release')
    inputs:
      platform: '$(buildPlatform)'
      configuration: '$(buildConfiguration)'

这样,当ConfigurationDebug时,Visual Studio 测试 任务将被跳过但不会隐藏在作业运行 中。