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