Teamcity - setParameter不会在参数中永久存储更新的值

时间:2016-11-07 11:30:11

标签: shell teamcity

情景:

需要Teamcity "setParameter"中的Configuration Variable,因此我可以在下次执行build step时使用该值。

我已经设置了一个脚本:

export current_build_date_format="+%%Y-%%m-%%d"
export current_build_date="$(date $current_build_date_format)"
echo "##teamcity[setParameter name='latestDeploymentDate' value='$current_build_date']"

当我在以下步骤中回显%lastestDeploymentDate%时,它会正确打印出'2016-11-07'

但是,当我去查看Teamcity中参数的值时,该值仍然是最初的值。

我正在build agent上运行脚本not on the same server作为Teamcity。这可能是我得到这种行为的原因吗?或者'setParameter'是不是要永久存储?

提前致谢

1 个答案:

答案 0 :(得分:2)

事实证明,echo "##teamcity[setParameter name='parmname' value='value']"仅在内存中设置参数""意思是,在构建步骤运行后,值仍然是相同的。

相反,您需要做的就是永久更新参数,就是使用Teamcity的REST API。

要使用REST api,您需要拥有一个可以在构建脚本中使用的用户帐户。

以下是如何使用用户名/密码更新参数的示例:

export current_build_date="$(date +%%Y-%%m-%%d" "%%H:%%M)"
curl -v --request PUT -d "$current_build_date" --Header "Content-Type: text/plain" http://username:password@your-teamcity-url/httpAuth/app/rest/projects/your-build-configuration-id/parameters/latestDeploymentDate

就个人而言,我不喜欢在构建配置中使用用户名/密码。但是可以在TC代理上进行设置,这样就可以避免这样做。