Как установить входные переменные при отладке пользовательских задач Azure DevOps в VS Code и TypeScript

Задний план: Я создаю настраиваемую задачу сборки для 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.info('Should not be here...');
      }        
   }
   catch (err) {
      tl.setResult(tl.TaskResult.Failed, err.message);
   }
}
run();

Это отлично работает, когда я запускаю его с консоли с помощью tsc; узел index.js, но при работе с отладчиком VS Code мне никогда не удается передать значение параметру 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 (согласно этому SO Q&A)

Итак, вопрос, как передать значения переменных при отладке расширений Azure DevOps в VS Code.

это помогает?

Matt 08.01.2019 23:27

@Matt мне не помог, но может быть моя неопытность в VS Code + Typescript. Но я не могу добавить аргументы в свой файл tasks.json с type is typescript. Возможно, это можно исправить, используя вместо этого тип оболочки (узла), но я не могу заставить его работать :(

Pierre 09.01.2019 10:17
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
4
2
937
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Имя входного параметра Task, переданного как переменная среды, должно иметь префикс INPUT_.

В вашем примере вы должны установить параметр param1 в среде запуска следующим образом:

launch.json

"env": {
   "INPUT_param1": "thisBeString"
 }

Вам не нужно переименовывать param1 в коде, так как префикс автоматически добавляется при вызове getInput().

Префикс также добавляется конвейерами Azure DevOps при настройке среды задач во время выполнения. Это помогает снизить риск конфликтов с другими переменными среды.

Ссылку на источник пакета SDK для задач Azure Pipelines:
. https://github.com/microsoft/azure-pipelines-task-lib/blob/master/node/task.ts#L219

Другие вопросы по теме