Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TeamCity-使用setParameter在构建步骤之间传递信息_Teamcity - Fatal编程技术网

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

TeamCity-使用setParameter在构建步骤之间传递信息,teamcity,Teamcity,我必须做一些与这里所问和回答不同的事情,因为解决方案似乎不适合我: 我希望在最终构建步骤中使用由一个构建步骤生成的字符串。到目前为止,我已经设置了一个名为“TEST”的环境变量,它是空的。这两个生成步骤都使用命令行运行程序 构建步骤#1: 构建步骤#2: 现在是占位符,但是如果我可以访问构建步骤1中设置的测试字符串('test'),我将非常高兴。我想您在其中有一个额外的“\”。尝试删除它并在其周围添加双引号,它应该可以工作 "##teamcity[setParameter name='env.

我必须做一些与这里所问和回答不同的事情,因为解决方案似乎不适合我:

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

构建步骤#1:

构建步骤#2:

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

我想您在其中有一个额外的“\”。尝试删除它并在其周围添加双引号,它应该可以工作

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

如果它不起作用,请尝试使用Powershell runner type,因为我正在使用它进行设置,它会起作用。

您需要回显该字符串,例如

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

我发现,对于长值,只要TeamCity将日志输出分解为两行,echo将不再工作-您必须使用
写入主机

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

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

要扩展上述答案,使用powershell在构建步骤1中看起来是这样的:

Write-Host "##teamcity[setParameter name='env.TEST' value='$test']"
…您可以在步骤2中使用如下值:

echo %env.Test%

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

关于添加双引号和echo(写入主机-操作系统依赖项)。

它必须打印到标准输出,我使用
cat
herdoc
避免在使用变量动态设置配置参数时必须转义单引号


这正是我想要的——文档中没有指出需要重复,更不用说引用了。在此之后,我的下一步有可用的
$TEST
。只是为了重新迭代,变量仅从TeamCity的下一步开始更新,更改不会反映在当前步骤中。如果您不使用windows,则不会解决此问题。PS命令在Unix代理上不起作用,所以您只是投了否决票,而没有就此事交换更多信息@PhateePsorry支持downvote,但它根本不起作用。它在控制台的另一行中打印>然后>EOF。它不会在控制台中回显“##teamcity[setParameter name='myConfParameter'value='$MYVARNAME']”。你能带来更多的信息吗?如果它真的有效的话,我很乐意向上投票。
是由shell打印的,当你做多行的东西时,比如引号、herdoc等。你不应该使用
@PhateeP再试一次,我编辑了我的答案,使它更容易理解。我刚刚检查了它,现在它什么也不打印。
Write-Host "##teamcity[setParameter name='env.TEST' value='$test']"
echo %env.Test%
MYVARNAME=MYVALUE
cat <<EOF
##teamcity[setParameter name='myConfParameter' value='$MYVARNAME']
EOF
##teamcity[setParameter name='myConfParameter' value='MYVALUE']