Commit | Line | Data |
---|---|---|
9c41f7e2 JR |
1 | /** |
2 | * Copyright (C) 2016 - Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com> | |
3 | * | |
4 | * This program is free software: you can redistribute it and/or modify | |
5 | * it under the terms of the GNU General Public License as published by | |
6 | * the Free Software Foundation, either version 3 of the License, or | |
7 | * (at your option) any later version. | |
8 | * | |
9 | * This program is distributed in the hope that it will be useful, | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | * GNU General Public License for more details. | |
13 | * | |
14 | * You should have received a copy of the GNU General Public License | |
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | */ | |
17 | import hudson.model.* | |
18 | import hudson.AbortException | |
19 | import hudson.console.HyperlinkNote | |
20 | import java.util.concurrent.CancellationException | |
21 | ||
22 | ||
23 | def jobs = hudson.model.Hudson.instance.items | |
24 | def jobStartWith = "kernel_" | |
25 | def toBuild = [] | |
26 | def counter = 0 | |
27 | ||
28 | def anotherBuild | |
29 | jobs.each { job -> | |
30 | def jobName = job.getName() | |
31 | if (jobName.startsWith(jobStartWith)) { | |
32 | counter = counter + 1 | |
33 | def lastBuild = job.getLastBuild() | |
34 | if (lastBuild == null || lastBuild.result != Result.SUCCESS) { | |
35 | toBuild.push(job) | |
36 | } else { | |
37 | println("\t"+ jobName + " Already built") | |
38 | } | |
39 | } | |
40 | } | |
41 | ||
42 | def ongoingBuild = [] | |
43 | def maxConcurrentBuild = 4 | |
44 | ||
45 | while (toBuild.size() != 0) { | |
46 | if(ongoingBuild.size() <= maxConcurrentBuild) { | |
47 | def job = toBuild.pop() | |
48 | ongoingBuild.push(job.scheduleBuild2(0)) | |
49 | println "\t triggering " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName) | |
50 | } else { | |
51 | sleep(5000) | |
52 | ongoingBuild.removeAll{ it.isCancelled() || it.isDone() } | |
53 | } | |
54 | } |