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