Cómo establecer variables de entrada al depurar tareas personalizadas de Azure DevOps en VS Code y TypeScript
Antecedentes: Estoy creando una tarea de compilación personalizada para Azure DevOps.
- Esta tarea necesita un parámetro de entrada, param1
- Está escrito en VS Code (v1.30.1) y TypeScript (versión de tsc --state: v3.2.2)
Problema Cuando intento depurar mi tarea, no puedo pasar valores de variables para param1. Se alcanzan los puntos de interrupción, así que esa parte está funcionando.
Algo de código: 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();
Esto funciona bien cuando lo ejecuto desde la consola con tsc;node index.js, pero al ejecutarlo con el depurador de VS Code nunca parece que pueda pasar un valor a param1, por lo que se bloquea dentro del método 'getInput'.
Mi 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"
]
}
]}
También he intentado agregar
"env": {
"param1": "thisBeString"
}
bajo los archivos de salida, pero sin éxito.
En la desesperación también he intentado usar
"args": {
"--param1": "thisBeString"
}
con resultado esperado (fallo...)
También he usado entradas en mi tasks.json sin éxito (según este Q&A de SO)
Entonces la pregunta es ¿cómo paso valores de variables al depurar extensiones de Azure DevOps en VS Code?
Respuesta #1
El nombre de un parámetro de entrada Task pasado como variable de entorno debe tener el prefijo INPUT_.
En su ejemplo, usted establecería el parámetro param1 en el entorno de lanzamiento de la siguiente manera:
launch.json
"env": {
"INPUT_param1": "thisBeString"
}
No necesitas renombrar param1 en tu código ya que el prefijo se agrega automáticamente en la llamada a getInput().
El prefijo también es agregado por las canalizaciones de Azure DevOps al configurar el entorno de la tarea en tiempo de ejecución. Hacer esto ayuda a reducir el riesgo de conflictos con otras variables de entorno.
Consulta aquí la referencia de código fuente del SDK de tareas de Azure Pipelines:
https://github.com/microsoft/azure-pipelines-task-lib/blob/master/node/task.ts#L219
