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