Merge "Pharos Dashboard: Deploy once config is in place"
[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         GERRIT_REFNAME=$GERRIT_REFNAME
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         GERRIT_REFNAME=$GERRIT_REFNAME
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       - gerrit-trigger-tag-created:
93           project: '{project}'
94
95     builders:
96       - multijob:
97           name: 'build functest-core images'
98           execution-type: PARALLEL
99           projects:
100             - name: 'functest-core-docker-build-amd64-{stream}'
101               <<: *build-job-settings
102             - name: 'functest-core-docker-build-arm64-{stream}'
103               <<: *build-job-settings
104       - multijob:
105           name: 'publish functest-core manifests'
106           execution-type: PARALLEL
107           projects:
108             - name: 'functest-core-docker-manifest-{stream}'
109               <<: *manifest-job-settings
110       - multijob:
111           name: 'build all functest images'
112           condition: SUCCESSFUL
113           execution-type: PARALLEL
114           projects:
115             - name: 'functest-healthcheck-docker-build-amd64-{stream}'
116               <<: *build-job-settings
117             - name: 'functest-healthcheck-docker-build-arm64-{stream}'
118               <<: *build-job-settings
119             - name: 'functest-features-docker-build-amd64-{stream}'
120               <<: *build-job-settings
121             - name: 'functest-features-docker-build-arm64-{stream}'
122               <<: *build-job-settings
123             - name: 'functest-components-docker-build-amd64-{stream}'
124               <<: *build-job-settings
125             - name: 'functest-components-docker-build-arm64-{stream}'
126               <<: *build-job-settings
127             - name: 'functest-parser-docker-build-amd64-{stream}'
128               <<: *build-job-settings
129             - name: 'functest-parser-docker-build-arm64-{stream}'
130               <<: *build-job-settings
131             - name: 'functest-smoke-docker-build-amd64-{stream}'
132               <<: *build-job-settings
133             - name: 'functest-smoke-docker-build-arm64-{stream}'
134               <<: *build-job-settings
135             - name: 'functest-vnf-docker-build-amd64-{stream}'
136               <<: *build-job-settings
137             - name: 'functest-vnf-docker-build-arm64-{stream}'
138               <<: *build-job-settings
139             - name: 'functest-restapi-docker-build-amd64-{stream}'
140               <<: *build-job-settings
141             - name: 'functest-restapi-docker-build-arm64-{stream}'
142               <<: *build-job-settings
143       - multijob:
144           name: 'publish all manifests'
145           condition: SUCCESSFUL
146           execution-type: PARALLEL
147           projects:
148             - name: 'functest-healthcheck-docker-manifest-{stream}'
149               <<: *manifest-job-settings
150             - name: 'functest-features-docker-manifest-{stream}'
151               <<: *manifest-job-settings
152             - name: 'functest-components-docker-manifest-{stream}'
153               <<: *manifest-job-settings
154             - name: 'functest-parser-docker-manifest-{stream}'
155               <<: *manifest-job-settings
156             - name: 'functest-smoke-docker-manifest-{stream}'
157               <<: *manifest-job-settings
158             - name: 'functest-vnf-docker-manifest-{stream}'
159               <<: *manifest-job-settings
160             - name: 'functest-restapi-docker-manifest-{stream}'
161               <<: *manifest-job-settings
162
163     publishers:
164       - 'functest-amd64-recipients'
165       - 'functest-arm64-recipients'
166
167 - job-template:
168     name: 'functest-{image}-docker-build-{arch_tag}-{stream}'
169     disabled: '{obj:disabled}'
170     parameters:
171       - job-parameters:
172           project: '{project}'
173           branch: '{branch}'
174           slave_label: '{slave_label}'
175           arch_tag: '{arch_tag}'
176     scm:
177       - git-scm
178     builders:
179       - shell: |
180           #!/bin/bash -ex
181           case "{arch_tag}" in
182           "arm64")
183               sudo amd64_dirs= arm64_dirs=docker/{image} bash ./build.sh ;;
184           *)
185               sudo amd64_dirs=docker/{image} arm64_dirs= bash ./build.sh ;;
186           esac
187           exit $?
188
189 - job-template:
190     name: 'functest-{image}-docker-manifest-{stream}'
191
192     parameters:
193       - project-parameter:
194           project: '{project}'
195           branch: '{branch}'
196       - label:
197           name: SLAVE_LABEL
198           default: 'opnfv-build-ubuntu'
199           description: 'Slave label on Jenkins'
200       - string:
201           name: PROJECT
202           default: "{project}"
203           description: "Project name used to enable job conditions"
204       - string:
205           name: GIT_BASE
206           default: https://gerrit.opnfv.org/gerrit/$PROJECT
207           description: 'Git URL to use on this Jenkins Slave'
208
209     disabled: '{obj:disabled}'
210
211     builders:
212       - shell: |
213           #!/bin/bash -ex
214           case "{stream}" in
215           "master")
216               tag="latest" ;;
217           *)
218               tag="{stream}" ;;
219           esac
220           sudo manifest-tool push from-args \
221               --platforms linux/amd64,linux/arm64 \
222               --template opnfv/functest-{image}:ARCH-$tag \
223               --target opnfv/functest-{image}:$tag
224           exit $?
225
226 # parameter macro
227 - parameter:
228     name: job-parameters
229     parameters:
230       - project-parameter:
231           project: '{project}'
232           branch: '{branch}'
233       - label:
234           name: SLAVE_LABEL
235           default: '{slave_label}'
236           description: 'Slave label on Jenkins'
237       - string:
238           name: GIT_BASE
239           default: https://gerrit.opnfv.org/gerrit/$PROJECT
240           description: 'Git URL to use on this Jenkins Slave'
241       - string:
242           name: PUSH_IMAGE
243           default: "true"
244           description: "To enable/disable pushing the image to Dockerhub."
245       - string:
246           name: COMMIT_ID
247           default: ""
248           description: "commit id to make a snapshot docker image"
249       - string:
250           name: GERRIT_REFNAME
251           default: ""
252           description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1"
253       - string:
254           name: DOCKERFILE
255           default: "Dockerfile"
256           description: "Dockerfile to use for creating the image."
257       - string:
258           name: ARCH_TAG
259           default: "{arch_tag}"
260           description: "If set, this value will be added to the docker image tag as a prefix"
261       - string:
262           name: PROJECT
263           default: "{project}"
264           description: "Project name used to enable job conditions"
265
266 # publisher macros
267 - publisher:
268     name: 'functest-arm64-recipients'
269     publishers:
270       - email:
271           recipients: >
272             cristina.pauna@enea.com
273             alexandru.avadanii@enea.com
274             delia.popescu@enea.com
275
276 - publisher:
277     name: 'functest-amd64-recipients'
278     publishers:
279       - email:
280           recipients: >
281             jalausuch@suse.com morgan.richomme@orange.com
282             cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
283             juha.kosonen@nokia.com wangwulin@huawei.com