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