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