在 Azure DevOps 中是不是有一种 GUI 方法可以禁用基于 YAML 的管道中的任务?

Posted

技术标签:

【中文标题】在 Azure DevOps 中是不是有一种 GUI 方法可以禁用基于 YAML 的管道中的任务?【英文标题】:In Azure DevOps is there a GUI way to disable tasks in YAML based pipeline?在 Azure DevOps 中是否有一种 GUI 方法可以禁用基于 YAML 的管道中的任务? 【发布时间】:2020-04-06 13:58:26 【问题描述】:

Azure DevOps 相当新,并将其用于基础架构即代码 Azure 部署。 使用经典发布管道,您可以进入管道、进入阶段并非常快速地启用/禁用该阶段中的任务

您将如何使用 YAML 管道做到这一点?

【问题讨论】:

【参考方案1】:

除了用# 注释掉任务之外,我在这里提供另一种解决方法:

您可以尝试设置变量:enabled = false,然后使用 YAML 文件中的变量。

steps:
- task: PublishSymbols@2
  displayName: 'Publish symbols path'
  inputs:
    SearchPattern: '**\bin\**\*.pdb'
    PublishSymbols: false
  enabled: false
  continueOnError: true

如果这样设置,这个任务将不会在作业中运行。

这个case提到了这个方法,具体可以参考一下。

【讨论】:

模板步骤似乎不支持enabled 变量。所以如果你有一个模板作为一个步骤而不是一个任务,有没有其他巧妙的方法可以跳过运行它而不是把整个块注释掉?【参考方案2】:

现在有了runtime parameters,您就有了一个 GUI 选项。 如果取消选中该复选框(见下图),则可以将该参数传递给管道。

[据我所知]有三种方法可以在任务中实现运行时参数,您还可以在作业/阶段中应用大部分逻辑(除了作业/阶段[当前]没有“启用”属性);

parameters:
- name: RunTask
  displayName: Run task?
  type: boolean
  default: true

steps:

- pwsh: Write-Host "always run this task"

- pwsh: Write-Host "skip this task when checkbox unticked..."
  condition: eq($ parameters.RunTask , true)

- pwsh: Write-Host "skip this task when checkbox unticked..."
  enabled: $ parameters.RunTask 

- $ if eq(parameters.RunTask, true) :
  - pwsh: Write-Host "skip this task when checkbox unticked..."

【讨论】:

【参考方案3】:

你真的不能从 GUI 中做到这一点。好吧,你可以,你只需用# 将它们注释掉。在编辑器中

【讨论】:

我认为可能是这种情况,不像使用 gui 发布版本那么容易,但你确实将管道作为代码......我猜是一种权衡。谢谢

以上是关于在 Azure DevOps 中是不是有一种 GUI 方法可以禁用基于 YAML 的管道中的任务?的主要内容,如果未能解决你的问题,请参考以下文章

开发人员的 Azure DevOps 提交

添加到项目时的 Azure DevOps 通知

检查分支被锁定的次数以及锁定 Azure DevOps Rest API 的可能原因

Azure DevOps - 小部件大小

在 Azure DevOps Pipeline 模板中使用变量

Azure Devops:是不是可以将 yaml 模板嵌套在另一个 yaml 模板中?