7 name: lf-infra-nexus-iq-python-cli
11 NEXUS_IQ_PROJECT_NAME={nexus-iq-project-name}
12 REQUIREMENTS_FILE={requirements-file}
13 - shell: !include-raw-escape: ../shell/nexus-iq-python-cli.sh
16 name: lf-infra-tox-install
19 properties-content: "PYTHON={python-version}"
20 - shell: !include-raw-escape: ../shell/tox-install.sh
23 name: lf-infra-tox-run
26 properties-content: "PARALLEL={parallel}"
27 - shell: !include-raw-escape: ../shell/tox-run.sh
33 - _lf_python_common: &lf_python_common
34 name: lf-python-common
36 ######################
37 # Default parameters #
38 ######################
47 project-type: freestyle
51 - lf-infra-properties:
52 build-days-to-keep: "{build-days-to-keep}"
55 - lf-infra-parameters:
62 build-timeout: "{build-timeout}"
63 jenkins-ssh-credential: "{jenkins-ssh-credential}"
72 - _lf_tox_nexus_iq_clm: &lf_tox_nexus_iq_clm
73 name: lf-tox-nexus-iq-clm
75 ######################
76 # Default parameters #
77 ######################
84 git-url: "$GIT_URL/$PROJECT"
85 github-url: "https://github.com"
86 java-version: openjdk11 # Scanner is a jar
87 nexus-iq-cli-version: 1.140.0-01
88 nexus-iq-namespace: "" # Recommend a trailing dash when set. Example: odl-
89 nexus-target-build: "**/*"
90 pre-build-script: "# pre-build script goes here"
91 python-version: python3
92 requirements-file: requirements.txt
94 submodule-recursive: true
96 submodule-disable: false
100 #####################
101 # Job Configuration #
102 #####################
104 disabled: "{disable-job}"
107 - lf-infra-parameters:
111 - lf-infra-tox-parameters:
113 tox-envs: "{tox-envs}"
115 name: ARCHIVE_ARTIFACTS
116 default: "{archive-artifacts}"
117 description: Artifacts to archive to the logs server.
119 name: NEXUS_IQ_CLI_VERSION
120 default: "{nexus-iq-cli-version}"
121 description: Nexus IQ CLI jar to download and run.
123 name: NEXUS_TARGET_BUILD
124 default: "{nexus-target-build}"
125 description: File or dir to scan by Nexus CLI.
129 build-timeout: "{build-timeout}"
130 jenkins-ssh-credential: "{jenkins-ssh-credential}"
131 - credentials-binding:
132 - username-password-separated:
133 credential-id: nexus-iq-xc-clm
134 username: NEXUS_IQ_USER
135 password: NEXUS_IQ_PASSWORD
139 - lf-update-java-alternatives:
140 java-version: "{java-version}"
141 - lf-infra-tox-install:
142 python-version: "{python-version}"
143 - shell: "{pre-build-script}"
146 - lf-infra-nexus-iq-python-cli:
147 nexus-iq-project-name: "{nexus-iq-namespace}{project-name}"
148 requirements-file: "{requirements-file}"
151 name: "{project-name}-tox-nexus-iq-clm"
152 id: gerrit-tox-nexus-iq-clm
153 <<: *lf_python_common
154 <<: *lf_tox_nexus_iq_clm
156 ######################
157 # Default parameters #
158 ######################
160 gerrit_nexus_iq_triggers:
161 - comment-added-contains-event:
162 comment-contains-value: '^Patch Set\s+\d+:\s+run-clm\s*$'
164 #####################
165 # Job Configuration #
166 #####################
169 - lf-infra-gerrit-scm:
170 jenkins-ssh-credential: "{jenkins-ssh-credential}"
172 refspec: "$GERRIT_REFSPEC"
173 branch: "$GERRIT_BRANCH"
174 submodule-recursive: "{submodule-recursive}"
175 submodule-timeout: "{submodule-timeout}"
176 submodule-disable: "{submodule-disable}"
177 choosing-strategy: default
180 - timed: "{obj:cron}"
182 server-name: "{gerrit-server-name}"
183 trigger-on: "{obj:gerrit_nexus_iq_triggers}"
185 - project-compare-type: ANT
186 project-pattern: "{project}"
188 - branch-compare-type: ANT
189 branch-pattern: "**/{branch}"
197 name: "{project-name}-tox-nexus-iq"
198 id: github-tox-nexus-iq-clm
199 <<: *lf_python_common
200 <<: *lf_tox_nexus_iq_clm
203 - lf-infra-properties:
204 build-days-to-keep: "{build-days-to-keep}"
206 url: "{github-url}/{github-org}/{project}"
209 - lf-infra-github-scm:
210 url: "{git-clone-url}{github-org}/{project}"
212 branch: "refs/heads/{branch}"
213 submodule-recursive: "{submodule-recursive}"
214 submodule-timeout: "{submodule-timeout}"
215 submodule-disable: "{submodule-disable}"
216 choosing-strategy: default
217 jenkins-ssh-credential: "{jenkins-ssh-credential}"
220 - timed: "{obj:cron}"
221 - github-pull-request:
222 trigger-phrase: "^run-clm$"
223 only-trigger-phrase: false
224 status-context: "CLM"
227 white-list-target-branches:
234 - _lf_python_snyk_cli: &lf_python_snyk_cli
235 name: lf-python-snyk_cli
237 ######################
238 # Default parameters #
239 ######################
242 build-days-to-keep: 30 # 30 days for troubleshooting purposes
245 git-url: "$GIT_URL/$PROJECT"
246 github-url: "https://github.com"
247 java-version: openjdk11
249 pre-build-script: "# pre-build script goes here"
250 python-version: python3
252 snyk-token-credential-id: snyk-token
253 snyk-org-credential-id: snyk-org
255 submodule-recursive: true
256 submodule-timeout: 10
257 submodule-disable: false
261 gerrit_snyk_triggers:
262 - comment-added-contains-event:
263 comment-contains-value: '^Patch Set\s+\d+:\s+run-snyk\s*$'
266 - lf-infra-parameters:
271 name: SNYK_CLI_OPTIONS
272 default: "{snyk-cli-options}"
273 description: Additional Snyk CLI commands and options
274 - lf-infra-tox-parameters:
276 tox-envs: "{tox-envs}"
279 - credentials-binding:
281 credential-id: "{snyk-token-credential-id}"
284 credential-id: "{snyk-org-credential-id}"
287 #####################
288 # Job Configuration #
289 #####################
291 disabled: "{disable-job}"
295 - lf-infra-tox-install:
296 python-version: "{python-version}"
297 - shell: "{pre-build-script}"
299 parallel: "{parallel}"
300 - lf-infra-snyk-cli-scanner
303 name: "{project-name}-python-snyk-cli-{stream}"
304 id: gerrit-python-snyk-cli
305 # yamllint disable-line rule:key-duplicates
306 <<: *lf_python_snyk_cli
309 - lf-infra-gerrit-scm:
310 jenkins-ssh-credential: "{jenkins-ssh-credential}"
312 refspec: "$GERRIT_REFSPEC"
313 branch: "$GERRIT_BRANCH"
314 submodule-recursive: "{submodule-recursive}"
315 submodule-timeout: "{submodule-timeout}"
316 submodule-disable: "{submodule-disable}"
317 choosing-strategy: default
320 # Build weekly on Saturdays
323 server-name: "{gerrit-server-name}"
324 trigger-on: "{obj:gerrit_snyk_triggers}"
326 - project-compare-type: ANT
327 project-pattern: "{project}"
329 - branch-compare-type: ANT
330 branch-pattern: "**/{branch}"
338 name: "{project-name}-python-snyk-cli-{stream}"
339 id: github-python-snyk-cli
340 # yamllint disable-line rule:key-duplicates
341 <<: *lf_python_snyk_cli
344 - lf-infra-properties:
345 build-days-to-keep: "{build-days-to-keep}"
347 url: "{github-url}/{github-org}/{project}"
350 - lf-infra-github-scm:
351 url: "{git-clone-url}{github-org}/{project}"
353 branch: "refs/heads/{branch}"
354 submodule-recursive: "{submodule-recursive}"
355 submodule-timeout: "{submodule-timeout}"
356 submodule-disable: "{submodule-disable}"
357 choosing-strategy: default
358 jenkins-ssh-credential: "{jenkins-ssh-credential}"
361 # Build weekly on Saturdays
363 - github-pull-request:
364 trigger-phrase: "^run-snyk$"
365 only-trigger-phrase: true
366 status-context: "SNYK scan"
371 white-list: "{obj:github_pr_allowlist}"
372 admin-list: "{obj:github_pr_admin_list}"
373 white-list-target-branches:
376 #########################
377 # Python Sonar with CLI #
378 #########################
380 - _lf_cli_sonar: &lf_cli_sonar
383 ######################
384 # Default parameters #
385 ######################
387 branch: master # Sonar should always be run on master branch
388 build-days-to-keep: 7
390 cron: "H H * * *" # run daily
392 git-url: "$GIT_URL/$PROJECT"
393 github-url: "https://github.com"
394 # SonarCloud scan using jdk8 will become deprecated by Oct, 2020
395 # Projects not compatible with jdk11 can set java-version to something else
396 java-version: openjdk11
398 pre-build-script: "# pre-build script goes here"
399 python-version: python3
401 sonar-scanner-version: "4.7.0.2747"
402 sonar-scanner-home: "$WORKSPACE/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux"
403 sonar-scanner-opts: "-server"
404 submodule-recursive: true
405 submodule-timeout: 10
406 submodule-disable: false
410 gerrit_trigger_file_paths:
411 - compare-type: REG_EXP
414 # github_included_regions MUST match gerrit_trigger_file_paths
415 github_included_regions:
418 #####################
419 # Job Configuration #
420 #####################
422 disabled: "{disable-job}"
425 - lf-infra-parameters:
429 - lf-infra-sonar-cli-parameters:
431 tox-envs: "{tox-envs}"
432 sonar-scanner-version: "{sonar-scanner-version}"
433 sonar-scanner-home: "{sonar-scanner-home}"
434 sonar-scanner-opts: "{sonar-scanner-opts}"
436 name: ARCHIVE_ARTIFACTS
437 default: "{archive-artifacts}"
438 description: Artifacts to archive to the logs server.
440 - credentials-binding:
442 credential-id: sonar-token-{project-name}
443 variable: SONAR_TOKEN
446 - lf-infra-tox-install:
447 python-version: "{python-version}"
448 - shell: "{pre-build-script}"
450 parallel: "{parallel}"
453 properties-content: |
454 SONARCLOUD_PROJECT_ORGANIZATION={sonarcloud-project-organization}
455 SONARCLOUD_PROJECT_KEY={sonarcloud-project-key}
456 - shell: !include-raw-escape: ../shell/sonar-cli.sh
462 name: "{project-name}-cli-sonar"
464 <<: *lf_python_common
467 ######################
468 # Default parameters #
469 ######################
471 gerrit_sonar_triggers:
472 - comment-added-contains-event:
473 comment-contains-value: '^Patch Set\s+\d+:\s+run-sonar\s*$'
475 #####################
476 # Job Configuration #
477 #####################
480 - lf-infra-gerrit-scm:
481 jenkins-ssh-credential: "{jenkins-ssh-credential}"
483 refspec: $GERRIT_REFSPEC
484 branch: $GERRIT_BRANCH
485 submodule-recursive: "{submodule-recursive}"
486 submodule-timeout: "{submodule-timeout}"
487 submodule-disable: "{submodule-disable}"
488 choosing-strategy: default
491 - timed: "{obj:cron}"
493 server-name: "{gerrit-server-name}"
494 trigger-on: "{obj:gerrit_sonar_triggers}"
496 - project-compare-type: "ANT"
497 project-pattern: "{project}"
499 - branch-compare-type: "ANT"
500 branch-pattern: "**/{branch}"
501 file-paths: "{obj:gerrit_trigger_file_paths}"
509 name: "{project-name}-cli-sonar"
511 <<: *lf_python_common
515 - lf-infra-properties:
516 build-days-to-keep: "{build-days-to-keep}"
518 url: "{github-url}/{github-org}/{project}"
521 - lf-infra-github-scm:
522 url: "{git-clone-url}{github-org}/{project}"
523 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
525 submodule-recursive: "{submodule-recursive}"
526 submodule-timeout: "{submodule-timeout}"
527 submodule-disable: "{submodule-disable}"
528 choosing-strategy: default
529 jenkins-ssh-credential: "{jenkins-ssh-credential}"
532 - github-pull-request:
533 trigger-phrase: "^run-sonar$"
534 only-trigger-phrase: false
535 status-context: "Python Sonar"
538 white-list-target-branches:
540 included-regions: "{obj:github_included_regions}"
542 #########################
543 # Python Sonar with Tox #
544 #########################
546 - _lf_tox_sonar: &lf_tox_sonar
549 ######################
550 # Default parameters #
551 ######################
553 branch: master # Sonar should always be run on master branch
554 build-days-to-keep: 7
556 cron: "H H * * *" # run daily
558 git-url: "$GIT_URL/$PROJECT"
559 github-url: "https://github.com"
560 java-version: openjdk11
561 mvn-global-settings: global-settings
568 pre-build-script: "# pre-build script goes here"
569 python-version: python3
570 sonar-mvn-goal: "sonar:sonar"
572 sonarcloud-project-key: ""
573 sonarcloud-project-organization: ""
574 sonarcloud-api-token-cred-id: sonarcloud-api-token
575 sonarcloud-qualitygate-wait: false
576 # Projects not compatible with jdk17 can set java-version to something else
577 sonarcloud-java-version: openjdk17
579 submodule-recursive: true
580 submodule-timeout: 10
581 submodule-disable: false
584 scan-dev-branch: false
586 gerrit_trigger_file_paths:
587 - compare-type: REG_EXP
590 # github_included_regions MUST match gerrit_trigger_file_paths
591 github_included_regions:
594 #####################
595 # Job Configuration #
596 #####################
598 disabled: "{disable-job}"
601 - lf-infra-parameters:
605 - lf-infra-maven-parameters:
606 mvn-opts: "{mvn-opts}"
607 mvn-params: "{mvn-params}"
608 mvn-version: "{mvn-version}"
609 - lf-infra-tox-parameters:
611 tox-envs: "{tox-envs}"
613 name: ARCHIVE_ARTIFACTS
614 default: "{archive-artifacts}"
615 description: Artifacts to archive to the logs server.
618 # Sets an env var for shell scripts to be able to call the dynamically
619 # installed maven without having to calculate the path themselves.
620 # yamllint disable-line rule:line-length
621 default: "/w/tools/hudson.tasks.Maven_MavenInstallation/{mvn-version}/bin/mvn"
622 description: "Maven selector to be used by shell scripts"
624 name: SONAR_MAVEN_GOAL
625 default: "{sonar-mvn-goal}"
627 Maven goals to pass to the Sonar call. Typically sonar:sonar
628 however to use a specific version of the sonar-maven-plugin we
629 can call "org.codehaus.mojo:sonar-maven-plugin:3.3.0.603:sonar".
632 - credentials-binding:
634 credential-id: "{sonarcloud-api-token-cred-id}"
639 - lf-infra-tox-install:
640 python-version: "{python-version}"
641 - shell: "{pre-build-script}"
643 parallel: "{parallel}"
644 - lf-provide-maven-settings:
645 global-settings-file: "{mvn-global-settings}"
646 settings-file: "{mvn-settings}"
649 condition-kind: boolean-expression
650 condition-expression: "{sonarcloud}"
652 - shell: echo 'Using SonarCloud'
653 - lf-infra-maven-sonarcloud:
654 java-version: "{java-version}"
655 mvn-goals: "{mvn-goals}"
656 mvn-settings: "{mvn-settings}"
657 mvn-version: "{mvn-version}"
658 sonarcloud-project-key: "{sonarcloud-project-key}"
659 # yamllint disable-line rule:line-length
660 sonarcloud-project-organization: "{sonarcloud-project-organization}"
661 sonarcloud-java-version: "{sonarcloud-java-version}"
662 sonarcloud-qualitygate-wait: "{sonarcloud-qualitygate-wait}"
663 scan-dev-branch: "{scan-dev-branch}"
668 condition-kind: boolean-expression
669 condition-expression: "{sonarcloud}"
671 - shell: echo 'Using SonarQube'
672 - lf-infra-maven-sonar:
673 java-version: "{java-version}"
674 mvn-goals: "{mvn-goals}"
675 mvn-settings: "{mvn-settings}"
676 mvn-version: "{mvn-version}"
682 name: "{project-name}-tox-sonar"
684 <<: *lf_python_common
687 ######################
688 # Default parameters #
689 ######################
691 gerrit_sonar_triggers:
692 - comment-added-contains-event:
693 comment-contains-value: '^Patch Set\s+\d+:\s+run-sonar\s*$'
695 #####################
696 # Job Configuration #
697 #####################
700 - lf-infra-gerrit-scm:
701 jenkins-ssh-credential: "{jenkins-ssh-credential}"
703 refspec: $GERRIT_REFSPEC
704 branch: $GERRIT_BRANCH
705 submodule-recursive: "{submodule-recursive}"
706 submodule-timeout: "{submodule-timeout}"
707 submodule-disable: "{submodule-disable}"
708 choosing-strategy: default
711 - timed: "{obj:cron}"
713 server-name: "{gerrit-server-name}"
714 trigger-on: "{obj:gerrit_sonar_triggers}"
716 - project-compare-type: "ANT"
717 project-pattern: "{project}"
719 - branch-compare-type: "ANT"
720 branch-pattern: "**/{branch}"
721 file-paths: "{obj:gerrit_trigger_file_paths}"
729 name: "{project-name}-tox-sonar"
731 <<: *lf_python_common
735 - lf-infra-properties:
736 build-days-to-keep: "{build-days-to-keep}"
738 url: "{github-url}/{github-org}/{project}"
741 - lf-infra-github-scm:
742 url: "{git-clone-url}{github-org}/{project}"
743 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
745 submodule-recursive: "{submodule-recursive}"
746 submodule-timeout: "{submodule-timeout}"
747 submodule-disable: "{submodule-disable}"
748 choosing-strategy: default
749 jenkins-ssh-credential: "{jenkins-ssh-credential}"
752 - github-pull-request:
753 trigger-phrase: "^run-sonar$"
754 only-trigger-phrase: false
755 status-context: "Python Sonar"
758 white-list-target-branches:
760 included-regions: "{obj:github_included_regions}"
766 - _lf_tox_sonarqube: &lf_tox_sonarqube
767 name: lf-tox-sonarqube
769 ######################
770 # Default parameters #
771 ######################
775 branch: master # Sonar should always be run on master branch
776 build-days-to-keep: 7
780 git-url: "$GIT_URL/$PROJECT"
781 github-url: "https://github.com"
782 java-version: openjdk17
784 pre-build-script: "# pre-build script goes here"
785 python-version: python3
787 submodule-recursive: true
788 submodule-timeout: 10
789 submodule-disable: false
793 sonar-additional-args: ""
795 sonar-project-file: "sonar-project.properties"
800 #####################
801 # Job Configuration #
802 #####################
804 project-type: freestyle
806 disabled: "{disable-job}"
809 - lf-infra-properties:
810 build-days-to-keep: "{build-days-to-keep}"
814 build-timeout: "{build-timeout}"
815 jenkins-ssh-credential: "{jenkins-ssh-credential}"
818 - lf-infra-parameters:
822 - lf-infra-tox-parameters:
824 tox-envs: "{tox-envs}"
826 name: ARCHIVE_ARTIFACTS
827 default: "{archive-artifacts}"
828 description: Artifacts to archive to the logs server.
832 - lf-update-java-alternatives:
833 java-version: "{java-version}"
834 - lf-infra-tox-install:
835 python-version: "{python-version}"
836 - shell: "{pre-build-script}"
838 parallel: "{parallel}"
840 sonar-task: "{sonar-task}"
841 sonar-project-file: "{sonar-project-file}"
842 sonar-properties: "{sonar-properties}"
843 sonar-java-opts: "{sonar-java-opts}"
844 sonar-additional-args: "{sonar-additional-args}"
845 sonar-jdk: "{sonar-jdk}"
851 name: "{project-name}-tox-sonarqube"
852 id: gerrit-tox-sonarqube
854 <<: *lf_tox_sonarqube
856 ######################
857 # Default parameters #
858 ######################
860 gerrit_sonar_triggers:
861 - comment-added-contains-event:
862 comment-contains-value: '^Patch Set\s+\d+:\s+run-sonar\s*$'
865 - lf-infra-gerrit-scm:
866 branch: "$GERRIT_BRANCH"
867 jenkins-ssh-credential: "{jenkins-ssh-credential}"
869 refspec: "$GERRIT_REFSPEC"
870 submodule-recursive: "{submodule-recursive}"
871 submodule-timeout: "{submodule-timeout}"
872 submodule-disable: "{submodule-disable}"
873 choosing-strategy: default
876 - timed: "{obj:cron}"
878 server-name: "{gerrit-server-name}"
879 trigger-on: "{obj:gerrit_sonar_triggers}"
881 - project-compare-type: "ANT"
882 project-pattern: "{project}"
884 - branch-compare-type: "ANT"
885 branch-pattern: "**/{branch}"
888 name: "{project-name}-tox-sonarqube"
889 id: github-tox-sonarqube
891 <<: *lf_tox_sonarqube
894 - lf-infra-github-scm:
896 jenkins-ssh-credential: "{jenkins-ssh-credential}"
897 url: "{git-clone-url}{github-org}/{project}"
898 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
899 submodule-recursive: "{submodule-recursive}"
900 submodule-timeout: "{submodule-timeout}"
901 submodule-disable: "{submodule-disable}"
902 choosing-strategy: default
905 - github-pull-request:
906 trigger-phrase: "^run-sonar$"
907 only-trigger-phrase: false
908 status-context: "Tox Sonarqube"
911 white-list-target-branches:
918 - _lf_tox_common: &lf_tox_common
921 ######################
922 # Default parameters #
923 ######################
926 build-days-to-keep: 7
929 git-url: "$GIT_URL/$GERRIT_PROJECT"
930 github-url: "https://github.com"
932 pre-build-script: "# pre-build script goes here"
933 python-version: python3
935 submodule-recursive: true
936 submodule-timeout: 10
937 submodule-disable: false
941 gerrit_trigger_file_paths:
942 - compare-type: REG_EXP
945 # github_included_regions MUST match gerrit_trigger_file_paths
946 github_included_regions:
949 #####################
950 # Job Configuration #
951 #####################
953 project-type: freestyle
956 disabled: "{disable-job}"
959 - lf-infra-properties:
960 build-days-to-keep: "{build-days-to-keep}"
963 - lf-infra-parameters:
967 - lf-infra-tox-parameters:
969 tox-envs: "{tox-envs}"
973 build-timeout: "{build-timeout}"
974 jenkins-ssh-credential: "{jenkins-ssh-credential}"
978 - lf-infra-tox-install:
979 python-version: "{python-version}"
980 - shell: "{pre-build-script}"
982 parallel: "{parallel}"
988 # Python projects typically use tox to run testing.
989 name: "{project-name}-tox-verify-{stream}"
990 id: gerrit-tox-verify
993 ######################
994 # Default parameters #
995 ######################
997 gerrit-skip-vote: false
998 gerrit_verify_triggers:
999 - patchset-created-event:
1000 exclude-drafts: true
1001 exclude-trivial-rebase: false
1002 exclude-no-code-change: false
1003 - draft-published-event
1004 - comment-added-contains-event:
1005 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
1007 #####################
1008 # Job Configuration #
1009 #####################
1012 - lf-infra-gerrit-scm:
1013 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1014 git-url: "{git-url}"
1015 refspec: "$GERRIT_REFSPEC"
1016 branch: "$GERRIT_BRANCH"
1017 submodule-recursive: "{submodule-recursive}"
1018 submodule-timeout: "{submodule-timeout}"
1019 submodule-disable: "{submodule-disable}"
1020 choosing-strategy: gerrit
1024 server-name: "{gerrit-server-name}"
1025 trigger-on: "{obj:gerrit_verify_triggers}"
1027 - project-compare-type: ANT
1028 project-pattern: "{project}"
1030 - branch-compare-type: ANT
1031 branch-pattern: "**/{branch}"
1032 file-paths: "{obj:gerrit_trigger_file_paths}"
1034 successful: "{gerrit-skip-vote}"
1035 failed: "{gerrit-skip-vote}"
1036 unstable: "{gerrit-skip-vote}"
1037 notbuilt: "{gerrit-skip-vote}"
1040 # Python projects typically use tox to run testing.
1041 name: "{project-name}-tox-verify-{stream}"
1042 id: github-tox-verify
1046 - lf-infra-properties:
1047 build-days-to-keep: "{build-days-to-keep}"
1049 url: "{github-url}/{github-org}/{project}"
1052 - lf-infra-github-scm:
1053 url: "{git-clone-url}{github-org}/{project}"
1054 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1056 submodule-recursive: "{submodule-recursive}"
1057 submodule-timeout: "{submodule-timeout}"
1058 submodule-disable: "{submodule-disable}"
1059 choosing-strategy: default
1060 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1063 - github-pull-request:
1064 trigger-phrase: "^(recheck|reverify)$"
1065 only-trigger-phrase: false
1066 status-context: "Tox Verify"
1069 white-list-target-branches:
1071 included-regions: "{obj:github_included_regions}"
1074 # Run tox after merge of gerrit change set
1075 name: "{project-name}-tox-merge-{stream}"
1076 id: gerrit-tox-merge
1079 ######################
1080 # Default parameters #
1081 ######################
1083 gerrit_merge_triggers:
1084 - change-merged-event
1085 - comment-added-contains-event:
1086 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
1088 #####################
1089 # Job Configuration #
1090 #####################
1093 - lf-infra-gerrit-scm:
1094 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1095 git-url: "{git-url}"
1096 refspec: "$GERRIT_REFSPEC"
1097 branch: "$GERRIT_BRANCH"
1098 submodule-recursive: "{submodule-recursive}"
1099 submodule-timeout: "{submodule-timeout}"
1100 submodule-disable: "{submodule-disable}"
1101 # merge jobs always build from tip
1102 choosing-strategy: default
1106 server-name: "{gerrit-server-name}"
1107 trigger-on: "{obj:gerrit_merge_triggers}"
1109 - project-compare-type: ANT
1110 project-pattern: "{project}"
1112 - branch-compare-type: ANT
1113 branch-pattern: "**/{branch}"
1114 file-paths: "{obj:gerrit_trigger_file_paths}"
1117 # Run tox after merge of github pull request
1118 name: "{project-name}-tox-merge-{stream}"
1119 id: github-tox-merge
1123 - lf-infra-properties:
1124 build-days-to-keep: "{build-days-to-keep}"
1126 url: "{github-url}/{github-org}/{project}"
1129 - lf-infra-github-scm:
1130 url: "{git-clone-url}{github-org}/{project}"
1132 branch: "refs/heads/{branch}"
1133 submodule-recursive: "{submodule-recursive}"
1134 submodule-timeout: "{submodule-timeout}"
1135 submodule-disable: "{submodule-disable}"
1136 choosing-strategy: default
1137 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1140 - github-pull-request:
1141 trigger-phrase: "^remerge$"
1142 only-trigger-phrase: true
1143 status-context: "Tox Merge"
1148 white-list: "{obj:github_pr_allowlist}"
1149 admin-list: "{obj:github_pr_admin_list}"
1150 white-list-target-branches:
1152 included-regions: "{obj:github_included_regions}"
1158 - _lf_pypi_common: &lf_pypi_common
1159 name: lf-pypi-common
1161 ######################
1162 # Default parameters #
1163 ######################
1165 archive-artifacts: >
1168 build-days-to-keep: 7
1172 git-url: "$GIT_URL/$GERRIT_PROJECT"
1173 github-url: "https://github.com"
1175 pre-build-script: "# pre-build script goes here"
1176 python-version: python3
1178 submodule-disable: false
1179 submodule-recursive: true
1180 submodule-timeout: 10
1184 gerrit_trigger_file_paths:
1185 - compare-type: REG_EXP
1188 # github_included_regions MUST match gerrit_trigger_file_paths
1189 github_included_regions:
1192 #####################
1193 # Job Configuration #
1194 #####################
1196 project-type: freestyle
1197 node: "{build-node}"
1198 disabled: "{disable-job}"
1201 - lf-infra-properties:
1202 build-days-to-keep: "{build-days-to-keep}"
1205 - lf-infra-parameters:
1206 project: "{project}"
1209 - lf-infra-tox-parameters:
1210 tox-dir: "{tox-dir}"
1211 tox-envs: "{tox-envs}"
1213 name: BUILD_BDIST_WHEEL
1214 default: "{dist-binary}"
1215 description: "Set to True (checked) to build a binary distribution"
1219 description: "Set to True (checked) to skip uploading artifacts"
1222 - lf-infra-wrappers:
1223 build-timeout: "{build-timeout}"
1224 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1229 - _lf_pypi_verify_builders: &lf_pypi_verify_builders
1230 name: lf-pypi-verify-builders
1233 - lf-infra-pre-build
1234 - lf-infra-tox-install:
1235 python-version: "{python-version}"
1236 - shell: "{pre-build-script}"
1238 parallel: "{parallel}"
1239 - shell: !include-raw-escape: ../shell/pypi-dist-build.sh
1241 - _lf_pypi_publish_builders: &lf_pypi_publish_builders
1242 name: lf-pypi-publish-builders
1245 - lf-infra-pre-build
1246 - lf-infra-tox-install:
1247 python-version: "{python-version}"
1248 - shell: "{pre-build-script}"
1250 parallel: "{parallel}"
1251 - shell: !include-raw-escape: ../shell/pypi-dist-build.sh
1252 - config-file-provider:
1255 target: "$HOME/.pypirc"
1257 properties-content: "REPOSITORY={pypi-repo}"
1258 - shell: !include-raw-escape: ../shell/pypi-upload.sh
1261 name: "{project-name}-pypi-verify-{stream}"
1262 id: gerrit-pypi-verify
1264 <<: *lf_pypi_verify_builders
1267 - lf-infra-gerrit-scm:
1268 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1269 git-url: "{git-url}"
1270 refspec: "$GERRIT_REFSPEC"
1271 branch: "$GERRIT_BRANCH"
1272 submodule-recursive: "{submodule-recursive}"
1273 submodule-timeout: "{submodule-timeout}"
1274 submodule-disable: "{submodule-disable}"
1275 choosing-strategy: gerrit
1279 server-name: "{gerrit-server-name}"
1281 - patchset-created-event:
1282 exclude-drafts: true
1283 exclude-trivial-rebase: false
1284 exclude-no-code-change: false
1285 - draft-published-event
1286 - comment-added-contains-event:
1287 # yamllint disable-line rule:line-length
1288 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
1290 - project-compare-type: ANT
1291 project-pattern: "{project}"
1293 - branch-compare-type: ANT
1294 branch-pattern: "**/{branch}"
1295 file-paths: "{obj:gerrit_trigger_file_paths}"
1298 name: "{project-name}-pypi-verify-{stream}"
1299 id: github-pypi-verify
1301 <<: *lf_pypi_verify_builders
1305 url: "{github-url}/{github-org}/{project}"
1308 - lf-infra-github-scm:
1309 url: "{git-clone-url}{github-org}/{project}"
1310 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1312 submodule-recursive: "{submodule-recursive}"
1313 submodule-timeout: "{submodule-timeout}"
1314 submodule-disable: "{submodule-disable}"
1315 choosing-strategy: default
1316 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1319 - github-pull-request:
1320 trigger-phrase: "^(recheck|reverify)$"
1321 only-trigger-phrase: false
1322 status-context: "PyPI Verify"
1325 white-list-target-branches:
1327 included-regions: "{obj:github_included_regions}"
1330 name: "{project-name}-pypi-merge-{stream}"
1331 id: gerrit-pypi-merge
1333 <<: *lf_pypi_publish_builders
1335 cron: "" # avoid for pypi which rejects duplicates
1336 pypi-repo: pypi-test
1339 - lf-infra-gerrit-scm:
1340 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1341 git-url: "{git-url}"
1342 refspec: "$GERRIT_REFSPEC"
1343 branch: "$GERRIT_BRANCH"
1344 submodule-recursive: "{submodule-recursive}"
1345 submodule-timeout: "{submodule-timeout}"
1346 submodule-disable: "{submodule-disable}"
1347 # merge jobs always build from tip
1348 choosing-strategy: default
1351 - timed: "{obj:cron}"
1353 server-name: "{gerrit-server-name}"
1355 - change-merged-event
1356 - comment-added-contains-event:
1357 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
1359 - project-compare-type: ANT
1360 project-pattern: "{project}"
1362 - branch-compare-type: ANT
1363 branch-pattern: "**/{branch}"
1364 file-paths: "{obj:gerrit_trigger_file_paths}"
1367 name: "{project-name}-pypi-merge-{stream}"
1368 id: github-pypi-merge
1370 <<: *lf_pypi_publish_builders
1373 pypi-repo: pypi-test
1377 url: "{github-url}/{github-org}/{project}"
1380 - lf-infra-github-scm:
1381 url: "{git-clone-url}{github-org}/{project}"
1383 branch: "refs/heads/{branch}"
1384 submodule-recursive: "{submodule-recursive}"
1385 submodule-timeout: "{submodule-timeout}"
1386 submodule-disable: "{submodule-disable}"
1387 choosing-strategy: default
1388 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1391 - timed: "{obj:cron}"
1392 - github-pull-request:
1393 trigger-phrase: "^remerge$"
1394 only-trigger-phrase: false
1395 status-context: "Merge"
1400 white-list: "{obj:github_pr_allowlist}"
1401 admin-list: "{obj:github_pr_admin_list}"
1402 white-list-target-branches:
1404 included-regions: "{obj:github_included_regions}"
1407 name: "{project-name}-pypi-stage-{stream}"
1408 id: gerrit-pypi-stage
1410 <<: *lf_pypi_publish_builders
1413 pypi-repo: pypi-test
1415 gerrit_stage_triggers:
1416 - comment-added-contains-event:
1417 comment-contains-value: '^Patch Set\s+\d+:\s+stage-release\s*$'
1420 - lf-infra-gerrit-scm:
1421 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1422 git-url: "{git-url}"
1423 refspec: "$GERRIT_REFSPEC"
1424 branch: "$GERRIT_BRANCH"
1425 submodule-recursive: "{submodule-recursive}"
1426 submodule-timeout: "{submodule-timeout}"
1427 submodule-disable: "{submodule-disable}"
1428 # stage jobs always build from tip
1429 choosing-strategy: default
1432 - timed: "{obj:cron}"
1434 server-name: "{gerrit-server-name}"
1435 trigger-on: "{obj:gerrit_stage_triggers}"
1437 - project-compare-type: ANT
1438 project-pattern: "{project}"
1440 - branch-compare-type: ANT
1441 branch-pattern: "**/{branch}"
1442 file-paths: "{obj:gerrit_trigger_file_paths}"
1445 name: "{project-name}-pypi-stage-{stream}"
1446 id: github-pypi-stage
1448 <<: *lf_pypi_publish_builders
1451 pypi-repo: pypi-test
1455 url: "{github-url}/{github-org}/{project}"
1458 - lf-infra-github-scm:
1459 url: "{git-clone-url}{github-org}/{project}"
1461 branch: "refs/heads/{branch}"
1462 submodule-recursive: "{submodule-recursive}"
1463 submodule-timeout: "{submodule-timeout}"
1464 submodule-disable: "{submodule-disable}"
1465 choosing-strategy: default
1466 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1469 - timed: "{obj:cron}"
1470 - github-pull-request:
1471 trigger-phrase: "^stage-release$"
1472 only-trigger-phrase: true
1473 status-context: "Release"
1476 white-list-target-branches:
1478 included-regions: "{obj:github_included_regions}"