TeamCity - 使用 setParameter 在构建步骤之间传递信息

30

我一定是在做一些不同于这里要求和回答的事情,因为解决方案似乎对我没有用: TeamCity,在一个构建步骤中生成一个ID并将其传递到后面的构建步骤

我想在最终的构建步骤中使用由一个构建步骤生成的字符串。到目前为止,我已经设置了一个名为“TEST”的环境变量,它为空。两个构建步骤都使用命令行运行程序。

构建步骤#1:

\##teamcity[setParameter name='env.TEST' value='test']

构建步骤 #2:

echo $TEST

echo %env.TEST%;

目前只是占位符,但如果我能够访问在构建步骤1中设置的测试字符串('test'),我会非常高兴。

6个回答

49

你需要输出该字符串,例如:

echo "##teamcity[setParameter name='env.TEST' value='test']"

3
这正是我在寻找的 - 文档没有指示需要回显,更不用说用引号括起来了。之后,我的下一步就可以使用 $TEST 了。 - John C
14
再次强调,该变量只会从下一个TeamCity步骤开始更新,当前步骤不会反映这些更改。 - sawe

11

我发现,当TeamCity将日志输出拆分成两行时,对于较长的值 echo将不再起作用——您必须改用Write-Host

Write-Host "##teamcity[setParameter name='env.TEST' value='test']"

这应该总是有效的,只是一个小提示-此值仅在后续构建步骤中可用。


4
这并没有涉及到你是否在使用Windows系统。PowerShell命令在Unix代理上不起作用。 - user2932053

6
为了进一步说明上面的答案,使用PowerShell在构建步骤1中,代码如下:
Write-Host "##teamcity[setParameter name='env.TEST' value='$test']"

在第二步中,您可以像这样使用该值:

echo %env.Test%

还需要注意的是,您需要在TC构建参数中设置env.Test等于某个值。我只是使用了一个空格,因为我知道该值将通过ps脚本设置。希望这能帮到您。


6

必须将其打印到标准输出(STDOUT),我使用 heredoccat 命令,以避免在动态设置配置参数时需要转义单引号。什么是 heredoc?

MYVARNAME=MYVALUE
cat <<EOF
##teamcity[setParameter name='myConfParameter' value='$MYVARNAME']
EOF

结果:

##teamcity[setParameter name='myConfParameter' value='MYVALUE']

Documentation


抱歉给你点了个踩,但它根本不起作用。它会在控制台中打印>,然后在另一行中打印> EOF。它不会将"##teamcity[setParameter name='myConfParameter' value='$MYVARNAME']"回显到控制台中。你能提供更多信息吗?如果它真的有效,我很乐意点赞。 - Phate P
@PhateeP 再试一次,我编辑了我的答案,使其更易于理解。 - user3905644
我刚刚检查了一下,现在它什么都不打印。 - Phate P
让我们在聊天中继续这个讨论 - user3905644
"cat"选项是唯一对我有效的...echo没有捕捉到它! - Viji
显示剩余4条评论

6

我认为你多了一个“\”,尝试将其删除并在周围添加双引号,它应该可以正常工作。

 "##teamcity[setParameter name='env.TEST' value='test']"

如果不起作用,请尝试使用PowerShell运行程序类型,因为我正在使用它来设置它并且它有效。

0

这里是官方票据,关于添加双引号和回显(Write-Host - 操作系统依赖性)的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接