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