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"
783 pre-build-script: "# pre-build script goes here"
784 python-version: python3
786 submodule-recursive: true
787 submodule-timeout: 10
788 submodule-disable: false
792 sonar-additional-args: ""
794 sonar-project-file: "sonar-project.properties"
798 #####################
799 # Job Configuration #
800 #####################
802 project-type: freestyle
804 disabled: "{disable-job}"
807 - lf-infra-properties:
808 build-days-to-keep: "{build-days-to-keep}"
812 build-timeout: "{build-timeout}"
813 jenkins-ssh-credential: "{jenkins-ssh-credential}"
816 - lf-infra-parameters:
820 - lf-infra-tox-parameters:
822 tox-envs: "{tox-envs}"
824 name: ARCHIVE_ARTIFACTS
825 default: "{archive-artifacts}"
826 description: Artifacts to archive to the logs server.
830 - lf-infra-tox-install:
831 python-version: "{python-version}"
832 - shell: "{pre-build-script}"
834 parallel: "{parallel}"
836 sonar-task: "{sonar-task}"
837 sonar-project-file: "{sonar-project-file}"
838 sonar-properties: "{sonar-properties}"
839 sonar-java-opts: "{sonar-java-opts}"
840 sonar-additional-args: "{sonar-additional-args}"
846 name: "{project-name}-tox-sonarqube"
847 id: gerrit-tox-sonarqube
849 <<: *lf_tox_sonarqube
851 ######################
852 # Default parameters #
853 ######################
855 gerrit_sonar_triggers:
856 - comment-added-contains-event:
857 comment-contains-value: '^Patch Set\s+\d+:\s+run-sonar\s*$'
860 - lf-infra-gerrit-scm:
861 branch: "$GERRIT_BRANCH"
862 jenkins-ssh-credential: "{jenkins-ssh-credential}"
864 refspec: "$GERRIT_REFSPEC"
865 submodule-recursive: "{submodule-recursive}"
866 submodule-timeout: "{submodule-timeout}"
867 submodule-disable: "{submodule-disable}"
868 choosing-strategy: default
871 - timed: "{obj:cron}"
873 server-name: "{gerrit-server-name}"
874 trigger-on: "{obj:gerrit_sonar_triggers}"
876 - project-compare-type: "ANT"
877 project-pattern: "{project}"
879 - branch-compare-type: "ANT"
880 branch-pattern: "**/{branch}"
883 name: "{project-name}-tox-sonarqube"
884 id: github-tox-sonarqube
886 <<: *lf_tox_sonarqube
889 - lf-infra-github-scm:
891 jenkins-ssh-credential: "{jenkins-ssh-credential}"
892 url: "{git-clone-url}{github-org}/{project}"
893 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
894 submodule-recursive: "{submodule-recursive}"
895 submodule-timeout: "{submodule-timeout}"
896 submodule-disable: "{submodule-disable}"
897 choosing-strategy: default
900 - github-pull-request:
901 trigger-phrase: "^run-sonar$"
902 only-trigger-phrase: false
903 status-context: "Tox Sonarqube"
906 white-list-target-branches:
913 - _lf_tox_common: &lf_tox_common
916 ######################
917 # Default parameters #
918 ######################
921 build-days-to-keep: 7
924 git-url: "$GIT_URL/$GERRIT_PROJECT"
925 github-url: "https://github.com"
927 pre-build-script: "# pre-build script goes here"
928 python-version: python3
930 submodule-recursive: true
931 submodule-timeout: 10
932 submodule-disable: false
936 gerrit_trigger_file_paths:
937 - compare-type: REG_EXP
940 # github_included_regions MUST match gerrit_trigger_file_paths
941 github_included_regions:
944 #####################
945 # Job Configuration #
946 #####################
948 project-type: freestyle
951 disabled: "{disable-job}"
954 - lf-infra-properties:
955 build-days-to-keep: "{build-days-to-keep}"
958 - lf-infra-parameters:
962 - lf-infra-tox-parameters:
964 tox-envs: "{tox-envs}"
968 build-timeout: "{build-timeout}"
969 jenkins-ssh-credential: "{jenkins-ssh-credential}"
973 - lf-infra-tox-install:
974 python-version: "{python-version}"
975 - shell: "{pre-build-script}"
977 parallel: "{parallel}"
983 # Python projects typically use tox to run testing.
984 name: "{project-name}-tox-verify-{stream}"
985 id: gerrit-tox-verify
988 ######################
989 # Default parameters #
990 ######################
992 gerrit-skip-vote: false
993 gerrit_verify_triggers:
994 - patchset-created-event:
996 exclude-trivial-rebase: false
997 exclude-no-code-change: false
998 - draft-published-event
999 - comment-added-contains-event:
1000 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
1002 #####################
1003 # Job Configuration #
1004 #####################
1007 - lf-infra-gerrit-scm:
1008 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1009 git-url: "{git-url}"
1010 refspec: "$GERRIT_REFSPEC"
1011 branch: "$GERRIT_BRANCH"
1012 submodule-recursive: "{submodule-recursive}"
1013 submodule-timeout: "{submodule-timeout}"
1014 submodule-disable: "{submodule-disable}"
1015 choosing-strategy: gerrit
1019 server-name: "{gerrit-server-name}"
1020 trigger-on: "{obj:gerrit_verify_triggers}"
1022 - project-compare-type: ANT
1023 project-pattern: "{project}"
1025 - branch-compare-type: ANT
1026 branch-pattern: "**/{branch}"
1027 file-paths: "{obj:gerrit_trigger_file_paths}"
1029 successful: "{gerrit-skip-vote}"
1030 failed: "{gerrit-skip-vote}"
1031 unstable: "{gerrit-skip-vote}"
1032 notbuilt: "{gerrit-skip-vote}"
1035 # Python projects typically use tox to run testing.
1036 name: "{project-name}-tox-verify-{stream}"
1037 id: github-tox-verify
1041 - lf-infra-properties:
1042 build-days-to-keep: "{build-days-to-keep}"
1044 url: "{github-url}/{github-org}/{project}"
1047 - lf-infra-github-scm:
1048 url: "{git-clone-url}{github-org}/{project}"
1049 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1051 submodule-recursive: "{submodule-recursive}"
1052 submodule-timeout: "{submodule-timeout}"
1053 submodule-disable: "{submodule-disable}"
1054 choosing-strategy: default
1055 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1058 - github-pull-request:
1059 trigger-phrase: "^(recheck|reverify)$"
1060 only-trigger-phrase: false
1061 status-context: "Tox Verify"
1064 white-list-target-branches:
1066 included-regions: "{obj:github_included_regions}"
1069 # Run tox after merge of gerrit change set
1070 name: "{project-name}-tox-merge-{stream}"
1071 id: gerrit-tox-merge
1074 ######################
1075 # Default parameters #
1076 ######################
1078 gerrit_merge_triggers:
1079 - change-merged-event
1080 - comment-added-contains-event:
1081 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
1083 #####################
1084 # Job Configuration #
1085 #####################
1088 - lf-infra-gerrit-scm:
1089 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1090 git-url: "{git-url}"
1091 refspec: "$GERRIT_REFSPEC"
1092 branch: "$GERRIT_BRANCH"
1093 submodule-recursive: "{submodule-recursive}"
1094 submodule-timeout: "{submodule-timeout}"
1095 submodule-disable: "{submodule-disable}"
1096 # merge jobs always build from tip
1097 choosing-strategy: default
1101 server-name: "{gerrit-server-name}"
1102 trigger-on: "{obj:gerrit_merge_triggers}"
1104 - project-compare-type: ANT
1105 project-pattern: "{project}"
1107 - branch-compare-type: ANT
1108 branch-pattern: "**/{branch}"
1109 file-paths: "{obj:gerrit_trigger_file_paths}"
1112 # Run tox after merge of github pull request
1113 name: "{project-name}-tox-merge-{stream}"
1114 id: github-tox-merge
1118 - lf-infra-properties:
1119 build-days-to-keep: "{build-days-to-keep}"
1121 url: "{github-url}/{github-org}/{project}"
1124 - lf-infra-github-scm:
1125 url: "{git-clone-url}{github-org}/{project}"
1127 branch: "refs/heads/{branch}"
1128 submodule-recursive: "{submodule-recursive}"
1129 submodule-timeout: "{submodule-timeout}"
1130 submodule-disable: "{submodule-disable}"
1131 choosing-strategy: default
1132 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1135 - github-pull-request:
1136 trigger-phrase: "^remerge$"
1137 only-trigger-phrase: true
1138 status-context: "Tox Merge"
1143 white-list: "{obj:github_pr_allowlist}"
1144 admin-list: "{obj:github_pr_admin_list}"
1145 white-list-target-branches:
1147 included-regions: "{obj:github_included_regions}"
1153 - _lf_pypi_common: &lf_pypi_common
1154 name: lf-pypi-common
1156 ######################
1157 # Default parameters #
1158 ######################
1160 archive-artifacts: >
1163 build-days-to-keep: 7
1167 git-url: "$GIT_URL/$GERRIT_PROJECT"
1168 github-url: "https://github.com"
1170 pre-build-script: "# pre-build script goes here"
1171 python-version: python3
1173 submodule-disable: false
1174 submodule-recursive: true
1175 submodule-timeout: 10
1179 gerrit_trigger_file_paths:
1180 - compare-type: REG_EXP
1183 # github_included_regions MUST match gerrit_trigger_file_paths
1184 github_included_regions:
1187 #####################
1188 # Job Configuration #
1189 #####################
1191 project-type: freestyle
1192 node: "{build-node}"
1193 disabled: "{disable-job}"
1196 - lf-infra-properties:
1197 build-days-to-keep: "{build-days-to-keep}"
1200 - lf-infra-parameters:
1201 project: "{project}"
1204 - lf-infra-tox-parameters:
1205 tox-dir: "{tox-dir}"
1206 tox-envs: "{tox-envs}"
1208 name: BUILD_BDIST_WHEEL
1209 default: "{dist-binary}"
1210 description: "Set to True (checked) to build a binary distribution"
1214 description: "Set to True (checked) to skip uploading artifacts"
1217 - lf-infra-wrappers:
1218 build-timeout: "{build-timeout}"
1219 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1224 - _lf_pypi_verify_builders: &lf_pypi_verify_builders
1225 name: lf-pypi-verify-builders
1228 - lf-infra-pre-build
1229 - lf-infra-tox-install:
1230 python-version: "{python-version}"
1231 - shell: "{pre-build-script}"
1233 parallel: "{parallel}"
1234 - shell: !include-raw-escape: ../shell/pypi-dist-build.sh
1236 - _lf_pypi_publish_builders: &lf_pypi_publish_builders
1237 name: lf-pypi-publish-builders
1240 - lf-infra-pre-build
1241 - lf-infra-tox-install:
1242 python-version: "{python-version}"
1243 - shell: "{pre-build-script}"
1245 parallel: "{parallel}"
1246 - shell: !include-raw-escape: ../shell/pypi-dist-build.sh
1247 - config-file-provider:
1250 target: "$HOME/.pypirc"
1252 properties-content: "REPOSITORY={pypi-repo}"
1253 - shell: !include-raw-escape: ../shell/pypi-upload.sh
1256 name: "{project-name}-pypi-verify-{stream}"
1257 id: gerrit-pypi-verify
1259 <<: *lf_pypi_verify_builders
1262 - lf-infra-gerrit-scm:
1263 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1264 git-url: "{git-url}"
1265 refspec: "$GERRIT_REFSPEC"
1266 branch: "$GERRIT_BRANCH"
1267 submodule-recursive: "{submodule-recursive}"
1268 submodule-timeout: "{submodule-timeout}"
1269 submodule-disable: "{submodule-disable}"
1270 choosing-strategy: gerrit
1274 server-name: "{gerrit-server-name}"
1276 - patchset-created-event:
1277 exclude-drafts: true
1278 exclude-trivial-rebase: false
1279 exclude-no-code-change: false
1280 - draft-published-event
1281 - comment-added-contains-event:
1282 # yamllint disable-line rule:line-length
1283 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
1285 - project-compare-type: ANT
1286 project-pattern: "{project}"
1288 - branch-compare-type: ANT
1289 branch-pattern: "**/{branch}"
1290 file-paths: "{obj:gerrit_trigger_file_paths}"
1293 name: "{project-name}-pypi-verify-{stream}"
1294 id: github-pypi-verify
1296 <<: *lf_pypi_verify_builders
1300 url: "{github-url}/{github-org}/{project}"
1303 - lf-infra-github-scm:
1304 url: "{git-clone-url}{github-org}/{project}"
1305 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
1307 submodule-recursive: "{submodule-recursive}"
1308 submodule-timeout: "{submodule-timeout}"
1309 submodule-disable: "{submodule-disable}"
1310 choosing-strategy: default
1311 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1314 - github-pull-request:
1315 trigger-phrase: "^(recheck|reverify)$"
1316 only-trigger-phrase: false
1317 status-context: "PyPI Verify"
1320 white-list-target-branches:
1322 included-regions: "{obj:github_included_regions}"
1325 name: "{project-name}-pypi-merge-{stream}"
1326 id: gerrit-pypi-merge
1328 <<: *lf_pypi_publish_builders
1330 cron: "" # avoid for pypi which rejects duplicates
1331 pypi-repo: pypi-test
1334 - lf-infra-gerrit-scm:
1335 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1336 git-url: "{git-url}"
1337 refspec: "$GERRIT_REFSPEC"
1338 branch: "$GERRIT_BRANCH"
1339 submodule-recursive: "{submodule-recursive}"
1340 submodule-timeout: "{submodule-timeout}"
1341 submodule-disable: "{submodule-disable}"
1342 # merge jobs always build from tip
1343 choosing-strategy: default
1346 - timed: "{obj:cron}"
1348 server-name: "{gerrit-server-name}"
1350 - change-merged-event
1351 - comment-added-contains-event:
1352 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
1354 - project-compare-type: ANT
1355 project-pattern: "{project}"
1357 - branch-compare-type: ANT
1358 branch-pattern: "**/{branch}"
1359 file-paths: "{obj:gerrit_trigger_file_paths}"
1362 name: "{project-name}-pypi-merge-{stream}"
1363 id: github-pypi-merge
1365 <<: *lf_pypi_publish_builders
1368 pypi-repo: pypi-test
1372 url: "{github-url}/{github-org}/{project}"
1375 - lf-infra-github-scm:
1376 url: "{git-clone-url}{github-org}/{project}"
1378 branch: "refs/heads/{branch}"
1379 submodule-recursive: "{submodule-recursive}"
1380 submodule-timeout: "{submodule-timeout}"
1381 submodule-disable: "{submodule-disable}"
1382 choosing-strategy: default
1383 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1386 - timed: "{obj:cron}"
1387 - github-pull-request:
1388 trigger-phrase: "^remerge$"
1389 only-trigger-phrase: false
1390 status-context: "Merge"
1395 white-list: "{obj:github_pr_allowlist}"
1396 admin-list: "{obj:github_pr_admin_list}"
1397 white-list-target-branches:
1399 included-regions: "{obj:github_included_regions}"
1402 name: "{project-name}-pypi-stage-{stream}"
1403 id: gerrit-pypi-stage
1405 <<: *lf_pypi_publish_builders
1408 pypi-repo: pypi-test
1410 gerrit_stage_triggers:
1411 - comment-added-contains-event:
1412 comment-contains-value: '^Patch Set\s+\d+:\s+stage-release\s*$'
1415 - lf-infra-gerrit-scm:
1416 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1417 git-url: "{git-url}"
1418 refspec: "$GERRIT_REFSPEC"
1419 branch: "$GERRIT_BRANCH"
1420 submodule-recursive: "{submodule-recursive}"
1421 submodule-timeout: "{submodule-timeout}"
1422 submodule-disable: "{submodule-disable}"
1423 # stage jobs always build from tip
1424 choosing-strategy: default
1427 - timed: "{obj:cron}"
1429 server-name: "{gerrit-server-name}"
1430 trigger-on: "{obj:gerrit_stage_triggers}"
1432 - project-compare-type: ANT
1433 project-pattern: "{project}"
1435 - branch-compare-type: ANT
1436 branch-pattern: "**/{branch}"
1437 file-paths: "{obj:gerrit_trigger_file_paths}"
1440 name: "{project-name}-pypi-stage-{stream}"
1441 id: github-pypi-stage
1443 <<: *lf_pypi_publish_builders
1446 pypi-repo: pypi-test
1450 url: "{github-url}/{github-org}/{project}"
1453 - lf-infra-github-scm:
1454 url: "{git-clone-url}{github-org}/{project}"
1456 branch: "refs/heads/{branch}"
1457 submodule-recursive: "{submodule-recursive}"
1458 submodule-timeout: "{submodule-timeout}"
1459 submodule-disable: "{submodule-disable}"
1460 choosing-strategy: default
1461 jenkins-ssh-credential: "{jenkins-ssh-credential}"
1464 - timed: "{obj:cron}"
1465 - github-pull-request:
1466 trigger-phrase: "^stage-release$"
1467 only-trigger-phrase: true
1468 status-context: "Release"
1471 white-list-target-branches:
1473 included-regions: "{obj:github_included_regions}"