在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量

Posted

技术标签:

【中文标题】在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量【英文标题】:How to set input variables when debugging Azure DevOps custom Tasks in VS Code and TypeScript 【发布时间】:2019-06-03 05:15:48 【问题描述】:

背景: 我正在为 Azure DevOps 构建自定义构建任务。

此任务需要一个输入参数 param1 它是用 VS Code (v1.30.1) 和 TypeScript (tsc --version state: v3.2.2) 编写的

问题 当我尝试调试我的任务时,我无法为 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;node index.js 从控制台运行它时效果很好,但是当使用 VS Code 调试器运行时,我似乎永远无法将值传递给 param1,因此它在内部崩溃'getInput' 方法。

我的启动.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 SO Q&A)

所以问题是在 VS Code 中调试 Azure DevOps 扩展时如何传入变量值。

【问题讨论】:

this 有帮助吗? @Matt 对我没有帮助,但可能是我在 VS Code+Typescript 方面的经验不足。但是我不能将“args”添加到我的tasks.json,类型是打字稿。可能可以通过使用外壳(节点)类型来修复,但我无法让它工作:( 【参考方案1】:

作为环境变量传递的Task输入参数的名称必须以INPUT_为前缀。

在您的示例中,您将在启动环境中设置参数param1,如下所示:

launch.json

"env": 
   "INPUT_param1": "thisBeString"
 

您无需在代码中重命名 param1,因为前缀会自动添加到对 getInput() 的调用中。

在运行时设置任务环境时,Azure DevOps 管道也会添加前缀。这样做有助于降低与其他环境变量发生冲突的风险。

请参阅此处以获取 Azure Pipelines 任务 SDK 源参考:https://github.com/microsoft/azure-pipelines-task-lib/blob/master/node/task.ts#L219

【讨论】:

以上是关于在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量的主要内容,如果未能解决你的问题,请参考以下文章

在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量

VS Code + ESLint + Prettier + Google Style + Typescript

如何在 VS Code 中为模板中的 vue 道具启用 Typescript 打字和智能感知?

无法在 TypeScript 中调试 - VS Code

Jest & TypeScript:VS Code 找不到名称

在 VS Code 中强制使用多行 typescript 构造函数