我有一个项目,其中有两个分支。每次将代码推到分支,develop
分支都需要构建,并且只有在手动执行时才能运行master
。我遇到了多配置项目,可以在其中使用参数为两个分支指定不同的构建命令。对于文件夹,我可以为develop
分支编写develop/pom.xml
和master
分支的master/pom.xml
。但是我想使用一个参数代替分支名称,例如$branch/pom.xml
,其中应从推入的分支中获得$branch
值。这可能吗?如果没有,这有什么作用?
我会创建两个詹金斯项目:
- develop-build-trigger (Freestyle)
- 构建 - 分支(maven)
和配置git插件>从存储库推送通知:
为了最大程度地减少按下和构建之间的延迟,建议在新推动时将存储库中的后钩设置在存储库中,以戳詹金斯。为此,请在
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>]
这将扫描所有工作:
- 有构建触发器> poll scm 已启用。不需要轮询时间表。
- 被配置为在指定的URL
上构建存储库- 被配置为构建可选的指定分支或提交ID
另请参见Pro Git,8.3自定义git -git钩。
<Your repo>/.git/hooks/post-receive
curl http://<Your Jenkins>/git/notifyCommit?url=<Your repo>&branches=develop
自由式项目开发构建 - 触发
源代码管理
◉git
存储库
- 存储库网址:
... your repo ...
- 存储库网址:
构建的分支
- 分支指定者:
develop
- 分支指定者:
构建触发器
- ☑民意调查SCM
后构建动作
- 在其他项目上触发参数化构建
- 构建触发器
- 要构建的项目:
build-given-branch
- 预定义参数
- 参数:
branch=develop
- 参数:
- 要构建的项目:
- 构建触发器
- 在其他项目上触发参数化构建
此项目将在post-receive
上触发,因为它将develop
指定为要构建的分支,该分支符合post-receive
挂钩URL中给出的分支。
Maven Project build-given-Branch
☑此构建是参数化的
选择参数
- 名称:
branch
选择:
master develop
- 名称:
源代码管理
◉git
存储库
- 存储库URL:
... your repo ...
- 存储库URL:
构建的分支
- 分支指定者:
$branch
- 分支指定者:
构建
- 根POM:
$branch/pom.xml
- 根POM:
使用参数构建,并确认手册master
构建的默认值master
。(作为另外的好处,您也可以手动构建develop
。)
一个缺点是您在每个项目中两次检查了develop
分支。
话虽如此,我还想提到,对于同一项目,拥有不同的POM是不寻常的。如果项目对项目有不同的看法,则应根据这些观点来完成不同的事情,而Maven支持构建配置文件:
他们在构建时间修改了POM,并应在互补集中使用,以提供一组目标环境的等效但不同的参数(例如,例如在开发中,AppServer root的路径,测试和生产环境)。
这意味着在您的情况下,构建→ root pom 保持空,→目标和选项: -P $branch
(master
是<activeByDefault>
配置文件,该配置文件不会更改配置上的任何内容)。