Dav*_* W. 5 jenkins-pipeline jenkins-2
我们在这个庄园中设置了Subversion存储库:
http://svn.vegicorp.net/svn/toast/api/trunkhttp://svn.vegicorp.net/svn/toast/api/1.0http://svn.vegicorp.net/svn/toast/data/trunkhttp://svn.vegicorp.net/svn/toast/data/branches/1.2http://svn.vegicorp.net/svn/toast/data/branches/1.3我为整个toast项目设置了Jenkins Multi-Pipeline构建,包括所有子项目 - 每个子项目都是一个jar文件.我想要的是Jenkins每次在一个toast项目中更改任何文件时都会触发一个新的构建.那个项目应该重建.这样,如果我们在Toast中创建一个新的子项目或在其中一个toast子项目中创建一个新的分支,Jenkins将自动为它创建一个新的构建.
这是我的Jenkins Multi-Branch设置:
分支来源
颠覆
- 项目存储库基础:
http://svn.vegicorp.net/svn/toast- 证书:
builder/*****- 包括分支:
*/trunk, */branches/*- 排除分支:
*/private- 物业策略:所有分行都拥有相同的物业
构建配置
- 模式:Jenkinsfile
构建触发器(未选中)
- 触发器远程构建(例如,从脚本)构建功能帮助:触发器*远程构建(例如,从脚本)
- 定期构建功能帮助:定期构建
- 在推广另一个项目时构建
- Maven依赖关系更新触发器功能帮助:Maven依赖关系更新触发器
- 如果没有另外运行,则定期
请注意," 构建触发器"列表列表不包括" 轮询SCM".存储库中的更改不会触发任何构建.Jenkinsfiles位于每个子项目的根目录.如果我强制重新索引,则会构建所有已更改的子项目并找到所有新分支.我最初定期检查并每分钟重新编制索引以获取更改,但这是klutzy,它似乎导致Jenkins消耗内存.
触发SCM更改的构建应该是非常基本的,但我没有看到这样的配置参数,就像我使用标准作业一样.我似乎也无法进入子项目并将其设置为触发构建.
必须有一些真正,非常简单的东西,我想念.
组态:
我终于找到了答案。我在Jenkins 的 Jira 数据库中找到了一个条目,其中提到了这个确切的问题。该问题称为SCM 轮询未在 Mercurial SCM 的多分支管道中执行。其他用户也纷纷附和。
答案是 Jenkins 多分支项目不需要轮询 SCM,因为索引分支可以为您做到这一点:
分支项目(子项目)不会孤立地进行轮询。相反,多分支项目(父文件夹)包含该功能作为分支索引的一部分。如果现有分支上有新的头,则会触发新的分支项目构建。如果没有在文件夹配置中运行,您只需选中定期复选框即可。
因此,我需要设置分支的重新索引。我对这个解决方案不满意,因为它看起来相当笨拙。我可以在 SVN 和 Git 中添加提交后和推送后挂钩,以便在发生更改时触发构建,然后定期重新索引(例如每小时一次)。问题在于配置这些钩子并保持它们最新。每个项目都需要自己的 POST 操作,这意味着每次项目更改时都会更新存储库服务器。通过轮询,我不必担心钩子维护。
| 归档时间: |
|
| 查看次数: |
5200 次 |
| 最近记录: |