1 # SPDX-License-Identifier: Apache-2.0
2 ##############################################################################
3 # Copyright (c) 2019 The Linux Foundation and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
14 - _lf_release_common: &lf_release_common
15 name: lf-release-common
21 project-type: freestyle
25 - lf-infra-properties:
35 - _lf_release_verify: &lf_release_verify
36 name: lf-release-verify
38 ######################
39 # Default parameters #
40 ######################
45 git-url: "$GIT_URL/$PROJECT"
46 gerrit-skip-vote: false
48 use-release-file: true
50 gerrit_verify_triggers:
51 - patchset-created-event:
53 exclude-trivial-rebase: false
54 exclude-no-code-change: false
55 - draft-published-event
56 - comment-added-contains-event:
57 # yamllint disable-line rule:line-length
58 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
60 github_included_regions:
61 - '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
67 disabled: "{disable-job}"
70 - lf-infra-parameters:
72 branch: "$GERRIT_BRANCH"
73 stream: "$GERRIT_BRANCH"
74 - lf-build-with-parameters-maven-release:
75 use-release-file: "{use-release-file}"
80 condition-kind: regex-match
81 regex: "^.*-docker-.*"
84 - lf-provide-maven-settings:
85 global-settings-file: "global-settings"
86 settings-file: "{mvn-settings}"
87 - shell: !include-raw-escape: ../shell/docker-login.sh
88 - lf-provide-maven-settings-cleanup
89 - config-file-provider:
91 - file-id: sigul-config
92 variable: SIGUL_CONFIG
93 - file-id: sigul-password
94 variable: SIGUL_PASSWORD
97 - file-id: signing-pubkey
98 variable: SIGNING_PUBKEY
99 - shell: !include-raw-escape: ../shell/sigul-configuration.sh
100 - shell: !include-raw-escape: ../shell/sigul-install.sh
104 name: "{project-name}-release-verify-{stream}"
105 id: gerrit-release-verify
106 <<: *lf_release_common
107 # yamllint disable-line rule:key-duplicates
108 <<: *lf_release_verify
112 build-timeout: "{build-timeout}"
113 jenkins-ssh-credential: "{jenkins-ssh-credential}"
116 - lf-infra-gerrit-scm:
118 refspec: "$GERRIT_REFSPEC"
119 branch: "$GERRIT_BRANCH"
120 submodule-disable: true
121 submodule-recursive: false
122 submodule-timeout: 10
123 choosing-strategy: gerrit
124 jenkins-ssh-credential: "{jenkins-ssh-credential}"
128 server-name: "{gerrit-server-name}"
129 trigger-on: "{obj:gerrit_verify_triggers}"
131 - project-compare-type: "ANT"
132 project-pattern: "{project}"
134 - branch-compare-type: "ANT"
137 - compare-type: REG_EXP
138 pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
140 successful: "{gerrit-skip-vote}"
141 failed: "{gerrit-skip-vote}"
142 unstable: "{gerrit-skip-vote}"
143 notbuilt: "{gerrit-skip-vote}"
146 name: "{project-name}-release-verify-{stream}"
147 id: github-release-verify
148 <<: *lf_release_common
149 # yamllint disable-line rule:key-duplicates
150 <<: *lf_release_verify
153 - lf-infra-properties:
154 build-days-to-keep: "{build-days-to-keep}"
156 url: "{github-url}/{github-org}/{project}"
160 build-timeout: "{build-timeout}"
161 jenkins-ssh-credential: "{jenkins-ssh-credential}"
164 - lf-infra-github-scm:
165 url: "{git-clone-url}{github-org}/{project}"
166 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
168 submodule-recursive: "{submodule-recursive}"
169 submodule-timeout: "{submodule-timeout}"
170 submodule-disable: "{submodule-disable}"
171 choosing-strategy: default
172 jenkins-ssh-credential: "{jenkins-ssh-credential}"
175 - github-pull-request:
176 trigger-phrase: ^(recheck|reverify)$
177 only-trigger-phrase: false
178 status-context: "Github Release Verify"
181 white-list-target-branches:
183 included-regions: "{obj:github_included_regions}"
189 - _lf_release_merge: &lf_release_merge
190 name: lf-release-merge
192 ######################
193 # Default parameters #
194 ######################
196 build-days-to-keep: 7
199 git-url: "$GIT_URL/$PROJECT"
201 use-release-file: true
203 gerrit_merge_triggers:
204 - change-merged-event
205 - comment-added-contains-event:
206 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
208 github_included_regions:
209 - '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
211 #####################
212 # Job Configuration #
213 #####################
215 disabled: "{disable-job}"
218 - lf-infra-parameters:
220 branch: "$GERRIT_BRANCH"
221 stream: "$GERRIT_BRANCH"
222 - lf-build-with-parameters-maven-release:
223 use-release-file: "{use-release-file}"
228 Tag Gerrit repo after release.
233 If DRY_RUN is enabled artifacts are not published.
238 condition-kind: regex-match
239 regex: "^.*-docker-.*"
240 label: "{build-node}"
242 - lf-provide-maven-settings:
243 global-settings-file: "global-settings"
244 settings-file: "{mvn-settings}"
245 - shell: !include-raw-escape: ../shell/docker-login.sh
246 - lf-provide-maven-settings-cleanup
247 - config-file-provider:
249 - file-id: sigul-config
250 variable: SIGUL_CONFIG
251 - file-id: sigul-password
252 variable: SIGUL_PASSWORD
255 - file-id: signing-pubkey
256 variable: SIGNING_PUBKEY
257 - shell: !include-raw-escape: ../shell/sigul-configuration.sh
258 - shell: !include-raw-escape: ../shell/sigul-install.sh
262 name: "{project-name}-release-merge-{stream}"
263 id: gerrit-release-merge
264 <<: *lf_release_common
265 # yamllint disable-line rule:key-duplicates
266 <<: *lf_release_merge
270 build-timeout: "{build-timeout}"
271 jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
274 - lf-infra-gerrit-scm:
275 jenkins-ssh-credential: "{jenkins-ssh-credential}"
277 refspec: "$GERRIT_REFSPEC"
278 branch: "$GERRIT_BRANCH"
279 submodule-disable: true
280 submodule-recursive: false
281 submodule-timeout: 10
282 # release merge jobs build from commit not tip
283 choosing-strategy: gerrit
287 server-name: "{gerrit-server-name}"
288 trigger-on: "{obj:gerrit_merge_triggers}"
290 - project-compare-type: "ANT"
291 project-pattern: "{project}"
293 - branch-compare-type: "ANT"
296 - compare-type: REG_EXP
297 pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
300 name: "{project-name}-release-merge-{stream}"
301 id: github-release-merge
302 <<: *lf_release_common
303 # yamllint disable-line rule:key-duplicates
304 <<: *lf_release_merge
307 - lf-infra-properties:
308 build-days-to-keep: "{build-days-to-keep}"
310 url: "{github-url}/{github-org}/{project}"
314 build-timeout: "{build-timeout}"
315 jenkins-ssh-credential: "{jenkins-ssh-credential}"
318 - lf-infra-github-scm:
319 url: "{git-clone-url}{github-org}/{project}"
320 refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
322 submodule-recursive: "{submodule-recursive}"
323 submodule-timeout: "{submodule-timeout}"
324 submodule-disable: "{submodule-disable}"
325 choosing-strategy: default
326 jenkins-ssh-credential: "{jenkins-ssh-credential}"
329 - github-pull-request:
330 trigger-phrase: "^remerge$"
331 only-trigger-phrase: true
332 status-context: "Github Release Merge"
335 white-list-target-branches:
337 included-regions: "{obj:github_included_regions}"
343 - _lf_pypi_verify_wrappers: &lf_pypi_verify_wrappers
344 name: lf-pypi-verify-wrappers
348 build-timeout: "{build-timeout}"
349 jenkins-ssh-credential: "{jenkins-ssh-credential}"
351 - _lf_pypi_release_wrappers: &lf_pypi_release_wrappers
352 name: lf-pypi-release-wrappers
356 build-timeout: "{build-timeout}"
357 jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
359 - _lf_pypi_release: &lf_pypi_release
360 name: lf-pypi-release
362 ######################
363 # Default parameters #
364 ######################
366 branch: master # for github
367 build-days-to-keep: 7
370 gerrit-skip-vote: false
371 git-url: "$GIT_URL/$PROJECT"
372 github-url: "https://github.com"
374 pypi-stage-index: https://test.pypi.org/simple
375 submodule-disable: true
376 submodule-recursive: false
377 submodule-timeout: 10
378 use-release-file: true
380 # define once and use twice; jobs MUST NOT override
381 gerrit_release_trigger_file_paths:
382 - compare-type: REG_EXP
383 pattern: '(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)'
385 # yamllint disable-line rule:line-length
386 # github_release_included_regions MUST match gerrit_release_trigger_file_paths
387 github_release_included_regions:
388 - 'releases\/pypi.*\.yaml'
389 - '.releases\/pypi.*\.yaml'
392 - lf-infra-parameters:
394 branch: "$GERRIT_BRANCH"
395 stream: "$GERRIT_BRANCH"
396 # accept all entries defined in the release-yaml file
398 name: DISTRIBUTION_TYPE
400 description: "The Jenkins release job distribution type."
404 description: "The partial path of logs from the PyPI merge job."
408 description: "Tag to push to git repo; optional, defaults to VERSION."
412 description: "The PyPI project name."
416 description: "The Python compatibility version, example: 3.6"
420 description: "The module version, example: 1.0.0"
421 # special parameters for manual use of the Jenkins job
423 name: USE_RELEASE_FILE
425 description: "Set to False (unchecked) to build with parameters"
430 Tag Gerrit repo after release.
434 description: "Set to True (checked) to skip uploading artifacts"
438 - config-file-provider:
440 - file-id: sigul-config
441 variable: SIGUL_CONFIG
442 - file-id: sigul-password
443 variable: SIGUL_PASSWORD
446 - file-id: signing-pubkey
447 variable: SIGNING_PUBKEY
449 target: "$HOME/.pypirc"
450 - shell: !include-raw-escape: ../shell/sigul-configuration.sh
451 - shell: !include-raw-escape: ../shell/sigul-install.sh
453 properties-content: |
454 PYPI_INDEX={pypi-stage-index}
455 REPOSITORY={pypi-repo}
456 - shell: !include-raw-escape: ../shell/release-job.sh
459 name: "{project-name}-pypi-release-merge"
460 id: gerrit-pypi-release-merge
461 <<: *lf_release_common
462 <<: *lf_pypi_release_wrappers
466 - lf-infra-gerrit-scm:
467 jenkins-ssh-credential: "{jenkins-ssh-credential}"
469 refspec: "$GERRIT_REFSPEC"
470 branch: "$GERRIT_BRANCH"
471 submodule-recursive: "{submodule-recursive}"
472 submodule-timeout: "{submodule-timeout}"
473 submodule-disable: "{submodule-disable}"
474 # release merge jobs build from commit not tip
475 choosing-strategy: gerrit
479 server-name: "{gerrit-server-name}"
481 - change-merged-event
482 - comment-added-contains-event:
483 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
485 - project-compare-type: "ANT"
486 project-pattern: "{project}"
488 - branch-compare-type: ANT
490 file-paths: "{obj:gerrit_release_trigger_file_paths}"
493 name: "{project-name}-pypi-release-merge"
494 id: github-pypi-release-merge
495 <<: *lf_release_common
496 <<: *lf_pypi_release_wrappers
501 url: "{github-url}/{github-org}/{project}"
504 - lf-infra-github-scm:
505 url: "{git-clone-url}{github-org}/{project}"
507 branch: "refs/heads/{branch}"
508 submodule-recursive: "{submodule-recursive}"
509 submodule-timeout: "{submodule-timeout}"
510 submodule-disable: "{submodule-disable}"
511 choosing-strategy: default
512 jenkins-ssh-credential: "{jenkins-ssh-credential}"
515 - github-pull-request:
516 trigger-phrase: "^(remerge)$"
517 only-trigger-phrase: false
518 status-context: "PyPI Release Merge"
521 white-list-target-branches:
523 included-regions: "{obj:github_release_included_regions}"
526 name: "{project-name}-pypi-release-verify"
527 id: gerrit-pypi-release-verify
528 <<: *lf_release_common
529 <<: *lf_pypi_verify_wrappers
533 - lf-infra-gerrit-scm:
534 jenkins-ssh-credential: "{jenkins-ssh-credential}"
536 refspec: "$GERRIT_REFSPEC"
537 branch: "$GERRIT_BRANCH"
538 submodule-recursive: "{submodule-recursive}"
539 submodule-timeout: "{submodule-timeout}"
540 submodule-disable: "{submodule-disable}"
541 choosing-strategy: gerrit
545 server-name: "{gerrit-server-name}"
547 - patchset-created-event:
549 exclude-trivial-rebase: false
550 exclude-no-code-change: false
551 - draft-published-event
552 - comment-added-contains-event:
553 # yamllint disable-line rule:line-length
554 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
556 - project-compare-type: "ANT"
557 project-pattern: "{project}"
559 - branch-compare-type: ANT
561 file-paths: "{obj:gerrit_release_trigger_file_paths}"
564 name: "{project-name}-pypi-release-verify"
565 id: github-pypi-release-verify
566 <<: *lf_release_common
567 <<: *lf_pypi_verify_wrappers
572 url: "{github-url}/{github-org}/{project}"
575 - lf-infra-github-scm:
576 url: "{git-clone-url}{github-org}/{project}"
578 branch: "refs/heads/{branch}"
579 submodule-recursive: "{submodule-recursive}"
580 submodule-timeout: "{submodule-timeout}"
581 submodule-disable: "{submodule-disable}"
582 choosing-strategy: default
583 jenkins-ssh-credential: "{jenkins-ssh-credential}"
586 - github-pull-request:
587 trigger-phrase: "^(recheck|reverify)$"
588 only-trigger-phrase: false
589 status-context: "PyPI Release Verify"
592 white-list-target-branches:
594 included-regions: "{obj:github_release_included_regions}"
596 ########################
597 # PackageCloud RELEASE #
598 ########################
600 - _lf_packagecloud_release_common: &lf_packagecloud_release_common
601 name: lf-packagecloud-release-common
603 ######################
604 # Default parameters #
605 ######################
607 build-days-to-keep: 7
610 git-url: "$GIT_URL/$PROJECT"
611 gerrit-skip-vote: false
612 use-release-file: true
616 #####################
617 # Job Configuration #
618 #####################
620 disabled: "{disable-job}"
623 - lf-infra-parameters:
625 branch: "$GERRIT_BRANCH"
626 stream: "$GERRIT_BRANCH"
628 name: DISTRIBUTION_TYPE
629 default: "packagecloud"
630 description: "The Jenkins release job distribution type."
635 Tag Gerrit repo after release.
640 If DRY_RUN is enabled artifacts are not promoted.
642 name: USE_RELEASE_FILE
643 default: "{use-release-file}"
644 description: "Set to False for job built with parameters"
648 - config-file-provider:
650 - file-id: sigul-config
651 variable: SIGUL_CONFIG
652 - file-id: sigul-password
653 variable: SIGUL_PASSWORD
656 - file-id: signing-pubkey
657 variable: SIGNING_PUBKEY
658 - file-id: "packagecloud_api"
659 target: "$HOME/packagecloud_api"
660 - file-id: packagecloud-account
661 variable: ACCOUNT_NAME_FILE
662 - shell: !include-raw-escape: ../shell/sigul-configuration.sh
663 - shell: !include-raw-escape: ../shell/sigul-install.sh
667 name: "{project-name}-packagecloud-release-verify"
668 id: gerrit-packagecloud-release-verify
669 <<: *lf_release_common
670 <<: *lf_packagecloud_release_common
674 build-timeout: "{build-timeout}"
675 jenkins-ssh-credential: "{jenkins-ssh-credential}"
678 - lf-infra-gerrit-scm:
680 refspec: "$GERRIT_REFSPEC"
681 branch: "$GERRIT_BRANCH"
682 submodule-disable: true
683 submodule-recursive: false
684 submodule-timeout: 10
685 choosing-strategy: gerrit
686 jenkins-ssh-credential: "{jenkins-ssh-credential}"
690 server-name: "{gerrit-server-name}"
692 - patchset-created-event:
694 exclude-trivial-rebase: false
695 exclude-no-code-change: false
696 - draft-published-event
697 - comment-added-contains-event:
698 # yamllint disable-line rule:line-length
699 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
701 - project-compare-type: "ANT"
702 project-pattern: "{project}"
704 - branch-compare-type: "ANT"
707 - compare-type: REG_EXP
708 pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'
710 successful: "{gerrit-skip-vote}"
711 failed: "{gerrit-skip-vote}"
712 unstable: "{gerrit-skip-vote}"
713 notbuilt: "{gerrit-skip-vote}"
716 name: "{project-name}-packagecloud-release-merge"
717 id: gerrit-packagecloud-release-merge
718 <<: *lf_release_common
719 <<: *lf_packagecloud_release_common
723 build-timeout: "{build-timeout}"
724 jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
727 - lf-infra-gerrit-scm:
728 jenkins-ssh-credential: "{jenkins-ssh-credential}"
730 refspec: "$GERRIT_REFSPEC"
731 branch: "$GERRIT_BRANCH"
732 submodule-disable: true
733 submodule-recursive: false
734 submodule-timeout: 10
735 # release merge jobs build from commit not tip
736 choosing-strategy: gerrit
740 server-name: "{gerrit-server-name}"
742 - change-merged-event
743 - comment-added-contains-event:
744 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
746 - project-compare-type: "ANT"
747 project-pattern: "{project}"
749 - branch-compare-type: "ANT"
752 - compare-type: REG_EXP
753 pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'