我正在尝试使用命令行构建步骤填充一些参数。
这是代码:
#!/bin/bash -x
VERSIONCODE=123
VERSIONNAME=1.2.0
echo "##teamcity[setParameter name='env.VERSION_NAME' value='$VERSIONNAME']"
echo "##teamcity[setParameter name='env.VERSION_CODE' value='$VERSIONCODE']"
Run Code Online (Sandbox Code Playgroud)
构建日志:
[09:14:06][Step 1/8] + VERSIONCODE=123
[09:14:06][Step 1/8] + VERSIONNAME=1.2.0
[09:14:06][Step 1/8] + echo '
[09:14:06][Step 1/8] ##teamcity[setParameter name='\''env.VERSION_NAME'\'' value='\''1.2.0'\'']
[09:14:06]
[Step 1/8] Incorrect property name.
Valid property list format is (name( )*=( )*'escaped_value'( )*)* where escape symbol is "|"
[09:14:06][Step 1/8] '
[09:14:06][Step 1/8] + echo '
[09:14:06][Step 1/8] ##teamcity[setParameter name='\''env.VERSION_CODE'\'' value='\''123'\'']
[09:14:06]
[Step 1/8] Incorrect property name.
Valid property list format is (name( )*=( )*'escaped_value'( )*)* where escape symbol is "|"
[09:14:06][Step 1/8] '
Run Code Online (Sandbox Code Playgroud)
我一直在尝试搜索它几个小时,却一无所获。我究竟做错了什么?
在-xbash的选项是非常有用和解决方案不需要涉及移除选项。相反,让我们看看为什么在自定义脚本中首先会出现问题。
使用 bash 的-x选项,bash 将回显它即将执行的行,包括文字转义字符。TeamCity 将尝试解析此输出(此时我们不希望这样做,因为不打算解析命令行回显)。如果 TC 发现回显的命令行格式不正确(例如,由于转义字符),它将发出Incorrect property name.警告:
echo "##teamcity[buildStatisticValue key=\'warnings\' value=\'42\']"
但是,TC 会认为该命令的执行输出正常。
如果 TC 将回显的命令行正确解析为 TC 消息,情况会更糟,因为它会在该行执行时再次解析它,这可能会导致重复计数和其他细微错误。
相反,如果您必须##在自定义脚本-x中启用并启用,请确保像这样转义两个散列:
echo \#\#teamcity[buildStatisticValue key=\'warnings\' value=\'42\']
Bash 将使用转义的哈希打印确切的命令行,并且 TC 不会尝试解析它(并且要么失败要么重复计数),但是当该行被执行时,它将回显##teamcity[buildStatisticValue key='warnings' value='42'哪个 TC 将按预期解析。
我在teamcity-support.jetbrains.com上提出了要求,并得到了答案:
问题出在脚本定义中的“ -x”。跟踪脚本似乎要花费额外的时间,最终以脚本失败结束。删除-x将使脚本正常工作。您可以通过在构建结果页面的“参数”选项卡上进行检查,来验证是否在构建结束时设置了参数。
有用。
| 归档时间: |
|
| 查看次数: |
1165 次 |
| 最近记录: |