Сборка TFS 2017, выполняющая PowerShell, не выполнена из-за ошибки "Термин не распознан" в строке 1 - PullRequest
0 голосов
/ 31 мая 2019

Я довольно новичок в TFS и все еще учусь его использовать (так что, надеюсь, это не просто глупый недосмотр с моей стороны). Этим летом я прохожу стажировку на сезонной должности разработчика, и, по сути, моей конечной целью является автоматизация нагрузочного тестирования для веб-сайта компании. Я использую TFS для достижения этой цели; У сборки, которая у меня сейчас есть, есть только две задачи: одна - запустить контроллер и среду тестирования, а другая - остановить их. Моя проблема заключается в том, что сборка продолжает давать сбой до того, как она действительно запускается, из-за ошибки «термин не распознан» в строке 1, вызванной, в частности, тем, что рабочая папка по умолчанию не распознается.

Вот соответствующие файлы журнала:

2019-05-30T20:00:02.0942883Z Executing the following powershell script. (workingFolder = D:\RM_agent\_work\11\s)
2019-05-30T20:00:02.0942883Z D:\RM_agent\_work\11\s 
2019-05-30T20:00:02.4999117Z ##[error]. : The term 'D:\RM_agent\_work\11\s' is not recognized as the name of a 
2019-05-30T20:00:02.4999117Z ##[error]cmdlet, function, script file, or operable program. Check the spelling of the 
2019-05-30T20:00:02.4999117Z ##[error]name, or if a path was included, verify that the path is correct and try again.
2019-05-30T20:00:02.4999117Z ##[error]At line:1 char:3
2019-05-30T20:00:02.4999117Z ##[error]+ . 'D:\RM_agent\_work\11\s'
2019-05-30T20:00:02.4999117Z ##[error]+   ~~~~~~~~~~~~~~~~~~~~~~~~
2019-05-30T20:00:02.4999117Z ##[error]    + CategoryInfo          : ObjectNotFound: (D:\RM_agent\_work\11\s:String)  
2019-05-30T20:00:02.4999117Z ##[error]   [], CommandNotFoundException
2019-05-30T20:00:02.4999117Z ##[error]    + FullyQualifiedErrorId : CommandNotFoundException

Я знаю, что для рабочей папки по умолчанию установлено значение $(Build.SourcesDirectory), поэтому я предполагаю, что D:\RM_agent\_work\11\s - это то, что $(Build.SourcesDirectory) оценивает. RM_agent, очевидно, является агентом, поэтому /_work/11/s должен быть локальным путем, в котором он хранит исходный код. Почему это тогда не признается?

Я попытался вручную установить рабочую папку для сценариев через tfs в папку, где хранится сборка, но сборка все равно не удалась, и в журналах все еще показывалось, что workingFolder = D:\RM_agent\_work\11\s.

enter image description here

Кроме того, строка кода, на которой происходит сбой сборки, Executing the following powershell script. (workingFolder = D:\RM_agent\_work\11\s), отсутствует в сценарии, который я пытаюсь выполнить, что меня смущает. Откуда этот скрипт?

(я могу удалить это, если оно не соответствует руководящим принципам / не по теме, но если кто-то может указать мне на какие-либо ресурсы по tfs и / или нагрузочному тестированию, это также будет чрезвычайно полезно)

РЕДАКТИРОВАТЬ: Вот сценарий powershell для первого задания

########################################
# start environment
########################################

# import modules
Import-Module '\\neenah-san1\TSbuild\Deployment\Tools\PowerShell\Azure\JJK.TS.Azure.psm1' -Force -Prefix 'TS'

# provide azure credentials
$credential = Get-Credential

# login to azure subscription
Login-AzureRmAccount -Credential $credential

# start the controller
Get-AzureRmVM -ResourceGroupName 'TS-LoadTest-TST' | Where-Object {$_.Name -match 'vstc'} | Start-TSAzureVM -Credential $credential

# wait for controller to fully start
Start-Sleep -Seconds 120

# start the agents
Get-AzureRmVM -ResourceGroupName 'TS-LoadTest-TST' | Where-Object {$_.Name -match 'vsta'} | Start-TSAzureVM -Credential $credential

# check status of all servers
Get-AzureRmVM -ResourceGroupName 'TS-LoadTest-TST' -Status | Sort-Object -Property Name | Select-Object -Property Name, PowerState | Format-Table -AutoSize

Структура решения: enter image description here

РЕДАКТИРОВАТЬ 2: [решено] Теперь все исправлено, спасибо! Я вошел в репозиторий и сопоставил папку, в которой находились мои скрипты, с $(build.sourcesDirectory). Следовательно, мне удалось изменить путь к файлу на $(build.sourcesDirectory)\StartControllerAndAgents.ps1, и сборка теперь может найти файлы для запуска.

1 Ответ

0 голосов
/ 31 мая 2019

Вам необходимо указать путь к скрипту как $(Build.SourcesDirectory)\Path\To\Script. Не тот путь TFVC, который вы настроили сейчас $/Project/Path/To/Script.

Точный путь зависит от отображения рабочей области определения сборки.

То же самое относится и к рабочему каталогу.

В конвейерах Azure есть несколько переменных (текущее имя для узла сборки в TFS / Azure DevOps), которые разрешают разные стандартизированные пути в агенте. Почти все задачи имеют относительный путь от этих переменных.

...