是否可以用Hudson / Jenkins中的参数化字符串替换整个Repository Url?

时间:2011-04-21 22:03:21

标签: svn hudson jenkins parameterized

在Hudson / Jenkins中,是否可以使用String参数替换Subversion Module Repository URL中的整个字符串?我不想只更换版本或类似的东西,我想替换整个网址。

所以,当我运行构建时,我会得到一个URL的提示,我会写一些类似“http://scm.work.corp/svn/com.work.package/tags/project- 4.0.0.RELEASE“它会检查并构建它。

能够替换“com.work.package”和“project-4.0.0.RELEASE”部分将是可以接受的。我基本上希望它能成为一个可以构建任何版本的工作。

6 个答案:

答案 0 :(得分:11)

是的,你可以。但你不能让Jenkins / Hudson监控SVN的变化。即使有参数,这对我来说也不合适。但是,如果您从没有参数化存储库URL的作业监视SVN,让该作业触发下游作业将整个存储库URL作为参数传递,然后让下游作业使用存储库URL参数,那么它似乎工作。

这就是我们为构建内容所做的事情。我们有一个工作可以根据你开始工作的存储库URL从SVN构建产品。然后我们有一些监视某些分支的触发器作业;注意到更改时,启动构建作业并将其URL传递给它。

答案 1 :(得分:4)

如果Hudson / Jenkins事先不知道URL,那么它是如何进行连续构建集成的呢?

而且,如果您不断更改网址,Hudson / Jenkins如何进行更新?你必须让Hudson / Jenkins每次都做一次新的结账,或让它使用svn switch命令。

像Hudson / Jenkins这样的工具的全部目的是做你想要阻止它做的连续构建。既然你没有进行连续构建,为什么还要使用像Hudson / Jenkins这样的工具呢?为什么不编写自己的Ant脚本来检查你想要的内容然后进行构建呢?

每个分支和每个模块都应该有自己的Hudson / Jenkins作业,并且使用模板插件,您可以轻松地将一个作业复制为另一个作业的模板。因此,设置所需的所有构建并不是那么困难。

答案 2 :(得分:3)

是的,你可以,我有同样的问题,但改为$ VARIABLE,似乎工作唯一的问题是你必须包括一个“。”在本地模块目录中。我花了很长时间才发现这一点。

答案 3 :(得分:2)

你可以做到,但你不能让Jenkins为你管理svn。使用字符串创建参数化构建,然后在执行步骤中,执行svn co ${parameter_you_selected}以及构建步骤的任何其他内容(调用ant脚本,makefile,rakefiles等)

答案 4 :(得分:2)

我想我应该指定我的用例。

我理解哈德森的目的。我想要的唯一原因是让Hudson为用户指定的版本执行单个构建,以便可以触发我们使用的插件(声纳),而无需在每个pom中添加它并将其附加到每个阶段。我们手动执行发布,因此我们不希望Hudson处理它。但是,我们确实希望声纳报告我们的版本,因此这个用例。

然而,事实证明这比我预期的要容易。我简单地做了参数化构建并将$ {PARAMETER}放在svn存储库url中。现在,Jenkins给了我一个错误,说这是一个无效的URL,但实际上构建工作正如我预期的那样。尽管有错误警告,我很高兴我尝试过了。

答案 5 :(得分:1)

是的,你可以。检查Building a specific SVN revision with Hudson。在这种情况下,它只是参数化URL的后缀。在您的情况下,“com.work.package”和“project-4.0.0.RELEASE”需要2个参数。

希望它有所帮助!