Switch Functest k8s docker builds to multijobs
[releng.git] / jjb / functest / functest-kubernetes-docker.yml
1 ---
2 ##############################################
3 # job configuration for docker build and push
4 ##############################################
5 - project:
6
7     name: functest-kubernetes-docker
8
9     project: functest-kubernetes
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
23     # yamllint disable rule:key-duplicates
24     image:
25       - 'core'
26
27     # settings for jobs run in multijob phases
28     build-job-settings: &build-job-settings
29       current-parameters: false
30       git-revision: true
31       node-parameters: false
32       predefined-parameters: |
33         PUSH_IMAGE=$PUSH_IMAGE
34         COMMIT_ID=$COMMIT_ID
35         GERRIT_REFNAME=$GERRIT_REFNAME
36         DOCKERFILE=$DOCKERFILE
37       kill-phase-on: FAILURE
38       abort-all-jobs: false
39
40     manifest-job-settings: &manifest-job-settings
41       current-parameters: false
42       git-revision: true
43       node-parameters: false
44       predefined-parameters:
45         GERRIT_REFNAME=$GERRIT_REFNAME
46       kill-phase-on: FAILURE
47       abort-all-jobs: false
48
49     # yamllint enable rule:key-duplicates
50     jobs:
51       - "functest-kubernetes-docker-{stream}"
52       - "functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}"
53
54 ########################
55 # job templates
56 ########################
57 - job-template:
58     name: 'functest-kubernetes-docker-{stream}'
59
60     project-type: multijob
61
62     disabled: '{obj:disabled}'
63
64     parameters:
65       - functest-kubernetes-job-parameters:
66           project: '{project}'
67           branch: '{branch}'
68           slave_label: 'opnfv-build-ubuntu'
69           arch_tag: 'amd64'
70
71     properties:
72       - throttle:
73           max-per-node: 1
74           option: 'project'
75
76     scm:
77       - git-scm
78
79     triggers:
80       - pollscm:
81           cron: "*/30 * * * *"
82       - gerrit-trigger-tag-created:
83           project: '{project}'
84
85     builders:
86       - multijob:
87           name: 'build functest-kubernetes-core images'
88           execution-type: PARALLEL
89           projects:
90             - name: 'functest-kubernetes-core-docker-build-amd64-{stream}'
91               <<: *build-job-settings
92
93     publishers:
94       - 'functest-kubernetes-amd64-recipients'
95
96 - job-template:
97     name: 'functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}'
98     disabled: '{obj:disabled}'
99     parameters:
100       - functest-kubernetes-job-parameters:
101           project: '{project}'
102           branch: '{branch}'
103           slave_label: '{slave_label}'
104           arch_tag: '{arch_tag}'
105     scm:
106       - git-scm
107     builders:
108       - shell: |
109           #!/bin/bash -ex
110           case "{stream}" in
111           "master")
112               tag="latest" ;;
113           *)
114               tag="{stream}" ;;
115           esac
116           (cd docker && sudo docker build --pull=true --no-cache --force-rm=true \
117               -t "$REPO/functest-kubernetes:$tag" .)
118           sudo docker push "$REPO/functest-kubernetes:$tag"
119           sudo docker rmi "$REPO/functest-kubernetes:$tag"
120           exit $?
121
122 # parameter macro
123 - parameter:
124     name: functest-kubernetes-job-parameters
125     parameters:
126       - project-parameter:
127           project: '{project}'
128           branch: '{branch}'
129       - label:
130           name: SLAVE_LABEL
131           default: '{slave_label}'
132           description: 'Slave label on Jenkins'
133       - string:
134           name: GIT_BASE
135           default: https://gerrit.opnfv.org/gerrit/$PROJECT
136           description: 'Git URL to use on this Jenkins Slave'
137       - string:
138           name: PUSH_IMAGE
139           default: "true"
140           description: "To enable/disable pushing the image to Dockerhub."
141       - string:
142           name: COMMIT_ID
143           default: ""
144           description: "commit id to make a snapshot docker image"
145       - string:
146           name: GERRIT_REFNAME
147           default: ""
148           description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1"
149       - string:
150           name: DOCKERFILE
151           default: "Dockerfile"
152           description: "Dockerfile to use for creating the image."
153       - string:
154           name: ARCH_TAG
155           default: "{arch_tag}"
156           description: "If set, this value will be added to the docker image tag as a prefix"
157       - string:
158           name: PROJECT
159           default: "{project}"
160           description: "Project name used to enable job conditions"
161       - string:
162           name: REPO
163           default: "opnfv"
164           description: "Repository name for functest images"
165
166 - publisher:
167     name: 'functest-kubernetes-amd64-recipients'
168     publishers:
169       - email:
170           recipients: >
171             jalausuch@suse.com morgan.richomme@orange.com
172             cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
173             juha.kosonen@nokia.com wangwulin@huawei.com
174             valentin.boucher@kontron.com