Búsqueda de sitios web

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

Artículos relacionados