Hudson: 如何使用参数化构建进行SVN检出和标记?

5
我正在hudson v1.362中设置参数化构建。我正在创建的参数用于确定在subversion中要检出哪个分支。
我可以像这样设置我的svn仓库url:https://my.svn.server/branches/${branch},它可以正常检出和构建。
现在我想在构建完成后对其进行标记。我正在使用hudson的SVN标记插件来完成此操作。因此,我转到hudson项目的项目配置屏幕底部,并打开“在成功构建时执行Subversion标记”。
在这里,我将我的标记基本URL设置为https://my.svn.server/tags/${branch}-${BUILD_NUMBER},并且它会给我关于找不到这些属性的错误。所以我将它们更改为环境变量用法,如下所示:https://my.svn.server/tags/${env['branch']}-${env['BUILD_NUMBER']},然后svn标记插件就可以正常工作了。
现在的问题是,我的svn仓库顶部使用了${branch}语法,而svn标记插件无法处理它:
moduleLocation: Remote ->https://my.svn.server/branches/$branch/
Tag Base URL: 'https://my.svn.server/tags/thebranchiused-1234'.
There was no old tag at https://my.svn.server/tags/thebranchiused-1234.
ERROR: Publisher hudson.plugins.svn_tag.SvnTagPublisher aborted due to exception
java.lang.NullPointerException
    at hudson.plugins.svn_tag.SvnTagPlugin.perform(SvnTagPlugin.java:180)
    at hudson.plugins.svn_tag.SvnTagPublisher.perform(SvnTagPublisher.java:79)
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36)
    at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:601)
    at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:580)
    at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:558)
    at hudson.model.Build$RunnerImpl.cleanUp(Build.java:167)
    at hudson.model.Run.run(Run.java:1295)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:124)
Finished: FAILURE

请注意第一行:svn标签正在查看${branch}作为存储库URL的一部分...它没有解析属性值。
我尝试更改我的svn原始存储库URL,使用${env['branch']}语法,但是这会在原始检出上爆炸,因为该语法根本没有被检出解析。
求助!
如何使用参数化构建设置svn URL以进行检出和标记构建?!
2个回答

3
我们不使用标记插件,但在我们的shell脚本中使用SVN.EXE,如下所示:

svn cp %workspace%\trunk@ http://myserver/release/%build_number%/trunk -m "(在此处放置日志文本)" --parents

也许类似的方法对您也有用。

感谢William。在Hudson的“Post Build Script”中使用它非常好! - Derick Bailey

0

我们使用以下URL的标记插件:

http://subversion.repository/branches/jenkinstest_tags//build-${env['BUILD_NUMBER']}

它可以工作。我们不得不使用双'//',如'/jenkinstest_tags//build'。这似乎是一种解决方法。


1
OP的问题不在于目标URL,而在于源URL。 - chiccodoro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接