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