gpt4 book ai didi

团队城市。命令行构建步骤。 setParameter总是显示 "Incorrect property name"错误

转载 作者:行者123 更新时间:2023-12-03 06:37:05 24 4
gpt4 key购买 nike

我正在尝试使用命令行构建步骤填充一些参数。

这是代码:

#!/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']"

构建日志:

[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] '

我已经尝试用谷歌搜索了几个小时,但一无所获。我做错了什么?

最佳答案

-x bash 选项非常有用,解决方案不需要删除该选项。相反,让我们看看为什么问题首先出现在自定义脚本中。

使用 bash 的 -x 选项,bash 将回显它将要执行的行,包括文字转义字符。 TeamCity 将尝试解析此输出(此时我们不希望解析此输出,因为不打算解析命令行回显)。如果 TC 发现回显的命令行格式错误(例如,由于转义字符),它将发出不正确的属性名称。警告:

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 将按预期解析。

关于团队城市。命令行构建步骤。 setParameter总是显示 "Incorrect property name"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44496006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com