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