Automate Artifact release
[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_releases_common: &lf_releases_common
15     name: lf-releases-common
16
17     ######################
18     # Default parameters #
19     ######################
20
21     gerrit_trigger_file_paths:
22       - compare-type: ANT
23         pattern: 'releases/*.yaml'
24
25     #####################
26     # Job Configuration #
27     #####################
28
29     project-type: freestyle
30     node: '{build-node}'
31
32     properties:
33       - lf-infra-properties:
34           build-days-to-keep: 7
35
36     parameters:
37       - lf-infra-parameters:
38           project: '{project}'
39           branch: 'master'
40           stream: '{stream}'
41
42     wrappers:
43       - lf-infra-wrappers:
44           build-timeout: '{build-timeout}'
45           jenkins-ssh-credential: '{jenkins-ssh-credential}'
46
47     publishers:
48       - lf-infra-publish
49
50 ##################
51 # RELEASE VERIFY #
52 ##################
53
54 - lf_releases_verify: &lf_releases_verify
55     name: lf-releases-verify
56
57     ######################
58     # Default parameters #
59     ######################
60
61     branch: master
62     stream: master
63     build-days-to-keep: 7
64     build-timeout: 15
65     disable-job: false
66     git-url: '$GIT_URL/$PROJECT'
67     project-pattern: '**'
68     submodule-recursive: true
69     submodule-timeout: 10
70     gerrit-skip-vote: false
71
72     gerrit_verify_triggers:
73       - patchset-created-event:
74           exclude-drafts: true
75           exclude-trivial-rebase: false
76           exclude-no-code-change: false
77       - draft-published-event
78       - comment-added-contains-event:
79           comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
80
81
82     #####################
83     # Job Configuration #
84     #####################
85
86     disabled: '{disable-job}'
87
88     builders:
89       - lf-infra-pre-build
90       - config-file-provider:
91           files:
92             - file-id: sigul-config
93               variable: SIGUL_CONFIG
94             - file-id: sigul-password
95               variable: SIGUL_PASSWORD
96             - file-id: sigul-pki
97               variable: SIGUL_PKI
98       - shell: !include-raw-escape: ../shell/sigul-configuration.sh
99       - shell: !include-raw-escape: ../shell/sigul-install.sh
100       - lf-releases
101
102 - job-template:
103     name: '{project-name}-releases-verify'
104     id: gerrit-releases-verify
105     <<: *lf_releases_common
106     # yamllint disable-line rule:key-duplicates
107     <<: *lf_releases_verify
108
109     scm:
110       - lf-infra-gerrit-scm:
111           git-url: '{git-url}'
112           refspec: '$GERRIT_REFSPEC'
113           branch: 'master'
114           submodule-recursive: '{submodule-recursive}'
115           submodule-timeout: '{submodule-timeout}'
116           choosing-strategy: gerrit
117           jenkins-ssh-credential: '{jenkins-ssh-credential}'
118
119     triggers:
120       - gerrit:
121           server-name: '{gerrit-server-name}'
122           trigger-on: '{obj:gerrit_verify_triggers}'
123           projects:
124             - project-compare-type: 'ANT'
125               project-pattern: '{project-pattern}'
126               branches:
127                 - branch-compare-type: 'ANT'
128                   branch-pattern: '**/master'
129               file-paths: '{obj:gerrit_trigger_file_paths}'
130           skip-vote:
131             successful: '{gerrit-skip-vote}'
132             failed: '{gerrit-skip-vote}'
133             unstable: '{gerrit-skip-vote}'
134             notbuilt: '{gerrit-skip-vote}'
135
136
137 #################
138 # RELEASE MERGE #
139 #################
140
141 - lf_releases_merge: &lf_releases_merge
142     name: lf-releases-merge
143
144     ######################
145     # Default parameters #
146     ######################
147
148     branch: master
149     stream: master
150     build-days-to-keep: 7
151     build-timeout: 15
152     disable-job: false
153     project-pattern: '**'
154     submodule-recursive: true
155
156     gerrit_merge_triggers:
157       - change-merged-event
158       - comment-added-contains-event:
159           comment-contains-value: remerge$
160
161     #####################
162     # Job Configuration #
163     #####################
164
165     disabled: '{disable-job}'
166
167     builders:
168       - lf-infra-pre-build
169       - config-file-provider:
170           files:
171             - file-id: sigul-config
172               variable: SIGUL_CONFIG
173             - file-id: sigul-password
174               variable: SIGUL_PASSWORD
175             - file-id: sigul-pki
176               variable: SIGUL_PKI
177       - shell: !include-raw-escape: ../shell/sigul-configuration.sh
178       - shell: !include-raw-escape: ../shell/sigul-install.sh
179       - lf-releases
180
181 - job-template:
182     name: '{project-name}-releases-merge'
183     id: gerrit-releases-merge
184     <<: *lf_releases_common
185     # yamllint disable-line rule:key-duplicates
186     <<: *lf_releases_merge
187
188     triggers:
189       - gerrit:
190           server-name: '{gerrit-server-name}'
191           trigger-on: '{obj:gerrit_merge_triggers}'
192           projects:
193             - project-compare-type: 'ANT'
194               project-pattern: '{project-pattern}'
195               branches:
196                 - branch-compare-type: 'ANT'
197                   branch-pattern: '**/master'
198               file-paths: '{obj:gerrit_trigger_file_paths}'