如何将hudson的环境变量作为svn build的参数传递

时间:2010-10-20 18:37:12

标签: svn build branch hudson

我的要求是我需要在子项目的svn url构建参数中使用Hudson环境变量的范围。

我想将SVN分支名称设置为Hudson的环境变量,因为我希望它可以被我在那里配置的所有项目使用。

如果我以

的身份访问我的环境变量[BUILD_BRANCH]

http://svn/repos/project/subproj/branches/ $ {BUILD_BRANCH}

网址没有被替换为值。

但是在相同的情况下,如果我在每个子项目中将BUILD_BRANCH作为参数化构建的字符串参数,则url将替换为value。但我不能每次都在所有项目中更改分支值[构建参数值]。此外,下游项目无法访问调用项目的构建参数[String]。

4 个答案:

答案 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;环境变量

相关问题