我有一个项目,其中有两个分支。每次将代码推送到分支时都需要构建develop
分支,而master
只应在手动执行时运行。我遇到了多配置项目,我可以使用参数为两个分支指定不同的构建命令。我可以为我的develop/pom.xml
分支编写develop
,为master/pom.xml
分支编写master
文件夹。但是我想使用一个参数代替分支名称,例如$branch/pom.xml
,其中$branch
值应该从被推送到的分支获得。这可能吗?如果不是,有什么工作吗?
答案 0 :(得分:1)
我创建了两个Jenkins项目:
并配置Git Plugin > Push notification from repository:
为了尽量减少推送和构建之间的延迟,建议在存储库中设置post-receive挂钩,以便在发生新推送时戳戳Jenkins。为此,请在
hooks/post-receive
文件中添加以下行,其中<URL of the Git repository>
是克隆此存储库时使用的完全限定URL。curl http://yourserver/git/notifyCommit?url=<URL of the Git repository>[&branches=branch1[,branch2]*][&sha1=<commit ID>]
这将扫描以下所有作业:
- 拥有构建触发器&gt;轮询SCM 已启用。不需要轮询计划。
- 配置为在指定的URL构建存储库
- 配置为构建可选指定的分支或提交ID
另见Pro Git, 8.3 Customizing Git - Git Hooks。
<Your repo>/.git/hooks/post-receive
curl http://<Your Jenkins>/git/notifyCommit?url=<Your repo>&branches=develop
源代码管理
◉Git
存储库
... your repo ...
要建立的分支
develop
构建触发器
制作后的操作
build-given-branch
branch=develop
此项目将在post-receive
上触发,因为它将develop
指定为要构建的分支,这符合post-receive
挂钩URL中给出的分支。
☑此版本已参数化
选择参数
branch
选择:
master
develop
源代码管理
◉Git
存储库
... your repo ...
要建立的分支
$branch
<强>构建强>
$branch/pom.xml
使用参数构建并确认手动master
版本的默认值master
。 (作为额外的好处,您也可以手动构建develop
。)
缺点是您在每个项目中两次检查develop
分支。
说到这里我还想提一下,为同一个项目提供不同的POM是不寻常的。如果项目有不同的视图,如果根据这些视图应该做不同的事情Maven支持Build Profiles:
他们在构建时修改POM,并且用于补充集合,为一组目标环境提供等效但不同的参数(例如,提供开发中appserver根目录的路径,测试和生产环境)。
这意味着在您的情况下 构建 →根POM 保持为空并且→目标和选项:{ {1}} {-P $branch
是master
个人资料,不会对配置进行任何更改。