Есть ли wa для выполнения сценария PowerShell, а затем сценария Node внутри (task.json) для настраиваемой задачи? - PullRequest
1 голос
/ 06 июня 2019

Я создаю пользовательскую задачу Azure DevOps, чтобы заменить мою группу задач. Моя собственная задача теперь работает для PowerShell, но я также пытаюсь интегрировать стандартную задачу (Publish Build Artifacts) в задачу. Для этого я добавил хранилище azure-pipelines-tasks в качестве подмодуля моего проекта, и я компилирую нужную мне задачу и копирую вывод в свою задачу.

Способ работы сценария - выполнить некоторые действия PowerShell, а затем запустить сценарий js «Опубликовать артефакты сборки».

Проблема в том, что когда я запускаю Node "publishbuildartifacts.js" из скрипта PowerShell, он не может правильно прочитать файл task.json, чтобы получить необходимую информацию, даже если он находится в той же папке.

Единственный способ, которым мне удалось заставить "publishbuildartifacts.js" работать правильно, - это прямой вызов в task.json.

Я согласен с этим подходом, за исключением того, что мне нужно запустить сценарий PowerShell перед этим действием.

Проблема, с которой я столкнулся, заключается в том, что когда у меня есть действие PowerShell и действие Node внутри действия выполнения, оно будет запускать только компонент узла, и когда я добавляю «платформы»: [«windows»] в компонент PowerShell; будет запускаться только PowerShell, а не узел.

Как мне заставить их работать в указанном и последовательном порядке?

Я также пробовал «prejobexecution» и «postjobexecution», но теперь я хочу, чтобы задача работала.

"execution":  {
    "PowerShell3": {
        "target": "ABS-Report_tasks.ps1",
        "platforms": [                           
            "windows"
            ]
    },
    "Node":  {
        "target": "publishbuildartifacts.js",
        "argumentFormat":  ""
     }
},

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Могу ли я узнать, какой пул агентов вы использовали для своего конвейера?Azure Pipeline позволяет запускать кроссплатформенные сценарии. Пожалуйста, обратитесь к этому документу .

Для вас есть другой обходной путь.Вы можете добавить команду в свой сценарий powershell для запуска publishbuildartifacts.js, например node publishbuildartifacts.js.

0 голосов
/ 06 июня 2019

Есть подход к групповым задачам.Ознакомьтесь с информацией ниже, см. Статью для получения полной информации.

Задачи кода Visual Studio и разделенные терминалы

{
    "label": "Run Server",
    "type": "shell",
    "command": "${config:python.pythonPath} manage.py runserver --noreload",
    "presentation": {
        "group": "groupServerStuff"
    }
},

Все задачи ста же группа откроется как другая разделенная панель терминала в том же окне терминала.Очень приятно.

Вместо того, чтобы запускать каждую задачу по отдельности, есть ли способ, чтобы задачи вызывали или вызывали другие задачи ...

{
    "label": "Run Server",
    "dependsOn": [
        "Run TCP Server",
        "Run Django Server",
        "Tail Log File"
    ]
},
{
    "label": "Run Django Server",
    "type": "shell",
    "command": "${config:python.pythonPath} manage.py runserver --noreload",
    "presentation": {
        "group": "groupServerStuff"
    }
},
{
    "label": "Run TCP Server",
    "type": "shell",
    "command": "${config:python.pythonPath} scripts/tcp_server.py",
    "presentation": {
        "group": "groupServerStuff"
    }
},
{
    "label": "Tail Log File",
    "type": "shell",
    "command": "tail -f /tmp/logfile.txt",
    "presentation": {
        "group": "groupServerStuff"
    }
},

Обновление для OP для

Интересно, но будет ли оно работать для пользовательских задач VSTS в блоке выполнения.Пример для VSCode.Поскольку это не задачи и не оконные окна, я не знаю, как это будет регистрироваться в серии выполнения, которую я пытаюсь выполнить.

Вы не указали, что это было для VSTS, и так как вы включили эту PowerShellQ & A, предположение было VSCode.

Теперь все это сказано.Я никогда не пробовал это в VS / VSTS, просто VSCode.Некоторые используют VSCode для сборок VS.

В Интернете также есть несколько статей на эту тему.Тем не менее, быстрый поиск показывает, что группы задач были добавлены в VSTS.

См .: Visual Studio Team Services: создание и использование групп задач

… хотя это только показывает, как это сделать через графический интерфейс.

...