在队列时设置构建过程参数

时间:2018-01-18 16:49:17

标签: build azure-devops

我已经定义了构建定义并向其添加了一些任务。当我手动排队新的构建时,我希望能够为其中一个任务的输入提供值。

我认为我可以通过将任务输入链接到流程参数来实现这一点,但它只是略有改进。流程参数显示在'流程'当我编辑构建定义时,在顶部的部分,所以它更容易找到。

当我将任务输入链接到“变量”下的变量时,我真的一直在期待。标签。可以勾选这些变量以允许在队列时配置它们。

有趣的是,当我将输入链接到一个流程参数时,它的名称就像" Parameters.TheTaskInputName"。我还以为我可以在Variables选项卡下定义它并在队列时使其可设置并尝试。这似乎也没有任何区别。

如果这样做,如果是的话,我做错了什么?或者它是我应该在visualstudio.uservoice.com上发布的缺失功能?

2 个答案:

答案 0 :(得分:2)

构建具有“过程变量”,您可以控制它们是否能够在队列时间设置。

设定:

How to set up Process Variables

在队列时间设置:

Setting at Queue Time

答案 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(不区分大小写)的变量,并在其中填充值。这将覆盖您在管道定义中设置的所有内容。

Passing parameter when queuing the build

无论什么类型的参数,参数值都以字符串形式发送。例如,布尔参数的值可以为“ 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”。