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