YAML管道模板参数语法

时间:2020-02-28 17:15:50

标签: azure-devops

Microsoft文档站点上有两个文档似乎为YAML模板参数声明了不同的语法。

我无法推断出下面第一个使用的位置,而第二个可以正常使用。我想知道版本声明类型是否已被弃用。

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops-2019#template-expressions

parameters:
- name: 'solution'
  default: '**/*.sln'
  type: string

https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=example#template-references

parameters:
  name: ''
  testFile: ''

1 个答案:

答案 0 :(得分:1)

您共享的脚本实际上是参数不同使用场景的两种语法。

让我们使用经典UI对其进行映射。在msbuild任务中,有一个空白,要求您输入.sln / .csproj文件路径:

enter image description here

通常,如果路径上没有什么特别的地方,则不需要手动更改此值。因为它是由系统自动注入任务中的。

这与下面的YAML脚本完全相同:

parameters:
- name: 'solution'
  default: '**/*.sln'
  type: string

YAML template中进行配置时,在大多数情况下,无需再次在YAML中进行配置,除非您要更改为另一个值。

这也是为什么我们说doc中的solution参数是可选的原因:

enter image description here


与上述相反,使用以下语法时,参数是必需的

parameters:
  name: ''
  testFile: ''

您此时必须从YAML传递值,否则将导致执行错误。因为从开始到结束都没有为它们注入任何值。


我想知道版本声明类型是否已弃用。

您的意思是任务版本声明吗?如果是,则否,不弃用。这是您必须提供的必需项。因为不同的任务版本可能具有不同的任务配置和执行逻辑。

您在此doc中看到的那个,就是快捷方式格式。参见此tab。到目前为止,我们仅支持以下快捷键关键字,它们不需要用户指定的版本。因为它们会自动选择我们的后端系统定义的默认版本值:

Script => command-line task

bash => shell script task

pwsh/powershell => PowerShell task

publish => Publish Pipeline Artifact task

download => Download Pipeline Artifact task


2020年3月9日更新:

parameters:
- name: 'solution'
  default: '**/*.sln'
  type: string

上面的脚本是更丰富的YAML语法,这是我们最近部署的新功能,并且 Azure devops服务器2019 迄今为止( 3/9/2020 )。

对于Azure devops服务器2019,它仅支持较旧的语法,其中默认声明为映射无类型或值约束

parameters:
  solution: '**/*.sln'