我正在尝试为我们要使其自动化的过程设置构建服务器,并且遇到了一个问题,我希望有一个简单的修复程序(或插件)。
最终目标是拥有一组作业,每个作业都会检查我们Perforce仓库的一小部分中的更改,然后执行任务。问题在于,这些任务中的每一个都需要整个软件仓库才能正确执行,并且由于该软件仓库很大(30 + GB),而且其中有许多任务(50+),因此实际上复制了该软件仓库并进行了同步将会浪费磁盘空间和网络带宽。
相反,我想拥有一个“主”作业来处理软件仓库(所有子作业共享),然后让每个子作业使用自己的工作区和“仅预览检查”填充选项在Jenkins Perforce插件(与p4 sync -k
同步)中。这样,每个子作业的工作区将仅存在,以便该作业能够检测到何时对其感兴趣的更改发生了,然后他们将在“主”工作区仓库中运行任务,一切都将正常工作!
除了我无法弄清楚如何触发子作业,并让他们在决定运行之前检查其本地工作区的更改。有什么办法让孩子在被另一工作触发时运行他们通常会运行的所有检查(如果只是计划每隔一段时间运行一次)?
或者也许有更好的方法来做我想做的事情?是否可以让我共享一个Perforce仓库,但有一些子作业仅在该仓库的一部分发生更改时才能运行?随着时间的推移,还将创建更多的子作业,因此能够轻松设置和配置它们也是一件好事。
答案 0 :(得分:0)
我终于在这里想出了一个解决方案,但这很令人费解。来了!
主作业执行Perforce同步,然后运行一个批处理脚本,该脚本使用curl来对每个子作业进行轮询:curl -X POST http://jenkins/view/Job/polling
。当子作业启用了Poll SCM
(但未设置时间表)时,这使他们能够在从Web API接收到轮询请求时轮询SCM。有点麻烦,但是行得通!