背景:--我正在为Azure DevOps构建一个自定义构建任务。
问题当我尝试调试我的任务时,我不能为param1传递变量值。断点被击中,所以部分是工作的。
一些代码: index.ts
import tl = require('azure-pipelines-task-lib/task');
async function run() {
try {
let param1: string = tl.getInput('param1', true);
if (param1 === null || param1 === undefined) {
console.log('Should not be here...');
}
}
catch (err) {
tl.setResult(tl.TaskResult.Failed, err.message);
}
}
run();当我使用tsc;节点index.js从控制台运行它时,这很好,但是当使用VS代码调试器运行时,我似乎永远无法将一个值传递给param1,因此它会在'getInput‘方法中崩溃。
我的launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "TaskName",
"program": "${workspaceFolder}/Extensions\\BuildTasks\\TaskName\\index.ts",
"outFiles": [
"${workspaceFolder}/Extensions\\BuildTasks\\TaskName\\**\\*.js"
]
}
]}我也试着添加
"env": {
"param1": "thisBeString"
}在输出文件下,但没有成功。
在绝望中我也试着用
"args": {
"--param1": "thisBeString"
}预期结果(失败.)
我还在我的tasks.json中使用了输入,但没有成功(according to this所以问答)
,所以问题是,在调试VS代码中的Azure DevOps扩展时,如何传递变量值。
发布于 2019-06-23 14:28:44
作为环境变量传递的Task输入参数的名称必须以INPUT_作为前缀。
在您的示例中,您将在启动环境中设置参数param1,如下所示:
launch.json
"env": {
"INPUT_param1": "thisBeString"
}您不需要在代码中重命名param1,因为前缀在对getInput()的调用中会自动添加。
在运行时设置任务环境时,Azure DevOps管道也会添加前缀。这样做有助于减少与其他环境变量冲突的风险。
有关Azure管道任务SDK源代码参考,请参见此处:
https://github.com/microsoft/azure-pipelines-task-lib/blob/master/node/task.ts#L219
https://stackoverflow.com/questions/54093047
复制相似问题