输入数未知的Azure管道自定义任务



我正在使用TypeScript为Azure管道创建一个自定义任务。

我定义了一个filePath输入:

{
"name": "myFile",
"label": "file to read",
"type": "filePath",
"required": true,
"groupName": "files",
"helpMarkDown": "file to read",
"defaultValue": "",
"visibleRule": "getFile = true"
},

用户应该能够在任务中定义未知数量的路径。

  1. 有没有一种方法可以在任务中动态生成输入,如果用户浏览路径,gui将显示另一个filePath输入?如果有这样的选项,我如何迭代它们并将所有文件下载到管道中?

  2. 替代1-我可以有一个简单的字符串输入,我在其中指示用户输入几个路径。在这种情况下,如果没有filePath输入提供的浏览按钮的帮助,用户如何提取repo中文件的路径?

大多数任务都提供多行文本框(可选调整大小(,您可以在task.json:中设置

{
"name": "patternManifest",
"type": "multiLine",
"properties": {
"resizable": true,
"rows": "1"
},
"label": "Manifest file(s)",
"defaultValue": "vss-extension.json",
"required": false,
"helpMarkDown": "Specify the pattern for manifest files. One file per line."
},

然后在任务本身中,您使用tl.getDelimitedInput()并传入您想要支持的分隔符,在该任务中,我要求他们使用换行符n:

const globsManifest = tl.getDelimitedInput("patternManifest", "n", false);

任务库也支持通配符匹配,这样人们就可以将***?添加到他们的输入中,任务会将它们解析为实际文件,然后使用tl.findMatch()选项。

if (vsixFilePattern.indexOf("*") >= 0 || vsixFilePattern.indexOf("?") >= 0) {
tl.debug("Pattern found in vsixFile parameter.");
matchingVsixFile = tl.findMatch(process.cwd(), vsixFilePattern);
}
else {
tl.debug("No pattern found in vsixFile parameter.");
matchingVsixFile = [vsixFilePattern];
}

默认情况下,路径是相对的,并使用任务的工作目录。如果未指定任何内容,则工作目录取决于任务的上下文(构建与部署管道(:

"execution": {
"PowerShell3": {
"target": "$(currentDirectory)\TfvcCheckin.v3.ps1",
"workingDirectory": "$(Build.SourcesDirectory)"
}
}

用户始终可以输入绝对路径,而不是相对路径。他们总是可以添加像$(Build.SourcesDirectory)abc这样的变量,以根路径到预定义的位置。

相关内容

  • 没有找到相关文章

最新更新