jjb: Add jobs for building ci/dev images
[lttng-ci.git] / pipelines / images / default.groovy
CommitLineData
d329b32d
KS
1#!groovy
2
3def OS = '{{OS}}'
4def RELEASES = {{RELEASES}}
5def ARCHES = {{ARCHES}}
6def IMAGE_TYPES = {{IMAGE_TYPES}}
7def PROFILES = {{PROFILES}}
8def c = [RELEASES,
9 ARCHES,
10 IMAGE_TYPES].combinations()
11c.removeAll({
12 (params.ARCH_FILTER != 'all' && it[1] != params.ARCH_FILTER) ||
13 (params.IMAGE_TYPE_FILTER != 'all' && it[2] != params.IMAGE_TYPE_FILTER) ||
14 (params.RELEASE_FILTER != 'all' && it[0] != params.RELEASE_FILTER)
15})
16
17// Skip i386 Vms
18c.removeAll({
19 it[1] == 'i386' && it[2] == 'vm'
20})
21
22def base_image_tasks = [:]
23def profile_image_tasks = [:]
24for(int index = 0; index < c.size(); index++) {
25 def envMap = [
26 RELEASE: c[index][0],
27 ARCH: c[index][1],
28 IMAGE_TYPE: c[index][2]
29 ]
30 def image_name = "${OS}/${envMap.RELEASE}/${envMap.ARCH}/${envMap.IMAGE_TYPE}"
31 base_image_tasks[image_name] = { ->
32 def job_ids = []
33 stage("base:${image_name}") {
34 print(envMap)
35 build(
36 job: 'images_distrobuilder',
37 parameters: [
38 string(name: 'OS', value: OS),
39 string(name: 'RELEASE', value: envMap.RELEASE),
40 string(name: 'ARCH', value: envMap.ARCH),
41 string(name: 'IMAGE_TYPE', value: envMap.IMAGE_TYPE),
42 string(name: 'GIT_URL', value: params.GIT_URL),
43 string(name: 'GIT_BRANCH', value: params.GIT_BRANCH)
44 ]
45 )
46 }
47 }
48 for (int profile_index = 0; profile_index < PROFILES.size(); profile_index++) {
49 // Using a second map gets around some weirdness with the closures finding
50 // PROFILES[profile_index] where most jobs would have a null value for the
51 // profile
52 def envMap2 = envMap.clone()
53 envMap2.PROFILE = PROFILES[profile_index]
54 if (env.PROFILE_FILTER == 'all' || env.PROFILE_FILTER == PROFILES[profile_index]) {
55 profile_image_tasks["${PROFILES[profile_index]}:${image_name}"] = { ->
56 print(envMap2)
57 build(
58 job: 'images_imagebuilder',
59 parameters: [
60 string(name: 'OS', value: OS),
61 string(name: 'RELEASE', value: envMap2.RELEASE),
62 string(name: 'ARCH', value: envMap2.ARCH),
63 string(name: 'IMAGE_TYPE', value: envMap2.IMAGE_TYPE),
64 string(name: 'PROFILE', value: envMap2.PROFILE),
65 string(name: 'GIT_URL', value: params.GIT_URL),
66 string(name: 'GIT_BRANCH', value: params.GIT_BRANCH)
67 ]
68 )
69 }
70 }
71 }
72}
73
74if (!params.SKIP_BASE_IMAGES) {
75 stage("base images") {
76 parallel(base_image_tasks)
77 }
78}
79
80if (!params.SKIP_PROFILE_IMAGES) {
81 // While it's possible to have the tasks in "base images" start
82 // their respective profile images_imagebuilder steps, it ends
83 // up creating a pipeline overview and log that is difficult to
84 // read in the Jenkins interface.
85 stage("profile images") {
86 parallel(profile_image_tasks)
87 }
88}
This page took 0.025543 seconds and 4 git commands to generate.