Prepare 2023.2 release jobs
[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       - xena
195       - wallaby
196       - yoga
197       - zed
198       - '2023.1'
199       - '2023.2'
200     jobs:
201       - 'releng-release-{stream}-verify'
202       - 'releng-release-{stream}-merge'
203
204 - parameter:
205     name: stream-parameter
206     parameters:
207       - string:
208           name: STREAM
209           default: '{stream}'
210
211 - job-template:
212     name: 'releng-release-{stream}-verify'
213     scm:
214       - releng-scm:
215           ref: $GERRIT_REFSPEC
216     parameters:
217       - releng-jjb-node:
218           node: opnfv-build
219       - stream-parameter:
220           stream: '{stream}'
221       - string:
222           name: GIT_URL
223           default: ssh://fbot@gerrit.opnfv.org:29418/
224     triggers:
225       - gerrit:
226           server-name: 'gerrit.opnfv.org'
227           trigger-on:
228             - patchset-created-event:
229                 exclude-drafts: 'false'
230                 exclude-trivial-rebase: 'false'
231                 exclude-no-code-change: 'false'
232             - comment-added-contains-event:
233                 comment-contains-value: 'recheck'
234             - comment-added-contains-event:
235                 comment-contains-value: 'reverify'
236           projects:
237             - project-compare-type: 'ANT'
238               project-pattern: 'releng'
239               branches:
240                 - branch-compare-type: 'ANT'
241                   branch-pattern: '**/master'
242               file-paths:
243                 - compare-type: ANT
244                   pattern: 'releases/{stream}/**'
245                 - compare-type: ANT
246                   pattern: 'releases/schema.yaml'
247                 - compare-type: ANT
248                   pattern: 'releases/scripts/verify_schema.py'
249     builders:
250       - shell: |
251           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
252           sudo DEBIAN_FRONTEND=noninteractive apt-get \
253             -o DPkg::Lock::Timeout=300 dist-upgrade -y
254           sudo DEBIAN_FRONTEND=noninteractive \
255           apt-get -o DPkg::Lock::Timeout=300 install python3-pygerrit2 \
256             python3-ruamel.yaml  -y
257       - shell: !include-raw-escape:
258           - branch-or-tag.sh
259
260 - job-template:
261     name: 'releng-release-{stream}-merge'
262     scm:
263       - releng-scm:
264           ref: $GERRIT_REFSPEC
265     parameters:
266       - releng-jjb-node:
267           node: opnfv-build
268       - stream-parameter:
269           stream: '{stream}'
270       - string:
271           name: GIT_URL
272           default: ssh://fbot@gerrit.opnfv.org:29418/
273     triggers:
274       - gerrit:
275           trigger-on:
276             - change-merged-event
277             - comment-added-contains-event:
278                 comment-contains-value: 'remerge'
279           projects:
280             - project-compare-type: 'ANT'
281               project-pattern: 'releng'
282               branches:
283                 - branch-compare-type: 'ANT'
284                   branch-pattern: 'master'
285               file-paths:
286                 - compare-type: ANT
287                   pattern: 'releases/{stream}/**'
288     builders:
289       - shell: |
290           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
291           sudo DEBIAN_FRONTEND=noninteractive apt-get \
292             -o DPkg::Lock::Timeout=300 dist-upgrade -y
293           sudo DEBIAN_FRONTEND=noninteractive \
294           apt-get -o DPkg::Lock::Timeout=300 install python3-pygerrit2 \
295             python3-ruamel.yaml  -y
296       - shell: !include-raw-escape:
297           - branch-or-tag.sh
298
299 - builder:
300     name: lint-init
301     builders:
302       - shell: |
303           #!/bin/bash
304           # Ensure we start with a clean environment
305           rm -f bash-violation.log python-violation.log yaml-violation.log violation.log
306           git --no-pager diff --diff-filter=MCRAT --name-only HEAD^1 > modified_files
307
308 - builder:
309     name: lint-report
310     builders:
311       - shell: |
312           #!/bin/bash
313           if [[ -s violation.log ]]; then
314               cat violation.log
315               echo "Reporting lint result...."
316               set -x
317               msg="Found syntax error and/or coding style violation(s) in the files modified by your patchset."
318               sed -i -e "1s#^#${msg}\n\n#" violation.log
319               cmd="gerrit review -p $GERRIT_PROJECT -m \"$(cat violation.log)\" $GERRIT_PATCHSET_REVISION --notify NONE"
320               ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -p 29418 fbot@gerrit.opnfv.org "$cmd"
321
322               # Make sure the caller job failed
323               exit 1
324           fi
325
326 - builder:
327     name: lint-bash-code
328     builders:
329       - shell: |
330           #!/bin/bash
331           echo "Checking bash code..."
332           for f in $(egrep '\.sh$' modified_files)
333           do
334               bash -n "$f" 2>> bash-violation.log
335           done
336           if [[ -s bash-violation.log ]]; then
337               echo -e "Bash syntax error(s)\n---" >> violation.log
338               sed -e 's/^/ /g' bash-violation.log >> violation.log
339           fi
340
341 - builder:
342     name: lint-python-code
343     builders:
344       - shell: |
345           #!/bin/bash
346
347           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
348           sudo DEBIAN_FRONTEND=noninteractive apt-get \
349             -o DPkg::Lock::Timeout=300 dist-upgrade -y
350           sudo DEBIAN_FRONTEND=noninteractive \
351           apt-get -o DPkg::Lock::Timeout=300 install flake8 -y
352
353           echo "Checking python code..."
354           for f in $(egrep '\.py$' modified_files)
355           do
356               flake8 "$f" >> python-violation.log
357           done
358           if [[ -s python-violation.log ]]; then
359               echo -e "Python violation(s)\n---" >> violation.log
360               sed -e 's/^/ /g' python-violation.log >> violation.log
361           fi
362
363 - builder:
364     name: lint-yaml-code
365     builders:
366       - shell: |
367           #!/bin/bash
368
369           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
370           sudo DEBIAN_FRONTEND=noninteractive apt-get \
371             -o DPkg::Lock::Timeout=300 dist-upgrade -y
372           sudo DEBIAN_FRONTEND=noninteractive \
373           apt-get -o DPkg::Lock::Timeout=300 install yamllint -y
374
375           echo "Checking yaml file..."
376           for f in $(egrep '\.ya?ml$' modified_files)
377           do
378               yamllint "$f" >> yaml-violation.log
379           done
380           if [[ -s yaml-violation.log ]]; then
381               echo -e "YAML violation(s)\n---" >> violation.log
382               sed -e 's/^/ /g' yaml-violation.log >> violation.log
383           fi
384
385 - builder:
386     name: lint-all-code
387     builders:
388       - lint-init
389       - lint-bash-code
390       - lint-python-code
391       - lint-yaml-code
392       - lint-report
393
394 - project:
395     name: releng-lint
396     jobs:
397       - 'releng-lint-verify'
398
399 - job-template:
400     name: 'releng-lint-verify'
401     parameters:
402       - releng-jjb-node:
403           node: opnfv-build
404     scm:
405       - releng-scm:
406           ref: $GERRIT_REFSPEC
407     triggers:
408       - gerrit:
409           server-name: 'gerrit.opnfv.org'
410           trigger-on:
411             - patchset-created-event
412             - comment-added-contains-event:
413                 comment-contains-value: recheck
414             - comment-added-contains-event:
415                 comment-contains-value: reverify
416           projects:
417             - project-compare-type: 'ANT'
418               project-pattern: 'releng'
419               branches:
420                 - branch-compare-type: 'ANT'
421                   branch-pattern: 'master'
422               file-paths:
423                 - compare-type: ANT
424                   pattern: '**/*.py'
425                 - compare-type: ANT
426                   pattern: '**/*.sh'
427                 - compare-type: ANT
428                   pattern: '**/*.yml'
429                 - compare-type: ANT
430                   pattern: '**/*.yaml'
431     builders:
432       - lint-all-code
433
434 - project:
435     name: releng-generate-artifacts-index-pages
436     jobs:
437       - releng-generate-artifacts-index-pages
438
439 - job-template:
440     name: releng-generate-artifacts-index-pages
441     scm:
442       - releng-scm:
443           ref: master
444     parameters:
445       - releng-jjb-node:
446           node: opnfv-build
447     triggers:
448       - timed: '@daily'
449     builders:
450       - generate-artifact-html
451
452 - builder:
453     name: generate-artifact-html
454     builders:
455       - shell: |
456           curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
457           echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \
458             /etc/apt/sources.list.d/google-cloud-sdk.list
459           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
460           sudo DEBIAN_FRONTEND=noninteractive apt-get \
461             -o DPkg::Lock::Timeout=300 install \
462             google-cloud-sdk -y
463           cd $WORKSPACE/utils/
464           ./artifacts.opnfv.org.sh
465
466 - project:
467     name: releng-artifact-cleanup
468     jobs:
469       - releng-artifact-cleanup
470
471 - job-template:
472     name: releng-artifact-cleanup
473     scm:
474       - releng-scm:
475           ref: master
476     parameters:
477       - releng-jjb-node:
478           node: opnfv-build
479     triggers:
480       - timed: '@daily'
481     builders:
482       - releng-artifact-cleanup
483
484 - builder:
485     name: releng-artifact-cleanup
486     builders:
487       - shell: |
488           curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
489           echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \
490             /etc/apt/sources.list.d/google-cloud-sdk.list
491           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
492           sudo DEBIAN_FRONTEND=noninteractive apt-get \
493             -o DPkg::Lock::Timeout=300 install \
494             google-cloud-sdk -y
495           $WORKSPACE/utils/retention_script.sh