92eecb94527ecb6b981bf94a9348d9a12073454c
[releng.git] / jjb / functest / functest-kubernetes-docker.yaml
1 ---
2 ##############################################
3 # job configuration for docker build and push
4 ##############################################
5 - project:
6
7     name: functest-kubernetes-docker
8
9     project: functest-kubernetes
10
11     stream:
12       - master:
13           branch: '{stream}'
14           disabled: false
15       - kali:
16           branch: 'stable/{stream}'
17           disabled: false
18       - jerma:
19           branch: 'stable/{stream}'
20           disabled: false
21       - iruya:
22           branch: 'stable/{stream}'
23           disabled: false
24       - hunter:
25           branch: 'stable/{stream}'
26           disabled: false
27
28     arch_tag:
29       - 'amd64':
30           slave_label: 'lf-build2'
31       - 'arm64':
32           slave_label: 'opnfv-build-ubuntu-arm'
33
34     # yamllint disable rule:key-duplicates
35     image:
36       - 'core'
37       - 'healthcheck'
38       - 'smoke'
39       - 'cnf'
40       - 'security'
41       - 'benchmarking'
42
43     # settings for jobs run in multijob phases
44     build-job-settings: &build-job-settings
45       current-parameters: false
46       git-revision: true
47       node-parameters: false
48       predefined-parameters: |
49         PUSH_IMAGE=$PUSH_IMAGE
50         COMMIT_ID=$COMMIT_ID
51         GERRIT_REFNAME=$GERRIT_REFNAME
52         DOCKERFILE=$DOCKERFILE
53       kill-phase-on: FAILURE
54       abort-all-jobs: false
55
56     manifest-job-settings: &manifest-job-settings
57       current-parameters: false
58       git-revision: true
59       node-parameters: false
60       predefined-parameters:
61         GERRIT_REFNAME=$GERRIT_REFNAME
62       kill-phase-on: FAILURE
63       abort-all-jobs: false
64
65     # yamllint enable rule:key-duplicates
66     jobs:
67       - "functest-kubernetes-docker-{stream}"
68       - "functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}"
69       - "functest-kubernetes-{image}-docker-manifest-{stream}"
70
71 ########################
72 # job templates
73 ########################
74 - job-template:
75     name: 'functest-kubernetes-docker-{stream}'
76
77     project-type: multijob
78
79     disabled: '{obj:disabled}'
80
81     parameters:
82       - functest-kubernetes-job-parameters:
83           project: '{project}'
84           branch: '{branch}'
85           slave_label: 'lf-build2'
86           arch_tag: 'amd64'
87
88     properties:
89       - throttle:
90           max-per-node: 1
91           option: 'project'
92
93     scm:
94       - git-scm
95
96     triggers:
97       - pollscm:
98           cron: "*/30 * * * *"
99       - gerrit-trigger-tag-created:
100           project: '{project}'
101
102     builders:
103       - multijob:
104           name: 'build functest-kubernetes-core images'
105           execution-type: PARALLEL
106           projects:
107             - name: 'functest-kubernetes-core-docker-build-amd64-{stream}'
108               <<: *build-job-settings
109             - name: 'functest-kubernetes-core-docker-build-arm64-{stream}'
110               <<: *build-job-settings
111       - multijob:
112           name: 'publish functest-kubernetes-core manifests'
113           execution-type: PARALLEL
114           projects:
115             - name: 'functest-kubernetes-core-docker-manifest-{stream}'
116               <<: *manifest-job-settings
117       - multijob:
118           name: 'build functest-kubernetes-[healthcheck,cnf,security] images'
119           execution-type: PARALLEL
120           projects:
121             - name: 'functest-kubernetes-healthcheck-docker-build-amd64-{stream}'
122               <<: *build-job-settings
123             - name: 'functest-kubernetes-healthcheck-docker-build-arm64-{stream}'
124               <<: *build-job-settings
125             - name: 'functest-kubernetes-cnf-docker-build-amd64-{stream}'
126               <<: *build-job-settings
127             - name: 'functest-kubernetes-cnf-docker-build-arm64-{stream}'
128               <<: *build-job-settings
129             - name: 'functest-kubernetes-security-docker-build-amd64-{stream}'
130               <<: *build-job-settings
131             - name: 'functest-kubernetes-security-docker-build-arm64-{stream}'
132               <<: *build-job-settings
133       - multijob:
134           name: 'publish functest-kubernetes-[healthcheck,cnf,security] manifests'
135           execution-type: PARALLEL
136           projects:
137             - name: 'functest-kubernetes-healthcheck-docker-manifest-{stream}'
138               <<: *manifest-job-settings
139             - name: 'functest-kubernetes-cnf-docker-manifest-{stream}'
140               <<: *manifest-job-settings
141             - name: 'functest-kubernetes-security-docker-manifest-{stream}'
142               <<: *manifest-job-settings
143       - multijob:
144           name: 'build functest-kubernetes-smoke image'
145           condition: SUCCESSFUL
146           execution-type: PARALLEL
147           projects:
148             - name: 'functest-kubernetes-smoke-docker-build-amd64-{stream}'
149               <<: *build-job-settings
150             - name: 'functest-kubernetes-smoke-docker-build-arm64-{stream}'
151               <<: *build-job-settings
152       - multijob:
153           name: 'publish functest-kubernetes-smoke manifests'
154           condition: SUCCESSFUL
155           execution-type: PARALLEL
156           projects:
157             - name: 'functest-kubernetes-smoke-docker-manifest-{stream}'
158               <<: *manifest-job-settings
159       - multijob:
160           name: 'build functest-kubernetes-benchmarking image'
161           condition: SUCCESSFUL
162           execution-type: PARALLEL
163           projects:
164             - name: 'functest-kubernetes-benchmarking-docker-build-amd64-{stream}'
165               <<: *build-job-settings
166             - name: 'functest-kubernetes-benchmarking-docker-build-arm64-{stream}'
167               <<: *build-job-settings
168       - multijob:
169           name: 'publish functest-kubernetes-benchmarking manifests'
170           condition: SUCCESSFUL
171           execution-type: PARALLEL
172           projects:
173             - name: 'functest-kubernetes-benchmarking-docker-manifest-{stream}'
174               <<: *manifest-job-settings
175
176     publishers:
177       - 'functest-kubernetes-amd64-recipients'
178       - 'functest-kubernetes-arm64-recipients'
179
180 - job-template:
181     name: 'functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}'
182     disabled: '{obj:disabled}'
183     parameters:
184       - functest-kubernetes-job-parameters:
185           project: '{project}'
186           branch: '{branch}'
187           slave_label: '{slave_label}'
188           arch_tag: '{arch_tag}'
189     scm:
190       - git-scm
191     builders:
192       - shell: |
193           #!/bin/bash -ex
194           case "{arch_tag}" in
195           "arm64")
196               sudo amd64_dirs= arm_dirs= arm64_dirs=docker/{image} bash ./build.sh ;;
197           *)
198               sudo amd64_dirs=docker/{image} arm_dirs= arm64_dirs= bash ./build.sh ;;
199           esac
200           exit $?
201
202 - job-template:
203     name: 'functest-kubernetes-{image}-docker-manifest-{stream}'
204
205     parameters:
206       - project-parameter:
207           project: '{project}'
208           branch: '{branch}'
209       - label:
210           name: SLAVE_LABEL
211           default: 'lf-build2'
212           description: 'Slave label on Jenkins'
213           all-nodes: false
214           node-eligibility: 'ignore-offline'
215       - string:
216           name: PROJECT
217           default: "{project}"
218           description: "Project name used to enable job conditions"
219       - string:
220           name: GIT_BASE
221           default: https://gerrit.opnfv.org/gerrit/$PROJECT
222           description: 'Git URL to use on this Jenkins Slave'
223       - string:
224           name: REPO
225           default: "opnfv"
226           description: "Repository name for functest-kubernetes images"
227
228
229     disabled: '{obj:disabled}'
230
231     builders:
232       - shell: |
233           #!/bin/bash -ex
234           case "{stream}" in
235           "master")
236               tag="latest" ;;
237           *)
238               tag="{stream}" ;;
239           esac
240           sudo manifest-tool push from-args \
241               --platforms linux/amd64,linux/arm64 \
242               --template $REPO/functest-kubernetes-{image}:ARCH-$tag \
243               --target $REPO/functest-kubernetes-{image}:$tag
244           exit $?
245
246 # parameter macro
247 - parameter:
248     name: functest-kubernetes-job-parameters
249     parameters:
250       - project-parameter:
251           project: '{project}'
252           branch: '{branch}'
253       - label:
254           name: SLAVE_LABEL
255           default: '{slave_label}'
256           description: 'Slave label on Jenkins'
257           all-nodes: false
258           node-eligibility: 'ignore-offline'
259       - string:
260           name: GIT_BASE
261           default: https://gerrit.opnfv.org/gerrit/$PROJECT
262           description: 'Git URL to use on this Jenkins Slave'
263       - string:
264           name: PUSH_IMAGE
265           default: "true"
266           description: "To enable/disable pushing the image to Dockerhub."
267       - string:
268           name: COMMIT_ID
269           default: ""
270           description: "commit id to make a snapshot docker image"
271       - string:
272           name: GERRIT_REFNAME
273           default: ""
274           description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1"
275       - string:
276           name: DOCKERFILE
277           default: "Dockerfile"
278           description: "Dockerfile to use for creating the image."
279       - string:
280           name: ARCH_TAG
281           default: "{arch_tag}"
282           description: "If set, this value will be added to the docker image tag as a prefix"
283       - string:
284           name: PROJECT
285           default: "{project}"
286           description: "Project name used to enable job conditions"
287       - string:
288           name: REPO
289           default: "opnfv"
290           description: "Repository name for functest-kubernetes images"
291
292 # publisher macros
293 - publisher:
294     name: 'functest-kubernetes-arm64-recipients'
295     publishers:
296       - email:
297           recipients: >
298             cristina.pauna@enea.com
299             alexandru.avadanii@enea.com
300             delia.popescu@enea.com
301
302 - publisher:
303     name: 'functest-kubernetes-amd64-recipients'
304     publishers:
305       - email:
306           recipients: >
307             jalausuch@suse.com morgan.richomme@orange.com
308             cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
309             juha.kosonen@nokia.com wangwulin@huawei.com
310             valentin.boucher@kontron.com