Enable foreman verify job on stable/arno
[releng.git] / jjb / genesis / genesis-foreman.yml
1 ########################
2 # Job configuration for genesis/foreman
3 ########################
4 - project:
5
6     name: genesis-foreman
7
8     project: 'genesis'
9
10     installer: 'foreman'
11
12     jobs:
13         - 'genesis-foreman-verify-{stream}'
14         - 'genesis-foreman-merge'
15         - 'genesis-foreman-daily-master'
16         - 'genesis-foreman-build'
17         - 'genesis-foreman-deploy'
18
19     # stream:    branch with - in place of / (eg. stable-arno)
20     # branch:    branch (eg. stable/arno)
21     stream:
22         - master:
23             branch: 'master'
24         - stable-arno:
25             branch: 'stable/arno'
26
27 ########################
28 # job templates
29 ########################
30
31 - job-template:
32     name: 'genesis-foreman-verify-{stream}'
33
34     project-type: freestyle
35
36     node: ericsson-build
37
38     concurrent: true
39
40     properties:
41         - throttle:
42             enabled: true
43             max-total: 2
44
45     logrotate:
46         daysToKeep: 30
47         numToKeep: 10
48         artifactDaysToKeep: -1
49         artifactNumToKeep: -1
50
51     parameters:
52         - project-parameter:
53             project: '{project}'
54         - gerrit-parameter:
55             branch: '{branch}'
56         - foreman-parameter:
57             installer: '{installer}'
58
59     scm:
60         - gerrit-trigger-scm:
61             credentials-id: '{ssh-credentials}'
62             refspec: '$GERRIT_REFSPEC'
63             choosing-strategy: 'gerrit'
64
65     wrappers:
66         - ssh-agent-credentials:
67             user: '{ssh-credentials}'
68
69     triggers:
70         - gerrit:
71             trigger-on:
72                 - patchset-created-event:
73                     exclude-drafts: 'false'
74                     exclude-trivial-rebase: 'false'
75                     exclude-no-code-change: 'false'
76                 - draft-published-event
77                 - comment-added-contains-event:
78                     comment-contains-value: 'recheck'
79                 - comment-added-contains-event:
80                     comment-contains-value: 'reverify'
81             projects:
82               - project-compare-type: 'ANT'
83                 project-pattern: 'genesis'
84                 branches:
85                   - branch-compare-type: 'ANT'
86                     branch-pattern: '**/{branch}'
87                 file-paths:
88                   - compare-type: ANT
89                     pattern: 'common/**'
90                   - compare-type: ANT
91                     pattern: '{installer}/**'
92
93     builders:
94         - 'foreman-build'
95         - 'foreman-workspace-cleanup'
96
97 - job-template:
98     name: 'genesis-foreman-merge'
99
100     project-type: freestyle
101
102     node: ericsson-build
103
104     concurrent: true
105
106     properties:
107         - throttle:
108             enabled: true
109             max-total: 2
110
111     logrotate:
112         daysToKeep: 30
113         numToKeep: 40
114         artifactDaysToKeep: -1
115         artifactNumToKeep: 5
116
117     parameters:
118         - project-parameter:
119             project: '{project}'
120         - gerrit-parameter:
121             branch: 'master'
122         - foreman-parameter:
123             installer: '{installer}'
124
125     scm:
126         - gerrit-trigger-scm:
127             credentials-id: '{ssh-credentials}'
128             refspec: ''
129             choosing-strategy: 'default'
130
131     wrappers:
132         - ssh-agent-credentials:
133             user: '{ssh-credentials}'
134
135     triggers:
136         - gerrit:
137             trigger-on:
138                 - change-merged-event
139                 - comment-added-contains-event:
140                     comment-contains-value: 'remerge'
141             projects:
142               - project-compare-type: 'ANT'
143                 project-pattern: 'genesis'
144                 branches:
145                     - branch-compare-type: 'ANT'
146                       branch-pattern: '**/master'
147                 file-paths:
148                   - compare-type: ANT
149                     pattern: 'common/**'
150                   - compare-type: ANT
151                     pattern: '{installer}/**'
152
153     builders:
154         - 'foreman-build'
155         - 'foreman-workspace-cleanup'
156
157 - job-template:
158     name: 'genesis-foreman-daily-master'
159
160     project-type: freestyle
161
162     node: ericsson-build
163
164     disabled: false
165
166     parameters:
167         - project-parameter:
168             project: '{project}'
169         - foreman-parameter:
170             installer: '{installer}'
171
172     scm:
173         - git-scm:
174             credentials-id: '{ssh-credentials}'
175             refspec: ''
176             branch: master
177
178     logrotate:
179         daysToKeep: 30
180         numToKeep: 10
181         artifactDaysToKeep: -1
182         artifactNumToKeep: -1
183
184     builders:
185         - trigger-builds:
186           - project: 'genesis-foreman-build'
187             git-revision: true
188             block: true
189         - trigger-builds:
190           - project: 'genesis-foreman-deploy'
191             git-revision: true
192             block: true
193         - trigger-builds:
194           - project: 'functest-opnfv-jump-2'
195             block: true
196
197 - job-template:
198     name: 'genesis-foreman-build'
199
200     project-type: freestyle
201
202     node: ericsson-build
203
204     logrotate:
205         daysToKeep: 30
206         numToKeep: 10
207         artifactDaysToKeep: -1
208         artifactNumToKeep: -1
209
210     parameters:
211         - project-parameter:
212             project: '{project}'
213         - foreman-parameter:
214             installer: '{installer}'
215
216     scm:
217         - git-scm:
218             credentials-id: '{ssh-credentials}'
219             refspec: ''
220             branch: master
221
222     builders:
223         - 'foreman-build'
224         - 'foreman-upload-artifact'
225
226 - job-template:
227     name: 'genesis-foreman-deploy'
228
229     project-type: freestyle
230
231     disabled: false
232
233     node: opnfv-jump-2
234
235     logrotate:
236         daysToKeep: 30
237         numToKeep: 10
238         artifactDaysToKeep: -1
239         artifactNumToKeep: -1
240
241     parameters:
242         - project-parameter:
243             project: '{project}'
244         - foreman-parameter:
245             installer: '{installer}'
246         - string:
247             name: GIT_BASE
248             default: ssh://gerrit.opnfv.org:29418/$PROJECT
249             description: "Used for overriding the GIT URL coming from parameters macro."
250
251     scm:
252         - git-scm:
253             credentials-id: '{ssh-credentials}'
254             refspec: ''
255             branch: master
256
257     builders:
258         - 'foreman-deploy'
259
260 ########################
261 # parameter macros
262 ########################
263 - parameter:
264     name: foreman-parameter
265     parameters:
266         - string:
267             name: INSTALLER
268             default: '{installer}'
269             description: "Installer to use."
270         - string:
271             name: BUILD_DIRECTORY
272             default: $WORKSPACE/build_output
273             description: "Directory where the build artifact will be located upon the completion of the build."
274         - string:
275             name: CACHE_DIRECTORY
276             default: $HOME/opnfv/cache/genesis-$INSTALLER
277             description: "Directory where the cache to be used during the build is located."
278         - string:
279             name: GIT_BASE
280             default: https://gerrit.opnfv.org/gerrit/$PROJECT
281             description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
282         - string:
283             name: GS_URL
284             default: artifacts.opnfv.org/$PROJECT/$INSTALLER
285             description: "URL to Google Storage."
286
287 ########################
288 # builder macros
289 ########################
290 - builder:
291     name: 'foreman-build'
292     builders:
293         - shell: |
294             #!/bin/bash
295             set -o errexit
296             set -o nounset
297             set -o pipefail
298
299             # log info to console
300             echo "Starting the build of $INSTALLER. This could take some time..."
301             echo "--------------------------------------------------------"
302             echo
303
304             # create the cache directory if it doesn't exist
305             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
306
307             # set OPNFV_ARTIFACT_VERSION
308             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
309
310             # start the build
311             cd $WORKSPACE/$INSTALLER/ci
312             ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
313
314             # list the contents of BUILD_OUTPUT directory
315             ls -al $BUILD_DIRECTORY
316
317             # save information regarding artifact into file
318             (
319                 echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
320                 echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
321                 echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
322                 echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
323                 echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)"
324                 echo "OPNFV_BUILD_URL=$BUILD_URL"
325             ) > $WORKSPACE/opnfv.properties
326
327             echo
328             echo "--------------------------------------------------------"
329             echo "Done!"
330
331 - builder:
332     name: 'foreman-deploy'
333     builders:
334         - shell: |
335             #!/bin/bash
336             set -o errexit
337             set -o nounset
338             set -o pipefail
339
340             # log info to console
341             echo "Starting the deployment using $INSTALLER. This could take some time..."
342             echo "--------------------------------------------------------"
343             echo
344
345             # cleanup first
346             sudo $WORKSPACE/$INSTALLER/ci/clean.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
347
348             # and then initiate deployment
349             sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
350
351             echo
352             echo "--------------------------------------------------------"
353             echo "Done!"
354
355 - builder:
356     name: 'foreman-upload-artifact'
357     builders:
358         - shell: |
359             #!/bin/bash
360             set -o errexit
361             set -o nounset
362             set -o pipefail
363
364             # log info to console
365             echo "Uploading the $INSTALLER artifact. This could take some time..."
366             echo "--------------------------------------------------------"
367             echo
368
369             # source the opnfv.properties to get ARTIFACT_VERSION
370             source $WORKSPACE/opnfv.properties
371
372             # upload artifact and additional files to google storage
373             gsutil cp $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
374             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
375             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
376
377             echo
378             echo "--------------------------------------------------------"
379             echo "Done!"
380
381 - builder:
382     name: 'foreman-workspace-cleanup'
383     builders:
384         - shell: |
385             #!/bin/bash
386             set -o errexit
387             set -o nounset
388             set -o pipefail
389
390             # delete everything that is in $WORKSPACE
391             /bin/rm -rf $WORKSPACE
392