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

时间:2013-12-29 19:22:51

标签: teamcity

我必须采取与此处提出和回答的方式不同的方式,因为解决方案似乎对我不起作用:TeamCity, passing an id generated in one build step to a later build step

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

构建步骤#1:

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

构建步骤#2:

echo $TEST

echo %env.TEST%;

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

6 个答案:

答案 0 :(得分:28)

你需要回应那个字符串,例如

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

答案 1 :(得分:8)

我发现,对于长值,一旦TeamCity将日志输出分解为两个单独的行 echo将不再起作用 - 您必须使用Write-Host

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

这应该始终有效,只是旁注 - 此值仅在后续构建步骤中可用。

答案 2 :(得分:5)

我认为你有一个额外的“\”。尝试删除它并在其周围添加双引号,它应该工作。

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

如果它不起作用尝试使用Powershell跑步者类型,因为我正在使用它来设置它并且它可以工作。

答案 3 :(得分:4)

为了扩展上述答案,使用PowerShell在构建步骤1中看起来就是这样:

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

...你可以在第2步中使用这样的值:

echo %env.Test%

另外,作为注释,您必须将TC构建参数中的env.Test设置为等于某事。我只是使用了一个空格,因为我知道该值将通过ps脚本设置。希望这可以帮助。

答案 4 :(得分:3)

必须打印到STDOUT,我使用catheredoc,以避免在使用变量动态设置配置参数时必须转义单引号。 What is heredoc?

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

结果:

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

Documentation

答案 5 :(得分:0)

Here is official ticket关于加法双引号和echo(写主机 - 操作系统依赖)。