我对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
。
此外,构建失败的代码行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
编辑2:[已解决]现已全部解决,谢谢!我进入了存储库,将脚本所在的文件夹直接映射到$(build.sourcesDirectory)
。因此,我能够将文件路径更改为$(build.sourcesDirectory)\StartControllerAndAgents.ps1
,并且该构建现在可以找到要运行的文件。
答案 0 :(得分:0)
您需要将脚本的路径指定为$(Build.SourcesDirectory)\Path\To\Script
。不是您现在$/Project/Path/To/Script
配置的TFVC路径。
确切的路径取决于构建定义的工作空间映射。
工作目录也是如此。
Azure Pipelines(TFS / Azure DevOps中的“构建中心”的当前名称)中有许多变量可以解析为代理上的不同标准化路径。几乎所有任务都没有这些变量的相对路径。