Prepare Functest Kubernetes v1.29 release
[releng.git] / jjb / releng / releng-jobs.yaml
1 ---
2 - scm:
3     name: releng-scm
4     scm:
5       - git:
6           url: 'ssh://fbot@gerrit.opnfv.org:29418/releng'
7           refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*'
8           submodule:
9             recursive: true
10           branches:
11             - '{ref}'
12
13 - trigger:
14     name: releng-patchset-created
15     triggers:
16       - gerrit:
17           trigger-on:
18             - patchset-created-event
19             - comment-added-contains-event:
20                 comment-contains-value: 'recheck'
21             - comment-added-contains-event:
22                 comment-contains-value: 'reverify'
23           projects:
24             - project-compare-type: 'ANT'
25               project-pattern: 'releng'
26               branches:
27                 - branch-compare-type: 'ANT'
28                   branch-pattern: 'master'
29
30 - trigger:
31     name: releng-patchset-merged
32     triggers:
33       - gerrit:
34           trigger-on:
35             - change-merged-event
36             - comment-added-contains-event:
37                 comment-contains-value: 'remerge'
38           projects:
39             - project-compare-type: 'ANT'
40               project-pattern: 'releng'
41               branches:
42                 - branch-compare-type: 'ANT'
43                   branch-pattern: 'master'
44
45 - builder:
46     name: releng-jjb-verify
47     builders:
48       - shell: |
49           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
50           sudo DEBIAN_FRONTEND=noninteractive apt-get \
51             -o DPkg::Lock::Timeout=300 dist-upgrade -y
52           sudo DEBIAN_FRONTEND=noninteractive \
53           apt-get -o DPkg::Lock::Timeout=300 install jenkins-job-builder -y
54           jenkins-jobs test --recursive -o tmp jjb
55           rm -rf tmp
56
57 - builder:
58     name: releng-jjb-merge
59     builders:
60       - shell: |
61           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
62           sudo DEBIAN_FRONTEND=noninteractive apt-get \
63             -o DPkg::Lock::Timeout=300 dist-upgrade -y
64           sudo DEBIAN_FRONTEND=noninteractive \
65           apt-get -o DPkg::Lock::Timeout=300 install jenkins-job-builder -y
66           jenkins-jobs update --recursive --delete-old jjb
67
68 - parameter:
69     name: releng-jjb-node
70     parameters:
71       - label:
72           name: node
73           default: '{node}'
74
75 - job-template:
76     name: releng-jjb-verify
77     triggers:
78       - releng-patchset-created
79     scm:
80       - releng-scm:
81           ref: $GERRIT_REFSPEC
82     parameters:
83       - releng-jjb-node:
84           node: opnfv-build
85     builders:
86       - releng-jjb-verify
87
88 - project:
89     name: releng-jjb-verify
90     jobs:
91       - releng-jjb-verify
92
93 - job-template:
94     name: releng-jjb-merge
95     triggers:
96       - releng-patchset-merged
97     scm:
98       - releng-scm:
99           ref: master
100     parameters:
101       - releng-jjb-node:
102           node: opnfv-build
103     builders:
104       - releng-jjb-merge
105
106 - project:
107     name: releng-jjb-merge
108     jobs:
109       - releng-jjb-merge
110
111 - scm:
112     name: opnfv-scm
113     scm:
114       - git:
115           url: 'https://gerrit.opnfv.org/gerrit/{project}'
116           refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*'
117           submodule:
118             recursive: true
119           branches:
120             - '{ref}'
121
122 - trigger:
123     name: releng-tox-patchset-created
124     triggers:
125       - gerrit:
126           trigger-on:
127             - patchset-created-event
128             - comment-added-contains-event:
129                 comment-contains-value: recheck
130             - comment-added-contains-event:
131                 comment-contains-value: reverify
132           server-name: gerrit.opnfv.org
133           projects:
134             - project-compare-type: 'REG_EXP'
135               project-pattern: '^(?!functest).*'
136               branches:
137                 - branch-compare-type: 'ANT'
138                   branch-pattern: master
139                 - branch-compare-type: 'ANT'
140                   branch-pattern: stable/nile
141                 - branch-compare-type: 'ANT'
142                   branch-pattern: stable/moselle
143
144 - builder:
145     name: releng-tox
146     builders:
147       - shell: |
148           [ -f tox.ini ] || exit 0
149           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
150           sudo DEBIAN_FRONTEND=noninteractive apt-get \
151             -o DPkg::Lock::Timeout=300 dist-upgrade -y
152           sudo DEBIAN_FRONTEND=noninteractive \
153           apt-get -o DPkg::Lock::Timeout=300 install tox -y
154           tox --recreate
155
156 - parameter:
157     name: releng-tox-node
158     parameters:
159       - label:
160           name: node
161           default: '{node}'
162
163 - job-template:
164     name: releng-tox
165     triggers:
166       - releng-tox-patchset-created
167     scm:
168       - opnfv-scm:
169           ref: $GERRIT_REFSPEC
170           project: $GERRIT_PROJECT
171     parameters:
172       - releng-tox-node:
173           node: opnfv-build
174     builders:
175       - releng-tox
176
177 - project:
178     name: releng-tox
179     jobs:
180       - releng-tox
181
182 - project:
183     name: releng-release-jobs
184     stream:
185       - nile
186       - orinoco
187       - v1.22
188       - v1.23
189       - v1.24
190       - v1.25
191       - v1.26
192       - v1.27
193       - v1.28
194       - v1.29
195       - xena
196       - wallaby
197       - yoga
198       - zed
199       - '2023.1'
200       - '2023.2'
201     jobs:
202       - 'releng-release-{stream}-verify'
203       - 'releng-release-{stream}-merge'
204
205 - parameter:
206     name: stream-parameter
207     parameters:
208       - string:
209           name: STREAM
210           default: '{stream}'
211
212 - job-template:
213     name: 'releng-release-{stream}-verify'
214     scm:
215       - releng-scm:
216           ref: $GERRIT_REFSPEC
217     parameters:
218       - releng-jjb-node:
219           node: opnfv-build
220       - stream-parameter:
221           stream: '{stream}'
222       - string:
223           name: GIT_URL
224           default: ssh://fbot@gerrit.opnfv.org:29418/
225     triggers:
226       - gerrit:
227           server-name: 'gerrit.opnfv.org'
228           trigger-on:
229             - patchset-created-event:
230                 exclude-drafts: 'false'
231                 exclude-trivial-rebase: 'false'
232                 exclude-no-code-change: 'false'
233             - comment-added-contains-event:
234                 comment-contains-value: 'recheck'
235             - comment-added-contains-event:
236                 comment-contains-value: 'reverify'
237           projects:
238             - project-compare-type: 'ANT'
239               project-pattern: 'releng'
240               branches:
241                 - branch-compare-type: 'ANT'
242                   branch-pattern: '**/master'
243               file-paths:
244                 - compare-type: ANT
245                   pattern: 'releases/{stream}/**'
246                 - compare-type: ANT
247                   pattern: 'releases/schema.yaml'
248                 - compare-type: ANT
249                   pattern: 'releases/scripts/verify_schema.py'
250     builders:
251       - shell: |
252           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
253           sudo DEBIAN_FRONTEND=noninteractive apt-get \
254             -o DPkg::Lock::Timeout=300 dist-upgrade -y
255           sudo DEBIAN_FRONTEND=noninteractive \
256           apt-get -o DPkg::Lock::Timeout=300 install python3-pygerrit2 \
257             python3-ruamel.yaml  -y
258       - shell: !include-raw-escape:
259           - branch-or-tag.sh
260
261 - job-template:
262     name: 'releng-release-{stream}-merge'
263     scm:
264       - releng-scm:
265           ref: $GERRIT_REFSPEC
266     parameters:
267       - releng-jjb-node:
268           node: opnfv-build
269       - stream-parameter:
270           stream: '{stream}'
271       - string:
272           name: GIT_URL
273           default: ssh://fbot@gerrit.opnfv.org:29418/
274     triggers:
275       - gerrit:
276           trigger-on:
277             - change-merged-event
278             - comment-added-contains-event:
279                 comment-contains-value: 'remerge'
280           projects:
281             - project-compare-type: 'ANT'
282               project-pattern: 'releng'
283               branches:
284                 - branch-compare-type: 'ANT'
285                   branch-pattern: 'master'
286               file-paths:
287                 - compare-type: ANT
288                   pattern: 'releases/{stream}/**'
289     builders:
290       - shell: |
291           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
292           sudo DEBIAN_FRONTEND=noninteractive apt-get \
293             -o DPkg::Lock::Timeout=300 dist-upgrade -y
294           sudo DEBIAN_FRONTEND=noninteractive \
295           apt-get -o DPkg::Lock::Timeout=300 install python3-pygerrit2 \
296             python3-ruamel.yaml  -y
297       - shell: !include-raw-escape:
298           - branch-or-tag.sh
299
300 - builder:
301     name: lint-init
302     builders:
303       - shell: |
304           #!/bin/bash
305           # Ensure we start with a clean environment
306           rm -f bash-violation.log python-violation.log yaml-violation.log violation.log
307           git --no-pager diff --diff-filter=MCRAT --name-only HEAD^1 > modified_files
308
309 - builder:
310     name: lint-report
311     builders:
312       - shell: |
313           #!/bin/bash
314           if [[ -s violation.log ]]; then
315               cat violation.log
316               echo "Reporting lint result...."
317               set -x
318               msg="Found syntax error and/or coding style violation(s) in the files modified by your patchset."
319               sed -i -e "1s#^#${msg}\n\n#" violation.log
320               cmd="gerrit review -p $GERRIT_PROJECT -m \"$(cat violation.log)\" $GERRIT_PATCHSET_REVISION --notify NONE"
321               ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -p 29418 fbot@gerrit.opnfv.org "$cmd"
322
323               # Make sure the caller job failed
324               exit 1
325           fi
326
327 - builder:
328     name: lint-bash-code
329     builders:
330       - shell: |
331           #!/bin/bash
332           echo "Checking bash code..."
333           for f in $(egrep '\.sh$' modified_files)
334           do
335               bash -n "$f" 2>> bash-violation.log
336           done
337           if [[ -s bash-violation.log ]]; then
338               echo -e "Bash syntax error(s)\n---" >> violation.log
339               sed -e 's/^/ /g' bash-violation.log >> violation.log
340           fi
341
342 - builder:
343     name: lint-python-code
344     builders:
345       - shell: |
346           #!/bin/bash
347
348           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
349           sudo DEBIAN_FRONTEND=noninteractive apt-get \
350             -o DPkg::Lock::Timeout=300 dist-upgrade -y
351           sudo DEBIAN_FRONTEND=noninteractive \
352           apt-get -o DPkg::Lock::Timeout=300 install flake8 -y
353
354           echo "Checking python code..."
355           for f in $(egrep '\.py$' modified_files)
356           do
357               flake8 "$f" >> python-violation.log
358           done
359           if [[ -s python-violation.log ]]; then
360               echo -e "Python violation(s)\n---" >> violation.log
361               sed -e 's/^/ /g' python-violation.log >> violation.log
362           fi
363
364 - builder:
365     name: lint-yaml-code
366     builders:
367       - shell: |
368           #!/bin/bash
369
370           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
371           sudo DEBIAN_FRONTEND=noninteractive apt-get \
372             -o DPkg::Lock::Timeout=300 dist-upgrade -y
373           sudo DEBIAN_FRONTEND=noninteractive \
374           apt-get -o DPkg::Lock::Timeout=300 install yamllint -y
375
376           echo "Checking yaml file..."
377           for f in $(egrep '\.ya?ml$' modified_files)
378           do
379               yamllint "$f" >> yaml-violation.log
380           done
381           if [[ -s yaml-violation.log ]]; then
382               echo -e "YAML violation(s)\n---" >> violation.log
383               sed -e 's/^/ /g' yaml-violation.log >> violation.log
384           fi
385
386 - builder:
387     name: lint-all-code
388     builders:
389       - lint-init
390       - lint-bash-code
391       - lint-python-code
392       - lint-yaml-code
393       - lint-report
394
395 - project:
396     name: releng-lint
397     jobs:
398       - 'releng-lint-verify'
399
400 - job-template:
401     name: 'releng-lint-verify'
402     parameters:
403       - releng-jjb-node:
404           node: opnfv-build
405     scm:
406       - releng-scm:
407           ref: $GERRIT_REFSPEC
408     triggers:
409       - gerrit:
410           server-name: 'gerrit.opnfv.org'
411           trigger-on:
412             - patchset-created-event
413             - comment-added-contains-event:
414                 comment-contains-value: recheck
415             - comment-added-contains-event:
416                 comment-contains-value: reverify
417           projects:
418             - project-compare-type: 'ANT'
419               project-pattern: 'releng'
420               branches:
421                 - branch-compare-type: 'ANT'
422                   branch-pattern: 'master'
423               file-paths:
424                 - compare-type: ANT
425                   pattern: '**/*.py'
426                 - compare-type: ANT
427                   pattern: '**/*.sh'
428                 - compare-type: ANT
429                   pattern: '**/*.yml'
430                 - compare-type: ANT
431                   pattern: '**/*.yaml'
432     builders:
433       - lint-all-code
434
435 - project:
436     name: releng-generate-artifacts-index-pages
437     jobs:
438       - releng-generate-artifacts-index-pages
439
440 - job-template:
441     name: releng-generate-artifacts-index-pages
442     scm:
443       - releng-scm:
444           ref: master
445     parameters:
446       - releng-jjb-node:
447           node: opnfv-build
448     triggers:
449       - timed: '@daily'
450     builders:
451       - generate-artifact-html
452
453 - builder:
454     name: generate-artifact-html
455     builders:
456       - shell: |
457           curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
458           echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \
459             /etc/apt/sources.list.d/google-cloud-sdk.list
460           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
461           sudo DEBIAN_FRONTEND=noninteractive apt-get \
462             -o DPkg::Lock::Timeout=300 install \
463             google-cloud-sdk -y
464           cd $WORKSPACE/utils/
465           ./artifacts.opnfv.org.sh
466
467 - project:
468     name: releng-artifact-cleanup
469     jobs:
470       - releng-artifact-cleanup
471
472 - job-template:
473     name: releng-artifact-cleanup
474     scm:
475       - releng-scm:
476           ref: master
477     parameters:
478       - releng-jjb-node:
479           node: opnfv-build
480     triggers:
481       - timed: '@daily'
482     builders:
483       - releng-artifact-cleanup
484
485 - builder:
486     name: releng-artifact-cleanup
487     builders:
488       - shell: |
489           curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
490           echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \
491             /etc/apt/sources.list.d/google-cloud-sdk.list
492           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
493           sudo DEBIAN_FRONTEND=noninteractive apt-get \
494             -o DPkg::Lock::Timeout=300 install \
495             google-cloud-sdk -y
496           $WORKSPACE/utils/retention_script.sh