多配置 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
。
运行 管道中的任务仅用于特定配置:
- 如果您的管道是使用经典编辑器创建的,您可以按照下面屏幕截图中显示的步骤进行操作。
- 在管道中设置
Configuration
变量
- 设置多配置作业,并添加条件以在[=34]时跳过Visual Studio测试任务=]
Configuration
是 Debug
。
- 如果您的管道是使用 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)'
这样,当Configuration
为Debug
时,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)'
这样,当Configuration
为Debug
时,Visual Studio 测试 任务将被跳过但不会隐藏在作业运行 中。
我们有一个使用 Azure Devops 2019 的本地 TFVC 设置。我正在构建一个 C++ 库,并设置了一个工作正常的多配置构建(调试、发布)。但是,我想 运行 仅在构建发布配置时进行一组单元测试。我已经添加了一个“Visual Studio 测试”任务,不幸的是,它在两种配置下都是 运行ning,并且在调试配置下花费的时间太长。每个测试都是 运行 孤立的。
我没有看到有条件地 运行 任务的任何选项(我无法编辑 YAML)。
有没有办法 运行 管道中的任务仅针对特定配置?
首先,您必须拥有在项目中创建、编辑和删除管道的权限。如果没有权限,需要联系项目管理员。
假设配置的变量是Configuration = Debug,Release
。
运行 管道中的任务仅用于特定配置:
- 如果您的管道是使用经典编辑器创建的,您可以按照下面屏幕截图中显示的步骤进行操作。
- 在管道中设置
Configuration
变量 - 设置多配置作业,并添加条件以在[=34]时跳过Visual Studio测试任务=]
Configuration
是Debug
。
- 如果您的管道是使用 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)'
这样,当Configuration
为Debug
时,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)'
这样,当Configuration
为Debug
时,Visual Studio 测试 任务将被跳过但不会隐藏在作业运行 中。