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