Merge "Lift PyPI templates to Global-JJB from Acumos"
[releng/global-jjb.git] / jjb / lf-python-jobs.yaml
1 ---
2 ##########
3 # Macros #
4 ##########
5
6 - builder:
7     name: lf-infra-clm-python
8     builders:
9       - inject:
10           properties-content: "CLM_PROJECT_NAME={clm-project-name}"
11       - shell: !include-raw-escape: ../shell/nexus-iq-cli.sh
12
13 - builder:
14     name: lf-infra-pypi-tag-release
15     builders:
16       - config-file-provider:
17           files:
18             - file-id: sigul-config
19               variable: SIGUL_CONFIG
20             - file-id: sigul-password
21               variable: SIGUL_PASSWORD
22             - file-id: sigul-pki
23               variable: SIGUL_PKI
24             - file-id: signing-pubkey
25               variable: SIGNING_PUBKEY
26       - shell: !include-raw: ../shell/sigul-configuration.sh
27       - shell: !include-raw: ../shell/sigul-install.sh
28       - shell: !include-raw: ../shell/pypi-tag-release.sh
29
30 - builder:
31     name: lf-infra-pypi-upload
32     builders:
33       - config-file-provider:
34           files:
35             - file-id: pypirc
36               target: "$HOME/.pypirc"
37       - inject:
38           properties-content: "REPOSITORY={pypi-repo}"
39       - shell: !include-raw-escape: ../shell/pypi-upload.sh
40
41 - builder:
42     name: lf-infra-tox-install
43     builders:
44       - inject:
45           properties-content: "PYTHON={python-version}"
46       - shell: !include-raw-escape: ../shell/tox-install.sh
47
48 - builder:
49     name: lf-infra-tox-run
50     builders:
51       - inject:
52           properties-content: "PARALLEL={parallel}"
53       - shell: !include-raw-escape: ../shell/tox-run.sh
54
55 ####################
56 # COMMON FUNCTIONS #
57 ####################
58
59 - lf_python_common: &lf_python_common
60     name: lf-python-common
61
62     ######################
63     # Default parameters #
64     ######################
65
66     archive-artifacts: >
67       **/*.log
68
69     #####################
70     # Job Configuration #
71     #####################
72
73     project-type: freestyle
74     node: "{build-node}"
75
76     properties:
77       - lf-infra-properties:
78           build-days-to-keep: "{build-days-to-keep}"
79
80     parameters:
81       - lf-infra-parameters:
82           project: "{project}"
83           branch: "{branch}"
84           stream: "{stream}"
85
86     wrappers:
87       - lf-infra-wrappers:
88           build-timeout: "{build-timeout}"
89           jenkins-ssh-credential: "{jenkins-ssh-credential}"
90
91     publishers:
92       - lf-infra-publish
93
94 #################
95 # Python XC CLM #
96 #################
97
98 - lf_python_clm_xc: &lf_python_xc_clm
99     name: lf-python-xc-clm
100
101     ######################
102     # Default parameters #
103     ######################
104
105     branch: master
106     build-days-to-keep: 30 # 30 days for troubleshooting purposes
107     build-timeout: 60
108     disable-job: false
109     git-url: "$GIT_URL/$PROJECT"
110     github-url: "https://github.com"
111     java-version: openjdk8
112     nexus-iq-cli-version: 1.44.0-01
113     nexus-iq-namespace: "" # Recommend a trailing dash when set. Example: odl-
114     pre-build-script: "# pre-build script goes here"
115     stream: master
116     submodule-recursive: true
117     submodule-timeout: 10
118     submodule-disable: false
119
120     gerrit_trigger_file_paths:
121       - compare-type: ANT
122         pattern: ".*"
123
124     # github_included_regions MUST match gerrit_trigger_file_paths
125     github_included_regions:
126       - ".*"
127
128     #####################
129     # Job Configuration #
130     #####################
131
132     disabled: "{disable-job}"
133
134     parameters:
135       - lf-infra-parameters:
136           project: "{project}"
137           branch: "{branch}"
138           stream: "{stream}"
139       - string:
140           name: NEXUS_IQ_CLI_VERSION
141           default: "{nexus-iq-cli-version}"
142           description: Nexus IQ CLI package to download and use.
143
144     wrappers:
145       - credentials-binding:
146           - username-password-separated:
147               credential-id: nexus-iq-xc-clm
148               username: CLM_USER
149               password: CLM_PASSWORD
150     builders:
151       - lf-update-java-alternatives:
152           java-version: "{java-version}"
153       - shell: "{pre-build-script}"
154       - lf-infra-clm-python:
155           clm-project-name: "{nexus-iq-namespace}{project-name}"
156
157 - job-template:
158     name: "{project-name}-python-clm-{stream}"
159     id: gerrit-python-xc-clm
160     <<: *lf_python_common
161     # yamllint disable-line rule:key-duplicates
162     <<: *lf_python_xc_clm
163
164     ######################
165     # Default parameters #
166     ######################
167
168     gerrit_clm_triggers:
169       - comment-added-contains-event:
170           comment-contains-value: '^Patch Set\s+\d+:\s+run-clm\s*$'
171
172     #####################
173     # Job Configuration #
174     #####################
175
176     scm:
177       - lf-infra-gerrit-scm:
178           jenkins-ssh-credential: "{jenkins-ssh-credential}"
179           git-url: "{git-url}"
180           refspec: "$GERRIT_REFSPEC"
181           branch: "$GERRIT_BRANCH"
182           submodule-recursive: "{submodule-recursive}"
183           submodule-timeout: "{submodule-timeout}"
184           submodule-disable: "{submodule-disable}"
185           choosing-strategy: default
186
187     triggers:
188       # Build weekly on Saturdays
189       - timed: "H H * * 6"
190       - gerrit:
191           server-name: "{gerrit-server-name}"
192           trigger-on: "{obj:gerrit_clm_triggers}"
193           projects:
194             - project-compare-type: ANT
195               project-pattern: "{project}"
196               branches:
197                 - branch-compare-type: ANT
198                   branch-pattern: "**/{branch}"
199               file-paths: "{obj:gerrit_trigger_file_paths}"
200           skip-vote:
201             successful: true
202             failed: true
203             unstable: true
204             notbuilt: true
205
206 - job-template:
207     name: "{project-name}-python-clm-{stream}"
208     id: github-python-xc-clm
209     <<: *lf_python_common
210     # yamllint disable-line rule:key-duplicates
211     <<: *lf_python_xc_clm
212
213     properties:
214       - lf-infra-properties:
215           build-days-to-keep: "{build-days-to-keep}"
216       - github:
217           url: "{github-url}/{github-org}/{project}"
218
219     scm:
220       - lf-infra-github-scm:
221           url: "{git-clone-url}{github-org}/{project}"
222           refspec: ""
223           branch: "refs/heads/{branch}"
224           submodule-recursive: "{submodule-recursive}"
225           submodule-timeout: "{submodule-timeout}"
226           submodule-disable: "{submodule-disable}"
227           choosing-strategy: default
228           jenkins-ssh-credential: "{jenkins-ssh-credential}"
229
230     triggers:
231       # Build weekly on Saturdays
232       - timed: "H H * * 6"
233       - github-pull-request:
234           trigger-phrase: "^run-clm$"
235           only-trigger-phrase: false
236           status-context: "CLM"
237           permit-all: true
238           github-hooks: true
239           white-list-target-branches:
240             - "{branch}"
241           included-regions: "{obj:github_included_regions}"
242
243 #########################
244 # Python Sonar with Tox #
245 #########################
246
247 - lf_tox_sonar: &lf_tox_sonar
248     name: lf-tox_sonar
249
250     ######################
251     # Default parameters #
252     ######################
253
254     branch: master # Sonar should always be run on master branch
255     build-days-to-keep: 7
256     build-timeout: 60
257     cron: "H H * * *" # run daily
258     disable-job: false
259     git-url: "$GIT_URL/$PROJECT"
260     github-url: "https://github.com"
261     java-version: openjdk8
262     mvn-global-settings: global-settings
263     mvn-goals: validate
264     mvn-settings: "{mvn-settings}"
265     mvn-version: mvn35
266     parallel: true
267     pre-build-script: "# pre-build script goes here"
268     python-version: python3
269     sonar-mvn-goal: "sonar:sonar"
270     stream: master
271     submodule-recursive: true
272     submodule-timeout: 10
273     submodule-disable: false
274
275     gerrit_trigger_file_paths:
276       - compare-type: REG_EXP
277         pattern: ".*"
278
279     # github_included_regions MUST match gerrit_trigger_file_paths
280     github_included_regions:
281       - ".*"
282
283     #####################
284     # Job Configuration #
285     #####################
286
287     disabled: "{disable-job}"
288
289     parameters:
290       - lf-infra-parameters:
291           project: "{project}"
292           branch: "{branch}"
293           stream: "{stream}"
294       - string:
295           name: ARCHIVE_ARTIFACTS
296           default: "{archive-artifacts}"
297           description: Artifacts to archive to the logs server.
298       - string:
299           name: MVN
300           # Sets an env var for shell scripts to be able to call the dynamically
301           # installed maven without having to calculate the path themselves.
302           # yamllint disable-line rule:line-length
303           default: "/w/tools/hudson.tasks.Maven_MavenInstallation/{mvn-version}/bin/mvn"
304           description: "Maven selector to be used by shell scripts"
305       - string:
306           name: SONAR_MAVEN_GOAL
307           default: "{sonar-mvn-goal}"
308           description: |
309             Maven goals to pass to the Sonar call. Typically sonar:sonar
310             however to use a specific version of the sonar-maven-plugin we
311             can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
312
313     builders:
314       - lf-infra-pre-build
315       - lf-infra-tox-install:
316           python-version: "{python-version}"
317       - shell: "{pre-build-script}"
318       - lf-infra-tox-run:
319           parallel: "{parallel}"
320       - lf-provide-maven-settings:
321           global-settings-file: "{mvn-global-settings}"
322           settings-file: "{mvn-settings}"
323       - lf-infra-maven-sonar:
324           java-version: "{java-version}"
325           mvn-goals: "{mvn-goals}"
326           mvn-settings: "{mvn-settings}"
327           mvn-version: "{mvn-version}"
328
329     publishers:
330       - lf-infra-publish
331
332 - job-template:
333     name: "{project-name}-tox-sonar"
334     id: gerrit-tox-sonar
335     <<: *lf_python_common
336     # yamllint disable-line rule:key-duplicates
337     <<: *lf_tox_sonar
338
339     ######################
340     # Default parameters #
341     ######################
342
343     gerrit_sonar_triggers:
344       - comment-added-contains-event:
345           comment-contains-value: '^Patch Set\s+\d+:\s+run-sonar\s*$'
346
347     #####################
348     # Job Configuration #
349     #####################
350
351     scm:
352       - lf-infra-gerrit-scm:
353           jenkins-ssh-credential: "{jenkins-ssh-credential}"
354           git-url: "{git-url}"
355           refspec: $GERRIT_REFSPEC
356           branch: $GERRIT_BRANCH
357           submodule-recursive: "{submodule-recursive}"
358           submodule-timeout: "{submodule-timeout}"
359           submodule-disable: "{submodule-disable}"
360           choosing-strategy: default
361
362     triggers:
363       - timed: "{obj:cron}"
364       - gerrit:
365           server-name: "{gerrit-server-name}"
366           trigger-on: "{obj:gerrit_sonar_triggers}"
367           projects:
368             - project-compare-type: "ANT"
369               project-pattern: "{project}"
370               branches:
371                 - branch-compare-type: "ANT"
372                   branch-pattern: "**/{branch}"
373               file-paths: "{obj:gerrit_trigger_file_paths}"
374           skip-vote:
375             successful: true
376             failed: true
377             unstable: true
378             notbuilt: true
379
380 - job-template:
381     name: "{project-name}-tox-sonar"
382     id: github-tox-sonar
383     <<: *lf_python_common
384     # yamllint disable-line rule:key-duplicates
385     <<: *lf_tox_sonar
386
387     properties:
388       - lf-infra-properties:
389           build-days-to-keep: "{build-days-to-keep}"
390       - github:
391           url: "{github-url}/{github-org}/{project}"
392
393     scm:
394       - lf-infra-github-scm:
395           url: "{git-clone-url}{github-org}/{project}"
396           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
397           branch: "$sha1"
398           submodule-recursive: "{submodule-recursive}"
399           submodule-timeout: "{submodule-timeout}"
400           submodule-disable: "{submodule-disable}"
401           choosing-strategy: default
402           jenkins-ssh-credential: "{jenkins-ssh-credential}"
403
404     triggers:
405       - github-pull-request:
406           trigger-phrase: "^run-sonar$"
407           only-trigger-phrase: false
408           status-context: "Python Sonar"
409           permit-all: true
410           github-hooks: true
411           white-list-target-branches:
412             - "{branch}"
413           included-regions: "{obj:github_included_regions}"
414
415 ##############
416 # Tox Common #
417 ##############
418
419 - lf_tox_common: &lf_tox_common
420     name: lf-tox-common
421
422     ######################
423     # Default parameters #
424     ######################
425
426     branch: master
427     build-days-to-keep: 7
428     build-timeout: 15
429     disable-job: false
430     git-url: "$GIT_URL/$GERRIT_PROJECT"
431     github-url: "https://github.com"
432     parallel: false
433     pre-build-script: "# pre-build script goes here"
434     python-version: python3
435     stream: master
436     submodule-recursive: true
437     submodule-timeout: 10
438     submodule-disable: false
439     tox-dir: "."
440     tox-envs: ""
441
442     gerrit_trigger_file_paths:
443       - compare-type: REG_EXP
444         pattern: ".*"
445
446     # github_included_regions MUST match gerrit_trigger_file_paths
447     github_included_regions:
448       - ".*"
449
450     #####################
451     # Job Configuration #
452     #####################
453
454     project-type: freestyle
455     node: "{build-node}"
456     concurrent: true
457     disabled: "{disable-job}"
458
459     properties:
460       - lf-infra-properties:
461           build-days-to-keep: "{build-days-to-keep}"
462
463     parameters:
464       - lf-infra-parameters:
465           project: "{project}"
466           branch: "{branch}"
467           stream: "{stream}"
468       - lf-infra-tox-parameters:
469           tox-dir: "{tox-dir}"
470           tox-envs: "{tox-envs}"
471
472     wrappers:
473       - lf-infra-wrappers:
474           build-timeout: "{build-timeout}"
475           jenkins-ssh-credential: "{jenkins-ssh-credential}"
476
477     builders:
478       - lf-infra-pre-build
479       - lf-infra-tox-install:
480           python-version: "{python-version}"
481       - shell: "{pre-build-script}"
482       - lf-infra-tox-run:
483           parallel: "{parallel}"
484
485     publishers:
486       - lf-infra-publish
487
488 - job-template:
489     # Python projects typically use tox to run testing.
490     name: "{project-name}-tox-verify-{stream}"
491     id: gerrit-tox-verify
492     <<: *lf_tox_common
493
494     ######################
495     # Default parameters #
496     ######################
497
498     gerrit-skip-vote: false
499     gerrit_verify_triggers:
500       - patchset-created-event:
501           exclude-drafts: true
502           exclude-trivial-rebase: false
503           exclude-no-code-change: false
504       - draft-published-event
505       - comment-added-contains-event:
506           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
507
508     #####################
509     # Job Configuration #
510     #####################
511
512     scm:
513       - lf-infra-gerrit-scm:
514           jenkins-ssh-credential: "{jenkins-ssh-credential}"
515           git-url: "{git-url}"
516           refspec: "$GERRIT_REFSPEC"
517           branch: "$GERRIT_BRANCH"
518           submodule-recursive: "{submodule-recursive}"
519           submodule-timeout: "{submodule-timeout}"
520           submodule-disable: "{submodule-disable}"
521           choosing-strategy: gerrit
522
523     triggers:
524       - gerrit:
525           server-name: "{gerrit-server-name}"
526           trigger-on: "{obj:gerrit_verify_triggers}"
527           projects:
528             - project-compare-type: ANT
529               project-pattern: "{project}"
530               branches:
531                 - branch-compare-type: ANT
532                   branch-pattern: "**/{branch}"
533               file-paths: "{obj:gerrit_trigger_file_paths}"
534           skip-vote:
535             successful: "{gerrit-skip-vote}"
536             failed: "{gerrit-skip-vote}"
537             unstable: "{gerrit-skip-vote}"
538             notbuilt: "{gerrit-skip-vote}"
539
540 - job-template:
541     # Python projects typically use tox to run testing.
542     name: "{project-name}-tox-verify-{stream}"
543     id: github-tox-verify
544     <<: *lf_tox_common
545
546     properties:
547       - lf-infra-properties:
548           build-days-to-keep: "{build-days-to-keep}"
549       - github:
550           url: "{github-url}/{github-org}/{project}"
551
552     scm:
553       - lf-infra-github-scm:
554           url: "{git-clone-url}{github-org}/{project}"
555           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
556           branch: "$sha1"
557           submodule-recursive: "{submodule-recursive}"
558           submodule-timeout: "{submodule-timeout}"
559           submodule-disable: "{submodule-disable}"
560           choosing-strategy: default
561           jenkins-ssh-credential: "{jenkins-ssh-credential}"
562
563     triggers:
564       - github-pull-request:
565           trigger-phrase: "^(recheck|reverify)$"
566           only-trigger-phrase: false
567           status-context: "Tox Verify"
568           permit-all: true
569           github-hooks: true
570           white-list-target-branches:
571             - "{branch}"
572           included-regions: "{obj:github_included_regions}"
573
574 - job-template:
575     # Run tox after merge of gerrit change set
576     name: "{project-name}-tox-merge-{stream}"
577     id: gerrit-tox-merge
578     <<: *lf_tox_common
579
580     ######################
581     # Default parameters #
582     ######################
583
584     gerrit_merge_triggers:
585       - change-merged-event
586       - comment-added-contains-event:
587           comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
588
589     #####################
590     # Job Configuration #
591     #####################
592
593     scm:
594       - lf-infra-gerrit-scm:
595           jenkins-ssh-credential: "{jenkins-ssh-credential}"
596           git-url: "{git-url}"
597           refspec: "$GERRIT_REFSPEC"
598           branch: "$GERRIT_BRANCH"
599           submodule-recursive: "{submodule-recursive}"
600           submodule-timeout: "{submodule-timeout}"
601           submodule-disable: "{submodule-disable}"
602           choosing-strategy: gerrit
603
604     triggers:
605       - gerrit:
606           server-name: "{gerrit-server-name}"
607           trigger-on: "{obj:gerrit_merge_triggers}"
608           projects:
609             - project-compare-type: ANT
610               project-pattern: "{project}"
611               branches:
612                 - branch-compare-type: ANT
613                   branch-pattern: "**/{branch}"
614               file-paths: "{obj:gerrit_trigger_file_paths}"
615
616 - job-template:
617     # Run tox after merge of github pull request
618     name: "{project-name}-tox-merge-{stream}"
619     id: github-tox-merge
620     <<: *lf_tox_common
621
622     properties:
623       - lf-infra-properties:
624           build-days-to-keep: "{build-days-to-keep}"
625       - github:
626           url: "{github-url}/{github-org}/{project}"
627
628     scm:
629       - lf-infra-github-scm:
630           url: "{git-clone-url}{github-org}/{project}"
631           refspec: ""
632           branch: "refs/heads/{branch}"
633           submodule-recursive: "{submodule-recursive}"
634           submodule-timeout: "{submodule-timeout}"
635           submodule-disable: "{submodule-disable}"
636           choosing-strategy: default
637           jenkins-ssh-credential: "{jenkins-ssh-credential}"
638
639     triggers:
640       - github-pull-request:
641           trigger-phrase: "^remerge$"
642           only-trigger-phrase: true
643           status-context: "Tox Merge"
644           permit-all: true
645           github-hooks: true
646           org-list:
647             - "{github-org}"
648           white-list: "{obj:github_pr_whitelist}"
649           admin-list: "{obj:github_pr_admin_list}"
650           white-list-target-branches:
651             - "{branch}"
652           included-regions: "{obj:github_included_regions}"
653
654 ########
655 # PyPI #
656 ########
657
658 - lf_pypi_common: &lf_pypi_common
659     name: lf-pypi-common
660
661     ######################
662     # Default parameters #
663     ######################
664
665     branch: master
666     build-days-to-keep: 7
667     build-timeout: 15
668     disable-job: false
669     dist-binary: true
670     git-url: "$GIT_URL/$GERRIT_PROJECT"
671     github-url: "https://github.com"
672     parallel: false
673     pre-build-script: "# pre-build script goes here"
674     python-version: python3
675     stream: master
676     submodule-recursive: true
677     submodule-timeout: 10
678     submodule-disable: false
679     tox-dir: "."
680     tox-envs: ""
681
682     gerrit_trigger_file_paths:
683       - compare-type: ANT
684         pattern: ".*"
685
686     # github_included_regions MUST match gerrit_trigger_file_paths
687     github_included_regions:
688       - ".*"
689
690     parameters:
691       - lf-infra-parameters:
692           project: "{project}"
693           branch: "{branch}"
694           stream: "{stream}"
695       - lf-infra-tox-parameters:
696           tox-dir: "{tox-dir}"
697           tox-envs: "{tox-envs}"
698       - bool:
699           name: BUILD_BDIST_WHEEL
700           default: "{dist-binary}"
701           description: "Set to True to build a wheel"
702
703 - lf_pypi_verify_builders: &lf_pypi_verify_builders
704     name: lf-pypi-verify-builders
705
706     builders:
707       - lf-infra-pre-build
708       - lf-infra-tox-install:
709           python-version: "{python-version}"
710       - shell: "{pre-build-script}"
711       - lf-infra-tox-run:
712           parallel: "{parallel}"
713       - shell: !include-raw-escape: ../shell/pypi-dist-build.sh
714
715 - lf_pypi_merge_builders: &lf_pypi_merge_builders
716     name: lf-pypi-merge-builders
717
718     builders:
719       - lf-infra-pre-build
720       - lf-infra-tox-install:
721           python-version: "{python-version}"
722       - shell: "{pre-build-script}"
723       - lf-infra-tox-run:
724           parallel: "{parallel}"
725       - shell: !include-raw-escape: ../shell/pypi-dist-build.sh
726       - lf-infra-pypi-upload:
727           pypi-repo: "{pypi-repo}"
728
729 - lf_pypi_release_verify_builders: &lf_pypi_release_verify_builders
730     name: lf-pypi-release-verify-builders
731
732     builders:
733       - lf-infra-pre-build
734       - lf-infra-tox-install:
735           python-version: "{python-version}"
736       - shell: "{pre-build-script}"
737       - lf-infra-tox-run:
738           parallel: "{parallel}"
739       - shell: !include-raw-escape: ../shell/pypi-dist-build.sh
740       - lf-infra-pypi-tag-release
741
742 - lf_pypi_release_merge_builders: &lf_pypi_release_merge_builders
743     name: lf-pypi-release-merge-builders
744
745     builders:
746       - lf-infra-pre-build
747       - lf-infra-tox-install:
748           python-version: "{python-version}"
749       - shell: "{pre-build-script}"
750       - lf-infra-tox-run:
751           parallel: "{parallel}"
752       - shell: !include-raw-escape: ../shell/pypi-dist-build.sh
753       - lf-infra-pypi-tag-release
754       - lf-infra-pypi-upload:
755           pypi-repo: "{pypi-repo}"
756
757 - job-template:
758     name: "{project-name}-pypi-verify-{stream}"
759     id: gerrit-pypi-verify
760     <<: *lf_python_common
761     # yamllint disable-line rule:key-duplicates
762     <<: *lf_pypi_common
763     <<: *lf_pypi_verify_builders
764
765     gerrit_verify_triggers:
766       - patchset-created-event:
767           exclude-drafts: true
768           exclude-trivial-rebase: false
769           exclude-no-code-change: false
770       - draft-published-event
771       - comment-added-contains-event:
772           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
773
774     scm:
775       - lf-infra-gerrit-scm:
776           jenkins-ssh-credential: "{jenkins-ssh-credential}"
777           git-url: "{git-url}"
778           refspec: "$GERRIT_REFSPEC"
779           branch: "$GERRIT_BRANCH"
780           submodule-recursive: "{submodule-recursive}"
781           submodule-timeout: "{submodule-timeout}"
782           submodule-disable: "{submodule-disable}"
783           choosing-strategy: gerrit
784
785     triggers:
786       - gerrit:
787           server-name: "{gerrit-server-name}"
788           trigger-on: "{obj:gerrit_verify_triggers}"
789           projects:
790             - project-compare-type: ANT
791               project-pattern: "{project}"
792               branches:
793                 - branch-compare-type: ANT
794                   branch-pattern: "**/{branch}"
795               file-paths: "{obj:gerrit_trigger_file_paths}"
796
797 - job-template:
798     name: "{project-name}-pypi-verify-{stream}"
799     id: github-pypi-verify
800     <<: *lf_python_common
801     # yamllint disable-line rule:key-duplicates
802     <<: *lf_pypi_common
803     <<: *lf_pypi_verify_builders
804
805     properties:
806       - github:
807           url: "{github-url}/{github-org}/{project}"
808
809     scm:
810       - lf-infra-github-scm:
811           url: "{git-clone-url}{github-org}/{project}"
812           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
813           branch: "$sha1"
814           submodule-recursive: "{submodule-recursive}"
815           submodule-timeout: "{submodule-timeout}"
816           submodule-disable: "{submodule-disable}"
817           choosing-strategy: default
818           jenkins-ssh-credential: "{jenkins-ssh-credential}"
819
820     triggers:
821       - github-pull-request:
822           trigger-phrase: "^(recheck|reverify)$"
823           only-trigger-phrase: false
824           status-context: "PyPI Verify"
825           permit-all: true
826           github-hooks: true
827           white-list-target-branches:
828             - "{branch}"
829           included-regions: "{obj:github_included_regions}"
830
831 - job-template:
832     name: "{project-name}-pypi-merge-{stream}"
833     id: gerrit-pypi-merge
834     <<: *lf_python_common
835     # yamllint disable-line rule:key-duplicates
836     <<: *lf_pypi_common
837     <<: *lf_pypi_merge_builders
838
839     pypi-repo: staging
840
841     gerrit_merge_triggers:
842       - change-merged-event
843       - comment-added-contains-event:
844           comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
845
846     scm:
847       - lf-infra-gerrit-scm:
848           jenkins-ssh-credential: "{jenkins-ssh-credential}"
849           git-url: "{git-url}"
850           refspec: "$GERRIT_REFSPEC"
851           branch: "$GERRIT_BRANCH"
852           submodule-recursive: "{submodule-recursive}"
853           submodule-timeout: "{submodule-timeout}"
854           submodule-disable: "{submodule-disable}"
855           choosing-strategy: gerrit
856
857     triggers:
858       - gerrit:
859           server-name: "{gerrit-server-name}"
860           trigger-on: "{obj:gerrit_merge_triggers}"
861           projects:
862             - project-compare-type: ANT
863               project-pattern: "{project}"
864               branches:
865                 - branch-compare-type: ANT
866                   branch-pattern: "**/{branch}"
867               file-paths: "{obj:gerrit_trigger_file_paths}"
868
869 - job-template:
870     name: "{project-name}-pypi-merge-{stream}"
871     id: github-pypi-merge
872     <<: *lf_python_common
873     # yamllint disable-line rule:key-duplicates
874     <<: *lf_pypi_common
875     <<: *lf_pypi_merge_builders
876
877     pypi-repo: staging
878
879     properties:
880       - github:
881           url: "{github-url}/{github-org}/{project}"
882
883     scm:
884       - lf-infra-github-scm:
885           url: "{git-clone-url}{github-org}/{project}"
886           refspec: ""
887           branch: "refs/heads/{branch}"
888           submodule-recursive: "{submodule-recursive}"
889           submodule-timeout: "{submodule-timeout}"
890           submodule-disable: "{submodule-disable}"
891           choosing-strategy: default
892           jenkins-ssh-credential: "{jenkins-ssh-credential}"
893
894     triggers:
895       - github-pull-request:
896           trigger-phrase: "^remerge$"
897           only-trigger-phrase: false
898           status-context: "Merge"
899           permit-all: true
900           github-hooks: true
901           org-list:
902             - "{github-org}"
903           white-list: "{obj:github_pr_whitelist}"
904           admin-list: "{obj:github_pr_admin_list}"
905           white-list-target-branches:
906             - "{branch}"
907           included-regions: "{obj:github_included_regions}"
908
909 - lf_pypi_release_common: &lf_pypi_release_common
910     name: lf-pypi-release-common
911
912     dist-binary: true
913     pypi-repo: pypi
914     use-release-file: true
915
916     gerrit_trigger_file_paths:
917       - compare-type: REG_EXP
918         pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
919
920     # github_included_regions MUST match gerrit_trigger_file_paths
921     github_included_regions:
922       - 'releases\/.*\.yaml'
923       - '.releases\/.*\.yaml'
924
925     parameters:
926       - lf-infra-parameters:
927           project: "{project}"
928           branch: "{branch}"
929           stream: "{stream}"
930       - lf-infra-tox-parameters:
931           tox-dir: "{tox-dir}"
932           tox-envs: "{tox-envs}"
933       - bool:
934           name: BUILD_BDIST_WHEEL
935           default: "{dist-binary}"
936           description: "Set to True to build a wheel"
937       - string:
938           name: VERSION
939           default: ""
940           description: "This is the version, example: 1.0.0"
941       - bool:
942           name: USE_RELEASE_FILE
943           default: "{use-release-file}"
944           description: "Set to False for job built with parameters"
945       - bool:
946           name: DRY_RUN
947           default: false
948           description: |
949             If DRY_RUN is enabled artifacts are not published.
950
951 - job-template:
952     name: "{project-name}-pypi-release-verify-{stream}"
953     id: gerrit-pypi-release-verify
954     <<: *lf_python_common
955     # yamllint disable-line rule:key-duplicates
956     <<: *lf_pypi_common
957     <<: *lf_pypi_release_common
958     <<: *lf_pypi_release_verify_builders
959
960     gerrit_verify_triggers:
961       - patchset-created-event:
962           exclude-drafts: true
963           exclude-trivial-rebase: false
964           exclude-no-code-change: false
965       - draft-published-event
966       - comment-added-contains-event:
967           comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
968
969     scm:
970       - lf-infra-gerrit-scm:
971           jenkins-ssh-credential: "{jenkins-ssh-credential}"
972           git-url: "{git-url}"
973           refspec: "$GERRIT_REFSPEC"
974           branch: "$GERRIT_BRANCH"
975           submodule-recursive: "{submodule-recursive}"
976           submodule-timeout: "{submodule-timeout}"
977           submodule-disable: "{submodule-disable}"
978           choosing-strategy: gerrit
979
980     triggers:
981       - gerrit:
982           server-name: "{gerrit-server-name}"
983           trigger-on: "{obj:gerrit_verify_triggers}"
984           projects:
985             - project-compare-type: "ANT"
986               project-pattern: "{project}"
987               branches:
988                 - branch-compare-type: "ANT"
989                   branch-pattern: "**"
990               file-paths: "{obj:gerrit_trigger_file_paths}"
991
992 - job-template:
993     name: "{project-name}-pypi-release-verify-{stream}"
994     id: github-pypi-release-verify
995     <<: *lf_python_common
996     # yamllint disable-line rule:key-duplicates
997     <<: *lf_pypi_common
998     <<: *lf_pypi_release_common
999     <<: *lf_pypi_release_verify_builders
1000
1001     properties:
1002       - github:
1003           url: "{github-url}/{github-org}/{project}"
1004
1005     scm:
1006       - lf-infra-github-scm:
1007           url: "{git-clone-url}{github-org}/{project}"
1008           refspec: ""
1009           branch: "refs/heads/{branch}"
1010           submodule-recursive: "{submodule-recursive}"
1011           submodule-timeout: "{submodule-timeout}"
1012           submodule-disable: "{submodule-disable}"
1013           choosing-strategy: default
1014           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1015
1016     triggers:
1017       - github-pull-request:
1018           trigger-phrase: "^(recheck|reverify)$"
1019           only-trigger-phrase: false
1020           status-context: "PyPI Release Verify"
1021           permit-all: true
1022           github-hooks: true
1023           white-list-target-branches:
1024             - "{branch}"
1025           included-regions: "{obj:github_included_regions}"
1026
1027 - job-template:
1028     name: "{project-name}-pypi-release-merge-{stream}"
1029     id: gerrit-pypi-release-merge
1030     <<: *lf_python_common
1031     # yamllint disable-line rule:key-duplicates
1032     <<: *lf_pypi_common
1033     <<: *lf_pypi_release_common
1034     <<: *lf_pypi_release_merge_builders
1035
1036     gerrit_release_triggers:
1037       - change-merged-event
1038
1039     scm:
1040       - lf-infra-gerrit-scm:
1041           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1042           git-url: "{git-url}"
1043           refspec: "$GERRIT_REFSPEC"
1044           branch: "$GERRIT_BRANCH"
1045           submodule-recursive: "{submodule-recursive}"
1046           submodule-timeout: "{submodule-timeout}"
1047           submodule-disable: "{submodule-disable}"
1048           choosing-strategy: gerrit
1049
1050     triggers:
1051       - gerrit:
1052           server-name: "{gerrit-server-name}"
1053           trigger-on: "{obj:gerrit_release_triggers}"
1054           projects:
1055             - project-compare-type: "ANT"
1056               project-pattern: "{project}"
1057               branches:
1058                 - branch-compare-type: "ANT"
1059                   branch-pattern: "**"
1060               file-paths: "{obj:gerrit_trigger_file_paths}"
1061
1062 - job-template:
1063     name: "{project-name}-pypi-release-merge-{stream}"
1064     id: github-pypi-release-merge
1065     <<: *lf_python_common
1066     # yamllint disable-line rule:key-duplicates
1067     <<: *lf_pypi_common
1068     <<: *lf_pypi_release_common
1069     <<: *lf_pypi_release_merge_builders
1070
1071     properties:
1072       - github:
1073           url: "{github-url}/{github-org}/{project}"
1074
1075     scm:
1076       - lf-infra-github-scm:
1077           url: "{git-clone-url}{github-org}/{project}"
1078           refspec: ""
1079           branch: "refs/heads/{branch}"
1080           submodule-recursive: "{submodule-recursive}"
1081           submodule-timeout: "{submodule-timeout}"
1082           submodule-disable: "{submodule-disable}"
1083           choosing-strategy: default
1084           jenkins-ssh-credential: "{jenkins-ssh-credential}"
1085
1086     triggers:
1087       - github-pull-request:
1088           trigger-phrase: "^(remerge)$"
1089           only-trigger-phrase: false
1090           status-context: "PyPI Release Merge"
1091           permit-all: true
1092           github-hooks: true
1093           white-list-target-branches:
1094             - "{branch}"
1095           included-regions: "{obj:github_included_regions}"