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