Azure DevOps Server 2019:任务执行条件
Azure DevOps Server 2019: condition for task execution
在 Azure DevOps 服务中,我使用参数使任务执行成为可选的,例如:
...
parameters:
- name: createObj
displayName: 'Create Object?'
type: boolean
default: true
...
jobs:
- job: build
pool:
name: Default
steps:
- ${{ if eq(parameters.createObj, true) }}:
- template: ./templates/create-object.yml
Azure DevOps Server 2019 不支持参数,知道如何添加这样的条件吗?
Azure DevOps Server 2019 doesn't support parameters, any ideas how
such condition could be added?
是的,根据 this ticket Azure DevOps Server 2019 doesn't support parameters well. So I suggest you can try conditional jobs/steps via variables instead parameters, for more details about Conditions 语法。
由于Azure Devops Server目前对参数的支持还不是很好,所以不建议在你的场景中使用模板。 (变量 不能 用于条件模板)。您可以直接在 azure-pipeline.yml
文件中扩展这些步骤,如下所示:
jobs:
- job: build
pool:
name: Default
steps:
- task: CmdLine@2
inputs:
script: 'echo This is first build task'
condition: {Add your custom condition here in Step level.}
- task: CmdLine@2
inputs:
script: 'echo This is second build task'
- job: test
condition: {Add your custom condition here in Job level.}
pool:
name: Default
steps:
- task: CmdLine@2
inputs:
script: 'echo This is first test task'
- task: CmdLine@2
inputs:
script: 'echo This is second test task'
您可以在Job/Step层添加条件来判断一个Job/Step是否会运行。
两个不同方向的示例:
1.Define yaml 中的变量(硬编码):
variables:
WhetherToRunCmd:true
jobs:
- job: build
pool:
name: Default
steps:
- task: CmdLine@2
inputs:
script: 'echo This is first build task'
condition: ne(variables.WhetherToRunCmd,false)
- task: CmdLine@2
inputs:
script: 'echo This is second build task'
那么第一个cmd任务默认会运行,当我们把WhetherToRunCmd:true
改成WhetherToRunCmd:false
时会跳到运行。
2.Usequeue time variable,不需要在yml文件中定义变量:
编辑 yaml 管道并选择变量:
定义变量 WhetherToRunJob
并在排队时启用可设置:
然后在 yml 中使用类似这样的东西:
- job: test
condition: ne(variables.WhetherToRunJob,false)
那么这个job默认会运行,当我们使用Queue with parameters option
:
将值改为false时跳到运行
我觉得variables+condition
也可以满足你运行steps/jobs有条件的需求。您也可以根据需要修改条件,例如 and(succeed(),eq(...)...) 或什么。
在 Azure DevOps 服务中,我使用参数使任务执行成为可选的,例如:
...
parameters:
- name: createObj
displayName: 'Create Object?'
type: boolean
default: true
...
jobs:
- job: build
pool:
name: Default
steps:
- ${{ if eq(parameters.createObj, true) }}:
- template: ./templates/create-object.yml
Azure DevOps Server 2019 不支持参数,知道如何添加这样的条件吗?
Azure DevOps Server 2019 doesn't support parameters, any ideas how such condition could be added?
是的,根据 this ticket Azure DevOps Server 2019 doesn't support parameters well. So I suggest you can try conditional jobs/steps via variables instead parameters, for more details about Conditions 语法。
由于Azure Devops Server目前对参数的支持还不是很好,所以不建议在你的场景中使用模板。 (变量 不能 用于条件模板)。您可以直接在 azure-pipeline.yml
文件中扩展这些步骤,如下所示:
jobs:
- job: build
pool:
name: Default
steps:
- task: CmdLine@2
inputs:
script: 'echo This is first build task'
condition: {Add your custom condition here in Step level.}
- task: CmdLine@2
inputs:
script: 'echo This is second build task'
- job: test
condition: {Add your custom condition here in Job level.}
pool:
name: Default
steps:
- task: CmdLine@2
inputs:
script: 'echo This is first test task'
- task: CmdLine@2
inputs:
script: 'echo This is second test task'
您可以在Job/Step层添加条件来判断一个Job/Step是否会运行。
两个不同方向的示例:
1.Define yaml 中的变量(硬编码):
variables:
WhetherToRunCmd:true
jobs:
- job: build
pool:
name: Default
steps:
- task: CmdLine@2
inputs:
script: 'echo This is first build task'
condition: ne(variables.WhetherToRunCmd,false)
- task: CmdLine@2
inputs:
script: 'echo This is second build task'
那么第一个cmd任务默认会运行,当我们把WhetherToRunCmd:true
改成WhetherToRunCmd:false
时会跳到运行。
2.Usequeue time variable,不需要在yml文件中定义变量:
编辑 yaml 管道并选择变量:
定义变量 WhetherToRunJob
并在排队时启用可设置:
然后在 yml 中使用类似这样的东西:
- job: test
condition: ne(variables.WhetherToRunJob,false)
那么这个job默认会运行,当我们使用Queue with parameters option
:
我觉得variables+condition
也可以满足你运行steps/jobs有条件的需求。您也可以根据需要修改条件,例如 and(succeed(),eq(...)...) 或什么。