我已经定义了构建定义并向其添加了一些任务。当我手动排队新的构建时,我希望能够为其中一个任务的输入提供值。
我认为我可以通过将任务输入链接到流程参数来实现这一点,但它只是略有改进。流程参数显示在'流程'当我编辑构建定义时,在顶部的部分,所以它更容易找到。
当我将任务输入链接到“变量”下的变量时,我真的一直在期待。标签。可以勾选这些变量以允许在队列时配置它们。
有趣的是,当我将输入链接到一个流程参数时,它的名称就像" Parameters.TheTaskInputName"。我还以为我可以在Variables选项卡下定义它并在队列时使其可设置并尝试。这似乎也没有任何区别。
如果这样做,如果是的话,我做错了什么?或者它是我应该在visualstudio.uservoice.com上发布的缺失功能?
答案 0 :(得分:2)
答案 1 :(得分:0)
参数:所有输入参数都以环境变量(以“ INPUT_”为前缀)传递给任务。您需要在任务中找到参数的名称(在管道编辑页面中看到的是参数的标题,而不是名称)。稍后,我将在此答案中讨论查找输入参数的名称。
变量:流水线变量也作为环境变量传递给任务,就像它们的定义一样。变量是在管道中定义还是在以后的构建队列中添加都无所谓。
您应该在其中找到任务“ task.json”文件。该文件位于其源目录中(您也可以解压缩任务的.vsix文件)。由于Azure DevOps(由Microsoft开发)的所有默认任务都是available on Github,所以这很容易做到。
让我们更改“ .NET Core”任务的参数“ Command”的值。它的“ task.json”文件为here。在“输入”部分中查找“命令”文本:
"inputs": [
{
"name": "command",
"type": "pickList",
"label": "Command",
"defaultValue": "build",
"required": true,
"helpMarkDown": "The dotnet command to run. Select 'Custom' to add arguments or use a command not listed here.",
"options": {
"build": "build",
"push": "nuget push",
"pack": "pack",
"publish": "publish",
"restore": "restore",
"run": "run",
"test": "test",
"custom": "custom"
},
"properties": {
"EditableOptions": "False"
}
},
您可以看到参数名称与其标签相同(并非总是如此),并且值分别为“ build”,“ push”,“ pack”,...
现在,您可以在对构建进行排队时添加名为input_command
(不区分大小写)的变量,并在其中填充值。这将覆盖您在管道定义中设置的所有内容。
无论什么类型的参数,参数值都以字符串形式发送。例如,布尔参数的值可以为“ true”或“ false”,而选择列表参数对于选择列表中的每个项目都有对应的字符串值(如上面的示例)。
再举一个例子,让我们看一下“ NuGet restore”任务。它在“高级”部分中具有“详细程度”参数。打开task.json文件。这是相关的部分:
{
"name": "verbosityRestore",
"type": "pickList",
"label": "Verbosity",
"defaultValue": "Detailed",
"helpMarkDown": "Specifies the amount of detail displayed in the output.",
"required": "false",
"groupName": "restoreAdvanced",
"options": {
"Quiet": "Quiet",
"Normal": "Normal",
"Detailed": "Detailed"
}
},
任务的每个“命令”的参数名称都不同。对于还原命令,它是“ verbosityRestore”。