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