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