如何在使用Ant/Jenkins时签出同一Java项目的不同Subversion标记/分支?

如何在使用Ant/Jenkins时签出同一Java项目的不同Subversion标记/分支?,java,jenkins,svn,svn-checkout,Java,Jenkins,Svn,Svn Checkout,这是我的开发配置: 在Subversion下, -我有我的项目\u X/trunk(以及我的最新开发), -我有我的项目/标签(不同版本), -我正在考虑添加一个分支文件夹。 我正在使用Jenkins使用Ant脚本构建我的项目\u X/trunk。 我的Ant脚本做了很多事情,它检查、编译、创建带有图形的文档、运行单元测试、执行pmd、创建jar和压缩所有内容 我希望能够在同一个项目的标记或分支(以及主干)上使用我的Ant脚本 最简单的方法是什么: 我认为这只是检查Subversion存储库的正

这是我的开发配置:

在Subversion下,

-我有我的项目\u X/trunk(以及我的最新开发),
-我有我的项目/标签(不同版本),
-我正在考虑添加一个分支文件夹。

我正在使用Jenkins使用Ant脚本构建我的项目\u X/trunk。 我的Ant脚本做了很多事情,它检查、编译、创建带有图形的文档、运行单元测试、执行pmd、创建jar和压缩所有内容

我希望能够在同一个项目的标记或分支(以及主干)上使用我的Ant脚本

最简单的方法是什么:

我认为这只是检查Subversion存储库的正确路径的问题,对吗?

-如果我是正确的,我应该让Subversion的路径变得动态
-在我的Ant脚本中,我的Subversion路径应该是一个变量吗?
-如何从Jenkins的接口传递路径值?
-是否有一个插件可以让我将Subversion路径值从Jenkins传递到Ant脚本?
-或者我应该在Jenkins中创建一个新作业(使用相同的脚本但不同的路径)?

希望

提前感谢您的帮助,

致以最诚挚的问候,

您应该通过标记/分支名称参数化您的构建。最简单的方法是在Jenkins作业中添加一个参数(比如SVN_BRANCH_DIR),该参数的值包括
trunk
branch1
tags/sometag

现在,如果使用Jenkins ANT构建步骤,该参数将作为属性自动传递给ANT脚本(通过ANT
-D
选项)。因此,您可以在其中使用
${SVN_BRANCH_DIR}
(例如
svn://myserver/myrepo/${SVN_BRANCH_DIR}
)。

Jenkins提供了自1.24版(2011年3月22日)以来的“列表subversion标记(及更多)”项目参数

从字面上说

使用时,此参数将在生成时显示一个字段,以便用户能够选择Subversion标记,从中创建此项目的工作副本。 设置两个字段名称和存储库URL后,必须(1)确保作业使用Subversion,并(2)通过连接此参数的两个字段来设置Subversion的存储库URL字段。例如,如果名称设置为SVN_标记,存储库URL设置为,则Subversion的存储库URL必须设置为$SVN_标记。 请注意,您可以将Repository URL字段设置为Subversion存储库根,而不仅仅是指向标记目录(即,您可以将其设置为而不是)。在这种情况下,如果此存储库根目录包含trunk、branchs和tags文件夹,则下拉列表将允许用户选择trunk、branch或tag

对于无人参与的集成构建,可以使用默认的“trunk”参数值


我希望这能有所帮助。

所以基本上我需要用新的Subversion url修改我的ant脚本svn://myserver/myrepo/${SVN_BRANCH_DIR}。在Jenkins中,我将环境变量注入到构建过程部分。我可能可以在这里声明我的新${SVN_BRANCH_DIR}参数,现在给它一个值“trunk”?因此,每当我需要更改路径时,我都可以找到我的参数并更改其值?感谢您的帮助,我的意思是将其定义为构建参数:转到作业定义页面->检查“此构建已参数化”->按“添加参数”。现在我要使用'Choice'参数(有一个选项-trunk)。注入env变量也会起作用,但它有以下缺点:(1)更难定义(2)不太可见(3)不会自动传递到ANT构建步骤(您需要执行类似于
SVN_BRANCH_DIR=${SVN_BRANCH_DIR}的操作)
在构建步骤的属性部分。Super这正是我所需要的!感谢您的澄清!在使用Jenkins之前,我有另一个潜在的问题,我使用一个名为checkout的任务直接从ant脚本中签出源代码。一旦我在Jenkins中配置了源代码管理部分,就不需要了他不再执行签出任务了。因此,基本上,根据前面提到的这个新配置,我应该不再在jenkins中配置源代码管理,而只在我的ant脚本中使用签出任务,对吗?它不会与SVN轮询很好地匹配。但是,您可以定义SVN钩子,并通过“推送”(如上所述)来完成它。不过,最简单的方法是在构建内部“手动”完成(例如,在ANT脚本或单独的shell构建步骤中)。