6c82904a065d00a4744eceb85acd1e6bde047c4c
[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       - iruya:
16           branch: 'stable/{stream}'
17           disabled: false
18       - hunter:
19           branch: 'stable/{stream}'
20           disabled: false
21
22     arch_tag:
23       - 'amd64':
24           slave_label: 'opnfv-build-ubuntu'
25       - 'arm64':
26           slave_label: 'opnfv-build-ubuntu-arm'
27
28     # yamllint disable rule:key-duplicates
29     image:
30       - 'core'
31       - 'healthcheck'
32       - 'smoke'
33
34     # settings for jobs run in multijob phases
35     build-job-settings: &build-job-settings
36       current-parameters: false
37       git-revision: true
38       node-parameters: false
39       predefined-parameters: |
40         PUSH_IMAGE=$PUSH_IMAGE
41         COMMIT_ID=$COMMIT_ID
42         GERRIT_REFNAME=$GERRIT_REFNAME
43         DOCKERFILE=$DOCKERFILE
44       kill-phase-on: FAILURE
45       abort-all-jobs: false
46
47     manifest-job-settings: &manifest-job-settings
48       current-parameters: false
49       git-revision: true
50       node-parameters: false
51       predefined-parameters:
52         GERRIT_REFNAME=$GERRIT_REFNAME
53       kill-phase-on: FAILURE
54       abort-all-jobs: false
55
56     # yamllint enable rule:key-duplicates
57     jobs:
58       - "functest-kubernetes-docker-{stream}"
59       - "functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}"
60       - "functest-kubernetes-{image}-docker-manifest-{stream}"
61
62 ########################
63 # job templates
64 ########################
65 - job-template:
66     name: 'functest-kubernetes-docker-{stream}'
67
68     project-type: multijob
69
70     disabled: '{obj:disabled}'
71
72     parameters:
73       - functest-kubernetes-job-parameters:
74           project: '{project}'
75           branch: '{branch}'
76           slave_label: 'opnfv-build-ubuntu'
77           arch_tag: 'amd64'
78
79     properties:
80       - throttle:
81           max-per-node: 1
82           option: 'project'
83
84     scm:
85       - git-scm
86
87     triggers:
88       - pollscm:
89           cron: "*/30 * * * *"
90       - gerrit-trigger-tag-created:
91           project: '{project}'
92
93     builders:
94       - multijob:
95           name: 'build functest-kubernetes-core images'
96           execution-type: PARALLEL
97           projects:
98             - name: 'functest-kubernetes-core-docker-build-amd64-{stream}'
99               <<: *build-job-settings
100             - name: 'functest-kubernetes-core-docker-build-arm64-{stream}'
101               <<: *build-job-settings
102       - multijob:
103           name: 'publish functest-kubernetes-core manifests'
104           execution-type: PARALLEL
105           projects:
106             - name: 'functest-kubernetes-core-docker-manifest-{stream}'
107               <<: *manifest-job-settings
108       - multijob:
109           name: 'build functest-kubernetes-healthcheck images'
110           execution-type: PARALLEL
111           projects:
112             - name: 'functest-kubernetes-healthcheck-docker-build-amd64-{stream}'
113               <<: *build-job-settings
114             - name: 'functest-kubernetes-healthcheck-docker-build-arm64-{stream}'
115               <<: *build-job-settings
116       - multijob:
117           name: 'publish functest-kubernetes-healthcheck manifests'
118           execution-type: PARALLEL
119           projects:
120             - name: 'functest-kubernetes-healthcheck-docker-manifest-{stream}'
121               <<: *manifest-job-settings
122       - multijob:
123           name: 'build all functest-kubernetes images'
124           condition: SUCCESSFUL
125           execution-type: PARALLEL
126           projects:
127             - name: 'functest-kubernetes-smoke-docker-build-amd64-{stream}'
128               <<: *build-job-settings
129             - name: 'functest-kubernetes-smoke-docker-build-arm64-{stream}'
130               <<: *build-job-settings
131       - multijob:
132           name: 'publish all manifests'
133           condition: SUCCESSFUL
134           execution-type: PARALLEL
135           projects:
136             - name: 'functest-kubernetes-smoke-docker-manifest-{stream}'
137               <<: *manifest-job-settings
138
139     publishers:
140       - 'functest-kubernetes-amd64-recipients'
141       - 'functest-kubernetes-arm64-recipients'
142
143 - job-template:
144     name: 'functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}'
145     disabled: '{obj:disabled}'
146     parameters:
147       - functest-kubernetes-job-parameters:
148           project: '{project}'
149           branch: '{branch}'
150           slave_label: '{slave_label}'
151           arch_tag: '{arch_tag}'
152     scm:
153       - git-scm
154     builders:
155       - shell: |
156           #!/bin/bash -ex
157           case "{arch_tag}" in
158           "arm64")
159               sudo amd64_dirs= arm64_dirs=docker/{image} bash ./build.sh ;;
160           *)
161               sudo amd64_dirs=docker/{image} arm64_dirs= bash ./build.sh ;;
162           esac
163           exit $?
164
165 - job-template:
166     name: 'functest-kubernetes-{image}-docker-manifest-{stream}'
167
168     parameters:
169       - project-parameter:
170           project: '{project}'
171           branch: '{branch}'
172       - label:
173           name: SLAVE_LABEL
174           default: 'opnfv-build-ubuntu'
175           description: 'Slave label on Jenkins'
176           all-nodes: false
177           node-eligibility: 'ignore-offline'
178       - string:
179           name: PROJECT
180           default: "{project}"
181           description: "Project name used to enable job conditions"
182       - string:
183           name: GIT_BASE
184           default: https://gerrit.opnfv.org/gerrit/$PROJECT
185           description: 'Git URL to use on this Jenkins Slave'
186       - string:
187           name: REPO
188           default: "opnfv"
189           description: "Repository name for functest-kubernetes images"
190
191
192     disabled: '{obj:disabled}'
193
194     builders:
195       - shell: |
196           #!/bin/bash -ex
197           case "{stream}" in
198           "master")
199               tag="latest" ;;
200           *)
201               tag="{stream}" ;;
202           esac
203           sudo manifest-tool push from-args \
204               --platforms linux/amd64,linux/arm64 \
205               --template $REPO/functest-kubernetes-{image}:ARCH-$tag \
206               --target $REPO/functest-kubernetes-{image}:$tag
207           exit $?
208
209 # parameter macro
210 - parameter:
211     name: functest-kubernetes-job-parameters
212     parameters:
213       - project-parameter:
214           project: '{project}'
215           branch: '{branch}'
216       - label:
217           name: SLAVE_LABEL
218           default: '{slave_label}'
219           description: 'Slave label on Jenkins'
220           all-nodes: false
221           node-eligibility: 'ignore-offline'
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