4

使用 ant 构建下一个项目版本的程序太多了。该例程位于几个属性文件中,必须在运行 ant 任务之前对其进行编辑。我将 Jenkins 视为构建构建(包括夜间构建)的系统,但我在更改属性时遇到了问题。

是否可以(如果是,我该怎么做)在构建之前在 Jenkins 配置中键入参数,以便将它们传递给 ant?

我真正的意思是以下模式(我在手动构建中使用):

  • 有 2 个属性文件,其中包含有关构建版本、src 目标、通知新构建的电子邮件等数据。

  • Ant 任务中使用相应属性的键,这些属性在构建之前手动更改。

  • 一些属性由 Java util 读取并在构建期间用于它们自己的部分。

  • 在 build.xml 中还导入了 3 或 4 个 ant XML,这些 xml 还从提到的文件中读取属性。

我想做的是:

  • 更改 Jenkins 中的关键属性

  • 新闻建设项目

  • 我的数据将覆盖属性文件中的数据,或者将作为 ant vars 值直接传递给 ant 的任务。

  • 结果,我收到了带有相应通知的新版本(它们是通过 ant 制作的)

是否有允许通过 Jenkins 使这种模式工作的机制?

先感谢您。

4

2 回答 2

9

在 Jenkins 中,您可以使用参数化构建功能来指定需要替换到构建中的那些参数。

例如,如果指定一个名为的参数server,当单击“立即构建”时,输入test,将使用您可以访问的环境变量执行构建${server}

然后,在您的“Invoke Ant”构建步骤中,如果您按下Advanced...,则会显示一个“Properties”字段。在这里可以输入my.ant.property=${server}
这相当于调用ant -Dmy.ant.property=${server},并将扩展为ant -Dmy.ant.property=test.

于 2012-08-16T10:47:36.863 回答
2

另一种选择:使用此Env 插件为构建范围设置环境变量。因此,如果您使用的属性是环境变量或者可以设置为环境变量,那么您想使用这个。虽然它可能需要在更改构建脚本方面付出一些努力,但它可能是一个不错的选择:

Q :为什么我要使用这个,因为我已经有参数化的构建插件

A :因为参数化构建插件需要人工交互,如果有超过 1 个选择。例如为版本 1 或版本 2 或测试分支构建。

在 Env 插件中,您可以为每个选项设置一次属性,然后为每个选项创建一个相应的作业。然后只需安排工作,从而消除人为因素。

于 2012-08-17T09:01:05.870 回答