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