我的要求是我需要在子项目的svn url构建参数中使用Hudson环境变量的范围。
我想将SVN分支名称设置为Hudson的环境变量,因为我希望它可以被我在那里配置的所有项目使用。
如果我以
的身份访问我的环境变量[BUILD_BRANCH]http://svn/repos/project/subproj/branches/ $ {BUILD_BRANCH}
网址没有被替换为值。
但是在相同的情况下,如果我在每个子项目中将BUILD_BRANCH作为参数化构建的字符串参数,则url将替换为value。但我不能每次都在所有项目中更改分支值[构建参数值]。此外,下游项目无法访问调用项目的构建参数[String]。
答案 0 :(得分:1)
在构建的配置中有一个名为“This build is Parameterized”的复选框。
如果启用该功能,则可以为此特定版本创建参数。
我希望这会有所帮助。
答案 1 :(得分:0)
让我澄清一下你的问题。您已经定义了一个环境变量BUILD_BRANCH,并希望能够从构建的参数中引用它。是吗?
如果是这样,那我就解决了你的问题!
当评估参数(并扩展其中引用的任何变量)时,您无权访问环境变量,因此参数的值最终为文字字符串'$ {BUILD_BRANCH}',而不是扩展到$ BUILD_BRANCH的环境定义。
然后,当您从shell脚本引用参数时,参数的值用单引号括起来,防止额外的间接层被解析,因此您获得环境变量的名称,而不是其值。 / p>
解决方案是将eval添加到每个shell脚本行的开头,在那里引用参数,将解析额外的图层,变量将起作用。
最后一件事 - 如果您引用上一个参数,则不必执行此操作。因此,如果Param1是foo,而Param2是$ {foo} bar,这将起作用,因为参数是按顺序计算的。但是,如果切换了参数值,则需要使用eval。
答案 2 :(得分:0)
似乎目前没有办法使用环境变量来调整subversion存储库位置。我决定做的是用脚本编辑外面的config.xml
文件。
如果该变量的值正在以编程方式更改,这可能对您不起作用,但对于我们来说,我希望能够在分支和主干之间迁移我们的作业,这是在每个sprint中完成的,并且是一个手动过程。
以下某种类型的脚本适用于我们:
FROM_SVN_PATH="svnserver.com/trunk"
TO_SVN_PATH="svnserver.com/branches/1.1"
cd jobs
for f in */config.xml
do
sed -e "s,$FROM_SVN_PATH,$TO_SVN_PATH," < "$f" > "$f.t"
mv "$f" "$f.ORG"
mv "$f.t" "$f"
done
如果你正在使用Jenkins,那么你可以去&#34;管理Jenkins&#34;并选择&#34;从磁盘重新加载配置&#34;。
答案 3 :(得分:-1)
在ManageHudson中设置BUILD_BRAN-&gt;配置系统 - &gt;全局属性 - &gt;环境变量