代码之家  ›  专栏  ›  技术社区  ›  Scott Langham

在队列时设置生成过程参数

  •  1
  • Scott Langham  · 技术社区  · 8 年前

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

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

    当我将任务输入链接到“变量”选项卡下的变量时,我真的很期待。可以勾选这些变量,以便在排队时对其进行配置。

    有趣的是,当我将输入链接到一个流程参数时,它被命名为“Parameters.TheTaskInputName”。我还认为我可以在变量选项卡下定义它,并使其在队列时间可设置,然后尝试了这一点。这似乎也没什么区别。

    如果这样,我做错了什么?或者这是我应该发布在visualstudio上的缺失功能。用户语音。通用域名格式?

    2 回复  |  直到 8 年前
        1
  •  3
  •   raterus    8 年前

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

    设置:

    How to set up Process Variables

    排队时间设置:

    Setting at Queue Time

        2
  •  1
  •   Moha Dehghan    6 年前

    如何将参数和变量传递给任务

    • 参数 :所有输入参数都作为环境变量传递给任务,并以“input\uU3”开头。您需要在任务中找到参数的名称(在管道编辑页面中看到的是参数的标题,而不是名称)。我将在后面的回答中讨论如何找到输入参数的名称。

    • 变量 :管道变量也作为环境变量传递给任务,正如它们的定义方式一样。变量是在管道中定义的,还是稍后在排队生成时添加的,这无关紧要。

    如何查找参数名称和值

    您应该在中找到tasks“task.json”文件。它位于其源目录中(您也可以解压缩任务的.vsix文件)。由于Azure DevOps(由Microsoft开发)的所有默认任务 available on Github ,这是一件容易的事。

    实例

    让我们更改“.NET核心”任务的参数“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”任务。它在“高级”部分有一个“Verbosity”参数。打开 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"
            }
        },
    

    任务的每个“命令”的参数名称都不同。对于restore命令,它是“verbosityRestore”。

    推荐文章