【问题标题】:Getting Missing expression after '=' error in powershell build step在 powershell 构建步骤中出现“=”错误后缺少表达式
【发布时间】:2017-05-25 17:18:35
【问题描述】:

我正在进行团队城市建设步骤。这是我使用 %teamcity.build.branch% 和 %teamcity.build.checkoutDirectory% 参数的 powershell 步骤。这是脚本:

param([string]$branchName=%teamcity.build.branch%, [string]$bldCheckOutDir=%teamcity.build.checkoutDir%)

write "Value of branchName is $branchName"
write "Value of bldCheckOutDir is $bldCheckOutDir"

if ($branchName.Substring(0,1) -like "F") {Write "Working on a Feature Branch"; CD $bldCheckOutDir\DCD-GUI; npm test; sonar-scanner -X}
elseif ($branchName.Substring(0,2) -like "US") {Write "Working on a Story Branch"}
elseif ($branchName.Substring(0,2) -like "DE") {Write "Working on a Defect Branch"}
elseif ($branchName.Substring(0,2) -like "QA") {Write "Working on a QA1 Branch"; CD $bldCheckOutDir\DCD-GUI; npm test; CD ..; FortifyBatchFile.bat; sonar-scanner -X; }
else {Write "BranchName not known"}

当我在构建配置中将此脚本作为构建步骤运行时,出现以下错误:

【Step 4/4】工作目录:E:\BuildAgent\work\d429bf6e9117eae6 [04:25:58][步骤 4/4] PowerShell 参数:[-NonInteractive, -ExecutionPolicy、ByPass、-File、E:\BuildAgent\temp\buildTmp\powershell6621137048056018482.ps1] [04:26:08][步骤 4/4] '=' 后缺少表达式。 [04:26:08][步骤 4/4] 在 E:\BuildAgent\temp\buildTmp\powershell6621137048056018482.ps1:1 char:27 [04:26:08][Step 4/4] + param([string]$branchName= : ParserError: (=:String) [], ParentContainsErrorR [04:26:08][步骤 4/4] ecodException [04:26:08][步骤 4/4] + FullyQualifiedErrorId : MissingExpressionAfterToken

我在这里做错了什么?

【问题讨论】:

    标签: powershell teamcity


    【解决方案1】:

    在参数块中,您需要将 teamcity 变量用双引号或单引号括起来:

    param(
        [string]$branchName = "%teamcity.build.branch%",
        [string]$bldCheckOutDir = "%teamcity.build.checkoutDir%"
    )
    

    没有它们,% 字符可能会被视为特殊字符。

    【讨论】:

    • 那么第二个的意义何在,因为这与他使用的完全一样? O_o
    • @Mark,teamcity.build.branch 是 teamcity 中的预定义配置参数,teamcity.build.checkoutDir 是 teamcity 中预定义的 Agent 构建属性。所以,我自己没有定义任何这些参数。我只是在运行构建时使用 teamcity 为我提供的那些变量。我还需要将它们视为环境变量吗?
    • 我认为错误只是因为您没有在它们周围使用双引号或单引号而发生,因此它将 % 字符视为特殊字符。不过可能是错的。
    • 马克,你的更新是正确的,还有你上面的cmets;你的原文(关于环境变量)不是。我认为最好完全删除该部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2021-10-19
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多