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

use*_*961 22 teamcity

我必须采取与此处提出和回答的方式不同的方式,因为解决方案似乎对我不起作用:TeamCity,将在一个构建步骤中生成的id传递给稍后的构建步骤

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

构建步骤#1:

\##teamcity[setParameter name='env.TEST' value='test']
Run Code Online (Sandbox Code Playgroud)

构建步骤#2:

echo $TEST

echo %env.TEST%;
Run Code Online (Sandbox Code Playgroud)

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

dmi*_*tko 35

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

echo "##teamcity[setParameter name='env.TEST' value='test']"
Run Code Online (Sandbox Code Playgroud)

  • 仅重申一下,该变量仅从下一个TeamCity步骤开始更新,更改未反映在当前步骤中 (6认同)
  • 这正是我所寻找的 - 文档并没有表明它需要回显,更不用说在引号中了。之后,我的下一步就有了“$TEST”可用。 (3认同)

Bro*_*ass 9

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

Write-Host "##teamcity[setParameter name='env.TEST' value='test']"
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您不使用 Windows,这不会解决。PS 命令在 Unix 代理上不起作用 (2认同)

Jap*_*r24 6

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

Write-Host "##teamcity[setParameter name='env.TEST' value='$test']"
Run Code Online (Sandbox Code Playgroud)

...您可以在步骤 2 中使用这样的值:

echo %env.Test%
Run Code Online (Sandbox Code Playgroud)

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


小智 6

它必须打印到 STDOUT,我使用catwithheredoc来避免在使用变量动态设置配置参数时必须转义单引号。什么是定界符?

MYVARNAME=MYVALUE
cat <<EOF
##teamcity[setParameter name='myConfParameter' value='$MYVARNAME']
EOF
Run Code Online (Sandbox Code Playgroud)

结果:

##teamcity[setParameter name='myConfParameter' value='MYVALUE']
Run Code Online (Sandbox Code Playgroud)

文档


Ada*_*hah 5

我觉得你有一个额外的"\".尝试删除它并在其周围添加双引号,它应该工作.

 "##teamcity[setParameter name='env.TEST' value='test']"
Run Code Online (Sandbox Code Playgroud)

如果它不起作用尝试使用Powershell跑步者类型,因为我正在使用它来设置它,它的工作原理.