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
47 use-release-file: true
49 gerrit_verify_triggers:
50 - patchset-created-event:
52 exclude-trivial-rebase: false
53 exclude-no-code-change: false
54 - draft-published-event
55 - comment-added-contains-event:
56 # yamllint disable-line rule:line-length
57 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
63 disabled: "{disable-job}"
66 - lf-infra-parameters:
68 branch: "$GERRIT_BRANCH"
69 stream: "$GERRIT_BRANCH"
70 - lf-build-with-parameters-maven-release:
71 use-release-file: "{use-release-file}"
76 condition-kind: regex-match
77 regex: "^.*-docker-.*"
80 - lf-provide-maven-settings:
81 global-settings-file: "global-settings"
82 settings-file: "{mvn-settings}"
83 - shell: !include-raw-escape: ../shell/docker-login.sh
84 - lf-provide-maven-settings-cleanup
85 - config-file-provider:
87 - file-id: sigul-config
88 variable: SIGUL_CONFIG
89 - file-id: sigul-password
90 variable: SIGUL_PASSWORD
93 - file-id: signing-pubkey
94 variable: SIGNING_PUBKEY
95 - shell: !include-raw-escape: ../shell/sigul-configuration.sh
96 - shell: !include-raw-escape: ../shell/sigul-install.sh
100 name: "{project-name}-release-verify"
101 id: gerrit-release-verify
102 <<: *lf_release_common
103 # yamllint disable-line rule:key-duplicates
104 <<: *lf_release_verify
108 build-timeout: "{build-timeout}"
109 jenkins-ssh-credential: "{jenkins-ssh-credential}"
112 - lf-infra-gerrit-scm:
114 refspec: "$GERRIT_REFSPEC"
115 branch: "$GERRIT_BRANCH"
116 submodule-disable: true
117 submodule-recursive: false
118 submodule-timeout: 10
119 choosing-strategy: gerrit
120 jenkins-ssh-credential: "{jenkins-ssh-credential}"
124 server-name: "{gerrit-server-name}"
125 trigger-on: "{obj:gerrit_verify_triggers}"
127 - project-compare-type: "ANT"
128 project-pattern: "{project}"
130 - branch-compare-type: "ANT"
133 - compare-type: REG_EXP
134 pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
136 successful: "{gerrit-skip-vote}"
137 failed: "{gerrit-skip-vote}"
138 unstable: "{gerrit-skip-vote}"
139 notbuilt: "{gerrit-skip-vote}"
145 - lf_release_merge: &lf_release_merge
146 name: lf-release-merge
148 ######################
149 # Default parameters #
150 ######################
152 build-days-to-keep: 7
155 git-url: "$GIT_URL/$PROJECT"
156 use-release-file: true
158 gerrit_merge_triggers:
159 - change-merged-event
160 - comment-added-contains-event:
161 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
163 #####################
164 # Job Configuration #
165 #####################
167 disabled: "{disable-job}"
170 - lf-infra-parameters:
172 branch: "$GERRIT_BRANCH"
173 stream: "$GERRIT_BRANCH"
174 - lf-build-with-parameters-maven-release:
175 use-release-file: "{use-release-file}"
180 If DRY_RUN is enabled artifacts are not published.
185 condition-kind: regex-match
186 regex: "^.*-docker-.*"
187 label: "{build-node}"
189 - lf-provide-maven-settings:
190 global-settings-file: "global-settings"
191 settings-file: "{mvn-settings}"
192 - shell: !include-raw-escape: ../shell/docker-login.sh
193 - lf-provide-maven-settings-cleanup
194 - config-file-provider:
196 - file-id: sigul-config
197 variable: SIGUL_CONFIG
198 - file-id: sigul-password
199 variable: SIGUL_PASSWORD
202 - file-id: signing-pubkey
203 variable: SIGNING_PUBKEY
204 - shell: !include-raw-escape: ../shell/sigul-configuration.sh
205 - shell: !include-raw-escape: ../shell/sigul-install.sh
209 name: "{project-name}-release-merge"
210 id: gerrit-release-merge
211 <<: *lf_release_common
212 # yamllint disable-line rule:key-duplicates
213 <<: *lf_release_merge
217 build-timeout: "{build-timeout}"
218 jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
221 - lf-infra-gerrit-scm:
222 jenkins-ssh-credential: "{jenkins-ssh-credential}"
224 refspec: "$GERRIT_REFSPEC"
225 branch: "$GERRIT_BRANCH"
226 submodule-disable: true
227 submodule-recursive: false
228 submodule-timeout: 10
229 choosing-strategy: default
233 server-name: "{gerrit-server-name}"
234 trigger-on: "{obj:gerrit_merge_triggers}"
236 - project-compare-type: "ANT"
237 project-pattern: "{project}"
239 - branch-compare-type: "ANT"
242 - compare-type: REG_EXP
243 pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
249 - lf_pypi_verify_wrappers: &lf_pypi_verify_wrappers
250 name: lf-pypi-verify-wrappers
254 build-timeout: "{build-timeout}"
255 jenkins-ssh-credential: "{jenkins-ssh-credential}"
257 - lf_pypi_release_wrappers: &lf_pypi_release_wrappers
258 name: lf-pypi-release-wrappers
262 build-timeout: "{build-timeout}"
263 jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
265 - lf_pypi_release: &lf_pypi_release
266 name: lf-pypi-release
268 ######################
269 # Default parameters #
270 ######################
272 branch: master # for github
273 build-days-to-keep: 7
276 gerrit-skip-vote: false
277 git-url: "$GIT_URL/$PROJECT"
278 github-url: "https://github.com"
280 pypi-stage-index: https://test.pypi.org/simple
281 submodule-disable: true
282 submodule-recursive: false
283 submodule-timeout: 10
284 use-release-file: true
286 # define once and use twice; jobs MUST NOT override
287 gerrit_release_trigger_file_paths:
288 - compare-type: REG_EXP
289 pattern: '(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)'
291 # yamllint disable-line rule:line-length
292 # github_release_included_regions MUST match gerrit_release_trigger_file_paths
293 github_release_included_regions:
294 - 'releases\/pypi.*\.yaml'
295 - '.releases\/pypi.*\.yaml'
298 - lf-infra-parameters:
300 branch: "$GERRIT_BRANCH"
301 stream: "$GERRIT_BRANCH"
302 # accept all entries defined in the release-yaml file
304 name: DISTRIBUTION_TYPE
306 description: "The Jenkins release job distribution type."
310 description: "The partial path of logs from the PyPI merge job."
314 description: "Tag to push to git repo; optional, defaults to VERSION."
318 description: "The PyPI project name."
322 description: "The Python compatibility version, example: 3.6"
326 description: "The module version, example: 1.0.0"
327 # special parameters for manual use of the Jenkins job
329 name: USE_RELEASE_FILE
331 description: "Set to False (unchecked) to build with parameters"
335 description: "Set to True (checked) to skip uploading artifacts"
339 - config-file-provider:
341 - file-id: sigul-config
342 variable: SIGUL_CONFIG
343 - file-id: sigul-password
344 variable: SIGUL_PASSWORD
347 - file-id: signing-pubkey
348 variable: SIGNING_PUBKEY
350 target: "$HOME/.pypirc"
351 - shell: !include-raw-escape: ../shell/sigul-configuration.sh
352 - shell: !include-raw-escape: ../shell/sigul-install.sh
354 properties-content: |
355 PYPI_INDEX={pypi-stage-index}
356 REPOSITORY={pypi-repo}
357 - shell: !include-raw-escape: ../shell/release-job.sh
360 name: "{project-name}-pypi-release-merge"
361 id: gerrit-pypi-release-merge
362 <<: *lf_release_common
363 <<: *lf_pypi_release_wrappers
367 - lf-infra-gerrit-scm:
368 jenkins-ssh-credential: "{jenkins-ssh-credential}"
370 refspec: "$GERRIT_REFSPEC"
371 branch: "$GERRIT_BRANCH"
372 submodule-recursive: "{submodule-recursive}"
373 submodule-timeout: "{submodule-timeout}"
374 submodule-disable: "{submodule-disable}"
375 choosing-strategy: gerrit
379 server-name: "{gerrit-server-name}"
381 - change-merged-event
382 - comment-added-contains-event:
383 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
385 - project-compare-type: "ANT"
386 project-pattern: "{project}"
388 - branch-compare-type: ANT
390 file-paths: "{obj:gerrit_release_trigger_file_paths}"
393 name: "{project-name}-pypi-release-merge"
394 id: github-pypi-release-merge
395 <<: *lf_release_common
396 <<: *lf_pypi_release_wrappers
401 url: "{github-url}/{github-org}/{project}"
404 - lf-infra-github-scm:
405 url: "{git-clone-url}{github-org}/{project}"
407 branch: "refs/heads/{branch}"
408 submodule-recursive: "{submodule-recursive}"
409 submodule-timeout: "{submodule-timeout}"
410 submodule-disable: "{submodule-disable}"
411 choosing-strategy: default
412 jenkins-ssh-credential: "{jenkins-ssh-credential}"
415 - github-pull-request:
416 trigger-phrase: "^(remerge)$"
417 only-trigger-phrase: false
418 status-context: "PyPI Release Merge"
421 white-list-target-branches:
423 included-regions: "{obj:github_release_included_regions}"
426 name: "{project-name}-pypi-release-verify"
427 id: gerrit-pypi-release-verify
428 <<: *lf_release_common
429 <<: *lf_pypi_verify_wrappers
433 - lf-infra-gerrit-scm:
434 jenkins-ssh-credential: "{jenkins-ssh-credential}"
436 refspec: "$GERRIT_REFSPEC"
437 branch: "$GERRIT_BRANCH"
438 submodule-recursive: "{submodule-recursive}"
439 submodule-timeout: "{submodule-timeout}"
440 submodule-disable: "{submodule-disable}"
441 choosing-strategy: gerrit
445 server-name: "{gerrit-server-name}"
447 - patchset-created-event:
449 exclude-trivial-rebase: false
450 exclude-no-code-change: false
451 - draft-published-event
452 - comment-added-contains-event:
453 # yamllint disable-line rule:line-length
454 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
456 - project-compare-type: "ANT"
457 project-pattern: "{project}"
459 - branch-compare-type: ANT
461 file-paths: "{obj:gerrit_release_trigger_file_paths}"
464 name: "{project-name}-pypi-release-verify"
465 id: github-pypi-release-verify
466 <<: *lf_release_common
467 <<: *lf_pypi_verify_wrappers
472 url: "{github-url}/{github-org}/{project}"
475 - lf-infra-github-scm:
476 url: "{git-clone-url}{github-org}/{project}"
478 branch: "refs/heads/{branch}"
479 submodule-recursive: "{submodule-recursive}"
480 submodule-timeout: "{submodule-timeout}"
481 submodule-disable: "{submodule-disable}"
482 choosing-strategy: default
483 jenkins-ssh-credential: "{jenkins-ssh-credential}"
486 - github-pull-request:
487 trigger-phrase: "^(recheck|reverify)$"
488 only-trigger-phrase: false
489 status-context: "PyPI Release Verify"
492 white-list-target-branches:
494 included-regions: "{obj:github_release_included_regions}"
496 ########################
497 # PackageCloud RELEASE #
498 ########################
500 - lf_packagecloud_release_common: &lf_packagecloud_release_common
501 name: lf-packagecloud-release-common
503 ######################
504 # Default parameters #
505 ######################
507 build-days-to-keep: 7
510 git-url: "$GIT_URL/$PROJECT"
511 gerrit-skip-vote: false
512 use-release-file: true
513 account-name: "{account-name}"
514 source-repo: "{source-repo}"
516 #####################
517 # Job Configuration #
518 #####################
520 disabled: "{disable-job}"
523 - lf-infra-parameters:
525 branch: "$GERRIT_BRANCH"
526 stream: "$GERRIT_BRANCH"
528 name: DISTRIBUTION_TYPE
529 default: "packagecloud"
530 description: "The Jenkins release job distribution type."
535 If DRY_RUN is enabled artifacts are not promoted.
537 name: USE_RELEASE_FILE
538 default: "{use-release-file}"
539 description: "Set to False for job built with parameters"
543 - config-file-provider:
545 - file-id: sigul-config
546 variable: SIGUL_CONFIG
547 - file-id: sigul-password
548 variable: SIGUL_PASSWORD
551 - file-id: signing-pubkey
552 variable: SIGNING_PUBKEY
553 - file-id: "packagecloud_api"
554 target: "$HOME/packagecloud_api"
555 - file-id: packagecloud-account
556 variable: ACCOUNT_NAME_FILE
557 - shell: !include-raw-escape: ../shell/sigul-configuration.sh
558 - shell: !include-raw-escape: ../shell/sigul-install.sh
562 name: "{project-name}-packagecloud-release-verify"
563 id: gerrit-packagecloud-release-verify
564 <<: *lf_release_common
565 <<: *lf_packagecloud_release_common
569 build-timeout: "{build-timeout}"
570 jenkins-ssh-credential: "{jenkins-ssh-credential}"
573 - lf-infra-gerrit-scm:
575 refspec: "$GERRIT_REFSPEC"
576 branch: "$GERRIT_BRANCH"
577 submodule-disable: true
578 submodule-recursive: false
579 submodule-timeout: 10
580 choosing-strategy: gerrit
581 jenkins-ssh-credential: "{jenkins-ssh-credential}"
585 server-name: "{gerrit-server-name}"
587 - patchset-created-event:
589 exclude-trivial-rebase: false
590 exclude-no-code-change: false
591 - draft-published-event
592 - comment-added-contains-event:
593 # yamllint disable-line rule:line-length
594 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
596 - project-compare-type: "ANT"
597 project-pattern: "{project}"
599 - branch-compare-type: "ANT"
602 - compare-type: REG_EXP
603 pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'
605 successful: "{gerrit-skip-vote}"
606 failed: "{gerrit-skip-vote}"
607 unstable: "{gerrit-skip-vote}"
608 notbuilt: "{gerrit-skip-vote}"
611 name: "{project-name}-packagecloud-release-merge"
612 id: gerrit-packagecloud-release-merge
613 <<: *lf_release_common
614 <<: *lf_packagecloud_release_common
618 build-timeout: "{build-timeout}"
619 jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
622 - lf-infra-gerrit-scm:
623 jenkins-ssh-credential: "{jenkins-ssh-credential}"
625 refspec: "$GERRIT_REFSPEC"
626 branch: "$GERRIT_BRANCH"
627 submodule-disable: true
628 submodule-recursive: false
629 submodule-timeout: 10
630 choosing-strategy: default
634 server-name: "{gerrit-server-name}"
636 - change-merged-event
637 - comment-added-contains-event:
638 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
640 - project-compare-type: "ANT"
641 project-pattern: "{project}"
643 - branch-compare-type: "ANT"
646 - compare-type: REG_EXP
647 pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'