我必须采取与此处提出和回答的方式不同的方式,因为解决方案似乎对我不起作用: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将日志输出分解为两个单独的行,echo将不再起作用 - 您必须使用Write-Host.
Write-Host "##teamcity[setParameter name='env.TEST' value='test']"
Run Code Online (Sandbox Code Playgroud)
这应始终有效,只是旁注 - 此值仅在后续构建步骤中可用.
为了扩展上述答案,在构建步骤 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)
我觉得你有一个额外的"\".尝试删除它并在其周围添加双引号,它应该工作.
"##teamcity[setParameter name='env.TEST' value='test']"
Run Code Online (Sandbox Code Playgroud)
如果它不起作用尝试使用Powershell跑步者类型,因为我正在使用它来设置它,它的工作原理.
| 归档时间: |
|
| 查看次数: |
22158 次 |
| 最近记录: |