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