Jenkins 不停地构建任务处理
现象
某次配置 jenkins 任务后,启动构建任务,出现一个现象:本地构建的还在进行中、没有结束,下一次构建任务又自动触发了,并处于等待状态,一旦第一个任务结束后,自动触发下一个就会继续下去,如果不人为的干预停止或者出现异常,那么这个工程的构建任务会一直进行下去。
如果不是节点网络断了,那么就不止连续跑200次了。
从网上搜索结果看,是 Jenkins 配置的映射分支存在多个导致的。
查看 console 日志:
以前正常的 console 日志:
对比着不难看出,在远程节点的 jenkins 工作空间的工程目录下, 存在两个 feature/demo 分支,一个是远程分支,一个是本地分支(这应该是我曾经在该目录中调试导致的),接着触发了 Scheduling another build to catch up with MobileAutomation_iOS,应该就是这个导致了 本次构建还没跑完、又开始了下一次的构建。
解决方法
方式一:到 Jenkins 节点机子上的工作空间,删除工程目录,重新构建任务。
方式二:指定特定的分支。
但是我需要为了在构建时勾选动态变化的分支,配置了 ${iOS_branch},所以这种方式虽然可以解决问题,但是影响我的其他需求。
方式三:过滤分支。
根据报错,jenkins 检测到了工作空间中存在的 feature/demo 分支,而我预期需要 checkout 的分支是 refs/remotes/origin/feature/demo,所以可以使用过滤把不想要的分支去掉。这是目前想到最好的方法了。
这边加了一个 .origin. 来过滤掉工作空间中本地分支,这样执行构建任务,就不会出现连续构建了。
另外,使用定时触发时会用到默认拉取的分支,所以我也把默认分支前面加了 origin。