e1bf068471f02fa6d3c0e5273bff9369d7865680
[releng/global-jjb.git] / jjb / lf-release-jobs.yaml
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 ##############################################################################
9 ---
10 ####################
11 # COMMON FUNCTIONS #
12 ####################
13
14 - lf_release_common: &lf_release_common
15     name: lf-release-common
16
17     #####################
18     # Job Configuration #
19     #####################
20
21     project-type: freestyle
22     node: "{build-node}"
23
24     properties:
25       - lf-infra-properties:
26           build-days-to-keep: 7
27
28     publishers:
29       - lf-infra-publish
30
31 ##################
32 # RELEASE VERIFY #
33 ##################
34
35 - lf_release_verify: &lf_release_verify
36     name: lf-release-verify
37
38     ######################
39     # Default parameters #
40     ######################
41
42     build-days-to-keep: 7
43     build-timeout: 15
44     disable-job: false
45     git-url: "$GIT_URL/$PROJECT"
46     gerrit-skip-vote: false
47     use-release-file: true
48
49     gerrit_verify_triggers:
50       - patchset-created-event:
51           exclude-drafts: true
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*$'
58
59     github_included_regions:
60       - '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
61
62     #####################
63     # Job Configuration #
64     #####################
65
66     disabled: "{disable-job}"
67
68     parameters:
69       - lf-infra-parameters:
70           project: "{project}"
71           branch: "$GERRIT_BRANCH"
72           stream: "$GERRIT_BRANCH"
73       - lf-build-with-parameters-maven-release:
74           use-release-file: "{use-release-file}"
75
76     builders:
77       - lf-infra-pre-build
78       - conditional-step:
79           condition-kind: regex-match
80           regex: "^.*-docker-.*"
81           label: "{build-node}"
82           steps:
83             - lf-provide-maven-settings:
84                 global-settings-file: "global-settings"
85                 settings-file: "{mvn-settings}"
86             - shell: !include-raw-escape: ../shell/docker-login.sh
87             - lf-provide-maven-settings-cleanup
88       - config-file-provider:
89           files:
90             - file-id: sigul-config
91               variable: SIGUL_CONFIG
92             - file-id: sigul-password
93               variable: SIGUL_PASSWORD
94             - file-id: sigul-pki
95               variable: SIGUL_PKI
96             - file-id: signing-pubkey
97               variable: SIGNING_PUBKEY
98       - shell: !include-raw-escape: ../shell/sigul-configuration.sh
99       - shell: !include-raw-escape: ../shell/sigul-install.sh
100       - lf-release
101
102 - job-template:
103     name: "{project-name}-release-verify"
104     id: gerrit-release-verify
105     <<: *lf_release_common
106     # yamllint disable-line rule:key-duplicates
107     <<: *lf_release_verify
108
109     wrappers:
110       - lf-infra-wrappers:
111           build-timeout: "{build-timeout}"
112           jenkins-ssh-credential: "{jenkins-ssh-credential}"
113
114     scm:
115       - lf-infra-gerrit-scm:
116           git-url: "{git-url}"
117           refspec: "$GERRIT_REFSPEC"
118           branch: "$GERRIT_BRANCH"
119           submodule-disable: true
120           submodule-recursive: false
121           submodule-timeout: 10
122           choosing-strategy: gerrit
123           jenkins-ssh-credential: "{jenkins-ssh-credential}"
124
125     triggers:
126       - gerrit:
127           server-name: "{gerrit-server-name}"
128           trigger-on: "{obj:gerrit_verify_triggers}"
129           projects:
130             - project-compare-type: "ANT"
131               project-pattern: "{project}"
132               branches:
133                 - branch-compare-type: "ANT"
134                   branch-pattern: "**"
135               file-paths:
136                 - compare-type: REG_EXP
137                   pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
138           skip-vote:
139             successful: "{gerrit-skip-vote}"
140             failed: "{gerrit-skip-vote}"
141             unstable: "{gerrit-skip-vote}"
142             notbuilt: "{gerrit-skip-vote}"
143
144 - job-template:
145     name: "{project-name}-release-verify"
146     id: github-release-verify
147     <<: *lf_release_common
148     # yamllint disable-line rule:key-duplicates
149     <<: *lf_release_verify
150
151     properties:
152       - lf-infra-properties:
153           build-days-to-keep: "{build-days-to-keep}"
154       - github:
155           url: "{github-url}/{github-org}/{project}"
156
157     wrappers:
158       - lf-infra-wrappers:
159           build-timeout: "{build-timeout}"
160           jenkins-ssh-credential: "{jenkins-ssh-credential}"
161
162     scm:
163       - lf-infra-github-scm:
164           url: "{git-clone-url}{github-org}/{project}"
165           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
166           branch: "$sha1"
167           submodule-recursive: "{submodule-recursive}"
168           submodule-timeout: "{submodule-timeout}"
169           submodule-disable: "{submodule-disable}"
170           choosing-strategy: default
171           jenkins-ssh-credential: "{jenkins-ssh-credential}"
172
173     triggers:
174       - github-pull-request:
175           trigger-phrase: ^(recheck|reverify)$
176           only-trigger-phrase: false
177           status-context: "Github Release Verify"
178           permit-all: true
179           github-hooks: true
180           white-list-target-branches:
181             - "{branch}"
182           included-regions: "{obj:github_included_regions}"
183
184 #################
185 # RELEASE MERGE #
186 #################
187
188 - lf_release_merge: &lf_release_merge
189     name: lf-release-merge
190
191     ######################
192     # Default parameters #
193     ######################
194
195     build-days-to-keep: 7
196     build-timeout: 15
197     disable-job: false
198     git-url: "$GIT_URL/$PROJECT"
199     use-release-file: true
200
201     gerrit_merge_triggers:
202       - change-merged-event
203       - comment-added-contains-event:
204           comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
205
206     github_included_regions:
207       - '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
208
209     #####################
210     # Job Configuration #
211     #####################
212
213     disabled: "{disable-job}"
214
215     parameters:
216       - lf-infra-parameters:
217           project: "{project}"
218           branch: "$GERRIT_BRANCH"
219           stream: "$GERRIT_BRANCH"
220       - lf-build-with-parameters-maven-release:
221           use-release-file: "{use-release-file}"
222       - bool:
223           name: TAG_RELEASE
224           default: true
225           description: |
226             Tag Gerrit repo after release.
227       - bool:
228           name: DRY_RUN
229           default: false
230           description: |
231             If DRY_RUN is enabled artifacts are not published.
232
233     builders:
234       - lf-infra-pre-build
235       - conditional-step:
236           condition-kind: regex-match
237           regex: "^.*-docker-.*"
238           label: "{build-node}"
239           steps:
240             - lf-provide-maven-settings:
241                 global-settings-file: "global-settings"
242                 settings-file: "{mvn-settings}"
243             - shell: !include-raw-escape: ../shell/docker-login.sh
244             - lf-provide-maven-settings-cleanup
245       - config-file-provider:
246           files:
247             - file-id: sigul-config
248               variable: SIGUL_CONFIG
249             - file-id: sigul-password
250               variable: SIGUL_PASSWORD
251             - file-id: sigul-pki
252               variable: SIGUL_PKI
253             - file-id: signing-pubkey
254               variable: SIGNING_PUBKEY
255       - shell: !include-raw-escape: ../shell/sigul-configuration.sh
256       - shell: !include-raw-escape: ../shell/sigul-install.sh
257       - lf-release
258
259 - job-template:
260     name: "{project-name}-release-merge"
261     id: gerrit-release-merge
262     <<: *lf_release_common
263     # yamllint disable-line rule:key-duplicates
264     <<: *lf_release_merge
265
266     wrappers:
267       - lf-infra-wrappers:
268           build-timeout: "{build-timeout}"
269           jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
270
271     scm:
272       - lf-infra-gerrit-scm:
273           jenkins-ssh-credential: "{jenkins-ssh-credential}"
274           git-url: "{git-url}"
275           refspec: "$GERRIT_REFSPEC"
276           branch: "$GERRIT_BRANCH"
277           submodule-disable: true
278           submodule-recursive: false
279           submodule-timeout: 10
280           # release merge jobs build from commit not tip
281           choosing-strategy: gerrit
282
283     triggers:
284       - gerrit:
285           server-name: "{gerrit-server-name}"
286           trigger-on: "{obj:gerrit_merge_triggers}"
287           projects:
288             - project-compare-type: "ANT"
289               project-pattern: "{project}"
290               branches:
291                 - branch-compare-type: "ANT"
292                   branch-pattern: "**"
293               file-paths:
294                 - compare-type: REG_EXP
295                   pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
296
297 - job-template:
298     name: "{project-name}-release-merge"
299     id: github-release-merge
300     <<: *lf_release_common
301     # yamllint disable-line rule:key-duplicates
302     <<: *lf_release_merge
303
304     properties:
305       - lf-infra-properties:
306           build-days-to-keep: "{build-days-to-keep}"
307       - github:
308           url: "{github-url}/{github-org}/{project}"
309
310     wrappers:
311       - lf-infra-wrappers:
312           build-timeout: "{build-timeout}"
313           jenkins-ssh-credential: "{jenkins-ssh-credential}"
314
315     scm:
316       - lf-infra-github-scm:
317           url: "{git-clone-url}{github-org}/{project}"
318           refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
319           branch: "$sha1"
320           submodule-recursive: "{submodule-recursive}"
321           submodule-timeout: "{submodule-timeout}"
322           submodule-disable: "{submodule-disable}"
323           choosing-strategy: default
324           jenkins-ssh-credential: "{jenkins-ssh-credential}"
325
326     triggers:
327       - github-pull-request:
328           trigger-phrase: "^remerge$"
329           only-trigger-phrase: true
330           status-context: "Github Release Merge"
331           permit-all: true
332           github-hooks: true
333           white-list-target-branches:
334             - "{branch}"
335           included-regions: "{obj:github_included_regions}"
336
337 ################
338 # PyPI RELEASE #
339 ################
340
341 - lf_pypi_verify_wrappers: &lf_pypi_verify_wrappers
342     name: lf-pypi-verify-wrappers
343
344     wrappers:
345       - lf-infra-wrappers:
346           build-timeout: "{build-timeout}"
347           jenkins-ssh-credential: "{jenkins-ssh-credential}"
348
349 - lf_pypi_release_wrappers: &lf_pypi_release_wrappers
350     name: lf-pypi-release-wrappers
351
352     wrappers:
353       - lf-infra-wrappers:
354           build-timeout: "{build-timeout}"
355           jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
356
357 - lf_pypi_release: &lf_pypi_release
358     name: lf-pypi-release
359
360     ######################
361     # Default parameters #
362     ######################
363
364     branch: master # for github
365     build-days-to-keep: 7
366     build-timeout: 15
367     disable-job: false
368     gerrit-skip-vote: false
369     git-url: "$GIT_URL/$PROJECT"
370     github-url: "https://github.com"
371     pypi-repo: pypi
372     pypi-stage-index: https://test.pypi.org/simple
373     submodule-disable: true
374     submodule-recursive: false
375     submodule-timeout: 10
376     use-release-file: true
377
378     # define once and use twice; jobs MUST NOT override
379     gerrit_release_trigger_file_paths:
380       - compare-type: REG_EXP
381         pattern: '(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)'
382
383     # yamllint disable-line rule:line-length
384     # github_release_included_regions MUST match gerrit_release_trigger_file_paths
385     github_release_included_regions:
386       - 'releases\/pypi.*\.yaml'
387       - '.releases\/pypi.*\.yaml'
388
389     parameters:
390       - lf-infra-parameters:
391           project: "{project}"
392           branch: "$GERRIT_BRANCH"
393           stream: "$GERRIT_BRANCH"
394       # accept all entries defined in the release-yaml file
395       - string:
396           name: DISTRIBUTION_TYPE
397           default: "pypi"
398           description: "The Jenkins release job distribution type."
399       - string:
400           name: LOG_DIR
401           default: ""
402           description: "The partial path of logs from the PyPI merge job."
403       - string:
404           name: GIT_TAG
405           default: ""
406           description: "Tag to push to git repo; optional, defaults to VERSION."
407       - string:
408           name: PYPI_PROJECT
409           default: ""
410           description: "The PyPI project name."
411       - string:
412           name: PYTHON_VERSION
413           default: ""
414           description: "The Python compatibility version, example: 3.6"
415       - string:
416           name: VERSION
417           default: ""
418           description: "The module version, example: 1.0.0"
419       # special parameters for manual use of the Jenkins job
420       - bool:
421           name: USE_RELEASE_FILE
422           default: true
423           description: "Set to False (unchecked) to build with parameters"
424       - bool:
425           name: TAG_RELEASE
426           default: true
427           description: |
428             Tag Gerrit repo after release.
429       - bool:
430           name: DRY_RUN
431           default: false
432           description: "Set to True (checked) to skip uploading artifacts"
433
434     builders:
435       - lf-infra-pre-build
436       - config-file-provider:
437           files:
438             - file-id: sigul-config
439               variable: SIGUL_CONFIG
440             - file-id: sigul-password
441               variable: SIGUL_PASSWORD
442             - file-id: sigul-pki
443               variable: SIGUL_PKI
444             - file-id: signing-pubkey
445               variable: SIGNING_PUBKEY
446             - file-id: pypirc
447               target: "$HOME/.pypirc"
448       - shell: !include-raw-escape: ../shell/sigul-configuration.sh
449       - shell: !include-raw-escape: ../shell/sigul-install.sh
450       - inject:
451           properties-content: |
452             PYPI_INDEX={pypi-stage-index}
453             REPOSITORY={pypi-repo}
454       - shell: !include-raw-escape: ../shell/release-job.sh
455
456 - job-template:
457     name: "{project-name}-pypi-release-merge"
458     id: gerrit-pypi-release-merge
459     <<: *lf_release_common
460     <<: *lf_pypi_release_wrappers
461     <<: *lf_pypi_release
462
463     scm:
464       - lf-infra-gerrit-scm:
465           jenkins-ssh-credential: "{jenkins-ssh-credential}"
466           git-url: "{git-url}"
467           refspec: "$GERRIT_REFSPEC"
468           branch: "$GERRIT_BRANCH"
469           submodule-recursive: "{submodule-recursive}"
470           submodule-timeout: "{submodule-timeout}"
471           submodule-disable: "{submodule-disable}"
472           # release merge jobs build from commit not tip
473           choosing-strategy: gerrit
474
475     triggers:
476       - gerrit:
477           server-name: "{gerrit-server-name}"
478           trigger-on:
479             - change-merged-event
480             - comment-added-contains-event:
481                 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
482           projects:
483             - project-compare-type: "ANT"
484               project-pattern: "{project}"
485               branches:
486                 - branch-compare-type: ANT
487                   branch-pattern: "**"
488               file-paths: "{obj:gerrit_release_trigger_file_paths}"
489
490 - job-template:
491     name: "{project-name}-pypi-release-merge"
492     id: github-pypi-release-merge
493     <<: *lf_release_common
494     <<: *lf_pypi_release_wrappers
495     <<: *lf_pypi_release
496
497     properties:
498       - github:
499           url: "{github-url}/{github-org}/{project}"
500
501     scm:
502       - lf-infra-github-scm:
503           url: "{git-clone-url}{github-org}/{project}"
504           refspec: ""
505           branch: "refs/heads/{branch}"
506           submodule-recursive: "{submodule-recursive}"
507           submodule-timeout: "{submodule-timeout}"
508           submodule-disable: "{submodule-disable}"
509           choosing-strategy: default
510           jenkins-ssh-credential: "{jenkins-ssh-credential}"
511
512     triggers:
513       - github-pull-request:
514           trigger-phrase: "^(remerge)$"
515           only-trigger-phrase: false
516           status-context: "PyPI Release Merge"
517           permit-all: true
518           github-hooks: true
519           white-list-target-branches:
520             - "{branch}"
521           included-regions: "{obj:github_release_included_regions}"
522
523 - job-template:
524     name: "{project-name}-pypi-release-verify"
525     id: gerrit-pypi-release-verify
526     <<: *lf_release_common
527     <<: *lf_pypi_verify_wrappers
528     <<: *lf_pypi_release
529
530     scm:
531       - lf-infra-gerrit-scm:
532           jenkins-ssh-credential: "{jenkins-ssh-credential}"
533           git-url: "{git-url}"
534           refspec: "$GERRIT_REFSPEC"
535           branch: "$GERRIT_BRANCH"
536           submodule-recursive: "{submodule-recursive}"
537           submodule-timeout: "{submodule-timeout}"
538           submodule-disable: "{submodule-disable}"
539           choosing-strategy: gerrit
540
541     triggers:
542       - gerrit:
543           server-name: "{gerrit-server-name}"
544           trigger-on:
545             - patchset-created-event:
546                 exclude-drafts: true
547                 exclude-trivial-rebase: false
548                 exclude-no-code-change: false
549             - draft-published-event
550             - comment-added-contains-event:
551                 # yamllint disable-line rule:line-length
552                 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
553           projects:
554             - project-compare-type: "ANT"
555               project-pattern: "{project}"
556               branches:
557                 - branch-compare-type: ANT
558                   branch-pattern: "**"
559               file-paths: "{obj:gerrit_release_trigger_file_paths}"
560
561 - job-template:
562     name: "{project-name}-pypi-release-verify"
563     id: github-pypi-release-verify
564     <<: *lf_release_common
565     <<: *lf_pypi_verify_wrappers
566     <<: *lf_pypi_release
567
568     properties:
569       - github:
570           url: "{github-url}/{github-org}/{project}"
571
572     scm:
573       - lf-infra-github-scm:
574           url: "{git-clone-url}{github-org}/{project}"
575           refspec: ""
576           branch: "refs/heads/{branch}"
577           submodule-recursive: "{submodule-recursive}"
578           submodule-timeout: "{submodule-timeout}"
579           submodule-disable: "{submodule-disable}"
580           choosing-strategy: default
581           jenkins-ssh-credential: "{jenkins-ssh-credential}"
582
583     triggers:
584       - github-pull-request:
585           trigger-phrase: "^(recheck|reverify)$"
586           only-trigger-phrase: false
587           status-context: "PyPI Release Verify"
588           permit-all: true
589           github-hooks: true
590           white-list-target-branches:
591             - "{branch}"
592           included-regions: "{obj:github_release_included_regions}"
593
594 ########################
595 # PackageCloud RELEASE #
596 ########################
597
598 - lf_packagecloud_release_common: &lf_packagecloud_release_common
599     name: lf-packagecloud-release-common
600
601     ######################
602     # Default parameters #
603     ######################
604
605     build-days-to-keep: 7
606     build-timeout: 15
607     disable-job: false
608     git-url: "$GIT_URL/$PROJECT"
609     gerrit-skip-vote: false
610     use-release-file: true
611     account-name: "{account-name}"
612     source-repo: "{source-repo}"
613
614     #####################
615     # Job Configuration #
616     #####################
617
618     disabled: "{disable-job}"
619
620     parameters:
621       - lf-infra-parameters:
622           project: "{project}"
623           branch: "$GERRIT_BRANCH"
624           stream: "$GERRIT_BRANCH"
625       - string:
626           name: DISTRIBUTION_TYPE
627           default: "packagecloud"
628           description: "The Jenkins release job distribution type."
629       - bool:
630           name: TAG_RELEASE
631           default: true
632           description: |
633             Tag Gerrit repo after release.
634       - bool:
635           name: DRY_RUN
636           default: false
637           description: |
638             If DRY_RUN is enabled artifacts are not promoted.
639       - bool:
640           name: USE_RELEASE_FILE
641           default: "{use-release-file}"
642           description: "Set to False for job built with parameters"
643
644     builders:
645       - lf-infra-pre-build
646       - config-file-provider:
647           files:
648             - file-id: sigul-config
649               variable: SIGUL_CONFIG
650             - file-id: sigul-password
651               variable: SIGUL_PASSWORD
652             - file-id: sigul-pki
653               variable: SIGUL_PKI
654             - file-id: signing-pubkey
655               variable: SIGNING_PUBKEY
656             - file-id: "packagecloud_api"
657               target: "$HOME/packagecloud_api"
658             - file-id: packagecloud-account
659               variable: ACCOUNT_NAME_FILE
660       - shell: !include-raw-escape: ../shell/sigul-configuration.sh
661       - shell: !include-raw-escape: ../shell/sigul-install.sh
662       - lf-release
663
664 - job-template:
665     name: "{project-name}-packagecloud-release-verify"
666     id: gerrit-packagecloud-release-verify
667     <<: *lf_release_common
668     <<: *lf_packagecloud_release_common
669
670     wrappers:
671       - lf-infra-wrappers:
672           build-timeout: "{build-timeout}"
673           jenkins-ssh-credential: "{jenkins-ssh-credential}"
674
675     scm:
676       - lf-infra-gerrit-scm:
677           git-url: "{git-url}"
678           refspec: "$GERRIT_REFSPEC"
679           branch: "$GERRIT_BRANCH"
680           submodule-disable: true
681           submodule-recursive: false
682           submodule-timeout: 10
683           choosing-strategy: gerrit
684           jenkins-ssh-credential: "{jenkins-ssh-credential}"
685
686     triggers:
687       - gerrit:
688           server-name: "{gerrit-server-name}"
689           trigger-on:
690             - patchset-created-event:
691                 exclude-drafts: true
692                 exclude-trivial-rebase: false
693                 exclude-no-code-change: false
694             - draft-published-event
695             - comment-added-contains-event:
696                 # yamllint disable-line rule:line-length
697                 comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
698           projects:
699             - project-compare-type: "ANT"
700               project-pattern: "{project}"
701               branches:
702                 - branch-compare-type: "ANT"
703                   branch-pattern: "**"
704               file-paths:
705                 - compare-type: REG_EXP
706                   pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'
707           skip-vote:
708             successful: "{gerrit-skip-vote}"
709             failed: "{gerrit-skip-vote}"
710             unstable: "{gerrit-skip-vote}"
711             notbuilt: "{gerrit-skip-vote}"
712
713 - job-template:
714     name: "{project-name}-packagecloud-release-merge"
715     id: gerrit-packagecloud-release-merge
716     <<: *lf_release_common
717     <<: *lf_packagecloud_release_common
718
719     wrappers:
720       - lf-infra-wrappers:
721           build-timeout: "{build-timeout}"
722           jenkins-ssh-credential: "{jenkins-ssh-release-credential}"
723
724     scm:
725       - lf-infra-gerrit-scm:
726           jenkins-ssh-credential: "{jenkins-ssh-credential}"
727           git-url: "{git-url}"
728           refspec: "$GERRIT_REFSPEC"
729           branch: "$GERRIT_BRANCH"
730           submodule-disable: true
731           submodule-recursive: false
732           submodule-timeout: 10
733           # release merge jobs build from commit not tip
734           choosing-strategy: gerrit
735
736     triggers:
737       - gerrit:
738           server-name: "{gerrit-server-name}"
739           trigger-on:
740             - change-merged-event
741             - comment-added-contains-event:
742                 comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
743           projects:
744             - project-compare-type: "ANT"
745               project-pattern: "{project}"
746               branches:
747                 - branch-compare-type: "ANT"
748                   branch-pattern: "**"
749               file-paths:
750                 - compare-type: REG_EXP
751                   pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'