97a70138c55f02840b40365424d332d719790c7e
[releng.git] / jjb / apex / apex.yml
1 - project:
2     name: apex
3     jobs:
4         - 'apex-verify-{stream}'
5         - 'apex-merge-{stream}'
6         - 'apex-build-{stream}'
7         - 'apex-deploy-virtual-{stream}'
8         - 'apex-deploy-baremetal-{stream}'
9         - 'apex-daily-{stream}'
10
11     # stream:    branch with - in place of / (eg. stable-arno)
12     # branch:    branch (eg. stable/arno)
13     stream:
14         - master:
15             branch: 'master'
16             gs-pathname: ''
17
18     project: 'apex'
19
20 - job-template:
21     name: 'apex-verify-{stream}'
22
23     node: intel-us-deploy-virtual-2
24
25     parameters:
26         - apex-parameter:
27             gs-pathname: '{gs-pathname}'
28         - project-parameter:
29             project: '{project}'
30         - gerrit-parameter:
31             branch: '{branch}'
32         - string:
33             name: GIT_BASE
34             default: https://gerrit.opnfv.org/gerrit/$PROJECT
35             description: "Used for overriding the GIT URL coming from parameters macro."
36
37     scm:
38         - gerrit-trigger-scm:
39             credentials-id: '{ssh-credentials}'
40             refspec: '$GERRIT_REFSPEC'
41             choosing-strategy: 'gerrit'
42
43     triggers:
44         - gerrit:
45             trigger-on:
46                 - patchset-created-event:
47                     exclude-drafts: 'false'
48                     exclude-trivial-rebase: 'false'
49                     exclude-no-code-change: 'false'
50                 - draft-published-event
51                 - comment-added-contains-event:
52                     comment-contains-value: 'recheck'
53                 - comment-added-contains-event:
54                     comment-contains-value: 'reverify'
55             projects:
56               - project-compare-type: 'ANT'
57                 project-pattern: 'apex'
58                 branches:
59                   - branch-compare-type: 'ANT'
60                     branch-pattern: '**/master'
61                 forbidden-file-paths:
62                   - compare-type: ANT
63                     pattern: 'docs/**'
64
65     properties:
66         - build-blocker:
67             use-build-blocker: true
68             blocking-jobs:
69                 - "apex-daily.*"
70
71     builders:
72         - 'apex-build'
73         - 'apex-deploy-virtual'
74         - 'apex-workspace-cleanup'
75
76 - job-template:
77     name: 'apex-merge-{stream}'
78
79     # builder-merge job to run JJB update
80     #
81     # This job's purpose is to update all the JJB
82
83     node: intel-us-deploy-virtual-2
84
85     disabled: true
86
87     parameters:
88         - apex-parameter:
89             gs-pathname: '{gs-pathname}'
90         - project-parameter:
91             project: '{project}'
92         - gerrit-parameter:
93             branch: '{branch}'
94         - string:
95             name: GIT_BASE
96             default: https://gerrit.opnfv.org/gerrit/$PROJECT
97             description: "Used for overriding the GIT URL coming from parameters macro."
98
99     scm:
100         - gerrit-trigger-scm:
101             credentials-id: '{ssh-credentials}'
102             refspec: ''
103             choosing-strategy: 'default'
104
105     triggers:
106         - gerrit:
107             trigger-on:
108                 - change-merged-event
109                 - comment-added-contains-event:
110                     comment-contains-value: 'remerge'
111             projects:
112               - project-compare-type: 'ANT'
113                 project-pattern: 'apex'
114                 branches:
115                     - branch-compare-type: 'ANT'
116                       branch-pattern: '**/master'
117                 forbidden-file-paths:
118                   - compare-type: ANT
119                     pattern: 'docs/**'
120
121     builders:
122         - 'apex-build'
123         - 'apex-deploy-virtual'
124         - 'apex-workspace-cleanup'
125
126 - job-template:
127     name: 'apex-build-{stream}'
128
129     # Job template for builds
130     #
131     # Required Variables:
132     #     stream:    branch with - in place of / (eg. stable)
133     #     branch:    branch (eg. stable)
134     node: intel-us-deploy-virtual-2
135
136     disabled: false
137
138     parameters:
139         - project-parameter:
140             project: '{project}'
141         - apex-parameter:
142             gs-pathname: '{gs-pathname}'
143         - gerrit-parameter:
144             branch: '{branch}'
145         - string:
146             name: GIT_BASE
147             default: https://gerrit.opnfv.org/gerrit/$PROJECT
148             description: "Used for overriding the GIT URL coming from parameters macro."
149
150     scm:
151         - git-scm:
152             credentials-id: '{ssh-credentials}'
153             refspec: ''
154             branch: '{branch}'
155
156     builders:
157         - 'apex-build'
158         - 'apex-deploy-virtual'
159         - 'apex-upload-artifact'
160         - 'apex-workspace-cleanup'
161
162 - job-template:
163     name: 'apex-deploy-virtual-{stream}'
164
165     # Job template for virtual deployment
166     #
167     # Required Variables:
168     #     stream:    branch with - in place of / (eg. stable)
169     #     branch:    branch (eg. stable)
170     node: intel-us-deploy-virtual-2
171
172     disabled: false
173
174     scm:
175         - git-scm:
176             credentials-id: '{ssh-credentials}'
177             refspec: ''
178             branch: '{branch}'
179
180     parameters:
181         - project-parameter:
182             project: '{project}'
183         - apex-parameter:
184             gs-pathname: '{gs-pathname}'
185
186     builders:
187         - 'apex-deploy-virtual'
188         - 'apex-workspace-cleanup'
189
190 - job-template:
191     name: 'apex-deploy-baremetal-{stream}'
192
193     # Job template for baremetal deployment
194     #
195     # Required Variables:
196     #     stream:    branch with - in place of / (eg. stable)
197     #     branch:    branch (eg. stable)
198     node: opnfv-jump-1
199
200     disabled: false
201
202     scm:
203         - git-scm:
204             credentials-id: '{ssh-credentials}'
205             refspec: ''
206             branch: '{branch}'
207
208     parameters:
209         - project-parameter:
210             project: '{project}'
211         - apex-parameter:
212             gs-pathname: '{gs-pathname}'
213
214     builders:
215         - 'apex-deploy-baremetal'
216         - 'apex-workspace-cleanup'
217
218 - job-template:
219     name: 'apex-daily-{stream}'
220
221     # Job template for daily build
222     #
223     # Required Variables:
224     #     stream:    branch with - in place of / (eg. stable)
225     #     branch:    branch (eg. stable)
226     node: intel-us-deploy-virtual-2
227
228     disabled: false
229
230     scm:
231         - git-scm:
232             credentials-id: '{ssh-credentials}'
233             refspec: ''
234             branch: '{branch}'
235
236     parameters:
237         - project-parameter:
238             project: '{project}'
239         - apex-parameter:
240             gs-pathname: '{gs-pathname}'
241
242     properties:
243         - build-blocker:
244             use-build-blocker: true
245             blocking-jobs:
246                 - "apex-daily.*"
247
248     triggers:
249         - 'apex-{stream}'
250
251     builders:
252         - trigger-builds:
253           - project: 'apex-build-{stream}'
254             git-revision: true
255             block: true
256         - trigger-builds:
257           - project: 'apex-deploy-virtual-{stream}'
258             git-revision: true
259             block: true
260         - trigger-builds:
261           - project: 'apex-deploy-baremetal-{stream}'
262         - trigger-builds:
263           - project: 'functest-apex-intel-us-deploy-virtual-2-daily-{stream}'
264             block: true
265             block-thresholds:
266                 build-step-failure-threshold: 'never'
267                 failure-threshold: 'never'
268                 unstable-threshold: 'FAILURE'
269
270 ########################
271 # parameter macros
272 ########################
273 - parameter:
274     name: apex-parameter
275     parameters:
276         - string:
277             name: ARTIFACT_NAME
278             default: 'latest'
279             description: "RPM Artifact name that will be appended to GS_URL to deploy a specific artifact"
280         - string:
281             name: BUILD_DIRECTORY
282             default: $WORKSPACE/build_output
283             description: "Directory where the build artifact will be located upon the completion of the build."
284         - string:
285             name: CACHE_DIRECTORY
286             default: $HOME/opnfv/cache/{gs-pathname}
287             description: "Directory where the cache to be used during the build is located."
288         - string:
289             name: GIT_BASE
290             default: https://gerrit.opnfv.org/gerrit/$PROJECT
291             description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
292         - string:
293             name: GS_URL
294             default: artifacts.opnfv.org/$PROJECT/{gs-pathname}
295             description: "URL to Google Storage."
296
297 ########################
298 # builder macros
299 ########################
300 - builder:
301     name: 'apex-build'
302     builders:
303         - shell: |
304             #!/bin/bash
305             set -o errexit
306             set -o nounset
307             set -o pipefail
308             # log info to console
309             echo "Starting the build of Apex using OpenStack Master packages. This will take some time..."
310             echo "---------------------------------------------------------------------------------------"
311             echo
312             # create the cache directory if it doesn't exist
313             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
314             # set OPNFV_ARTIFACT_VERSION
315             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
316             # start the build
317             cd $WORKSPACE/ci
318             ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
319             RPM_VERSION=$(grep Version $BUILD_DIRECTORY/../build/opnfv-apex.spec | awk '{ print $2 }')-$(echo $OPNFV_ARTIFACT_VERSION | tr -d '_-')
320             # list the contents of BUILD_OUTPUT directory
321             ls -al $BUILD_DIRECTORY
322             # save information regarding artifact into file
323             (
324                 echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
325                 echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
326                 echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
327                 echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
328                 echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)"
329                 echo "OPNFV_SRPM_URL=$GS_URL/opnfv-apex-$RPM_VERSION.src.rpm"
330                 echo "OPNFV_RPM_URL=$GS_URL/opnfv-apex-$RPM_VERSION.noarch.rpm"
331                 echo "OPNFV_RPM_MD5SUM=$(md5sum $BUILD_DIRECTORY/opnfv-apex-$RPM_VERSION.noarch.rpm | cut -d' ' -f1)"
332                 echo "OPNFV_BUILD_URL=$BUILD_URL"
333             ) > $WORKSPACE/opnfv.properties
334             echo
335             echo "--------------------------------------------------------"
336
337 - builder:
338     name: 'apex-workspace-cleanup'
339     builders:
340         - shell: |
341             #!/bin/bash
342             set -o errexit
343             set -o nounset
344             set -o pipefail
345
346             # delete everything that is in $WORKSPACE
347             /bin/rm -rf $WORKSPACE
348
349 - builder:
350     name: 'apex-upload-artifact'
351     builders:
352         - shell: |
353             #!/bin/bash
354             set -o errexit
355             set -o nounset
356             set -o pipefail
357
358             # log info to console
359             echo "Uploading the Apex artifact. This could take some time..."
360             echo "--------------------------------------------------------"
361             echo
362
363             # source the opnfv.properties to get ARTIFACT_VERSION
364             source $WORKSPACE/opnfv.properties
365
366             # upload artifact and additional files to google storage
367             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
368             gsutil cp $BUILD_DIRECTORY/$(basename $OPNFV_RPM_URL) gs://$GS_URL/$(basename $OPNFV_RPM_URL) > gsutil.iso.log 2>&1
369             gsutil cp $BUILD_DIRECTORY/$(basename $OPNFV_SRPM_URL) gs://$GS_URL/$(basename $OPNFV_SRPM_URL) > gsutil.iso.log 2>&1
370             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
371             gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
372
373             echo
374             echo "--------------------------------------------------------"
375             echo "Done!"
376             echo "ISO Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
377             echo "RPM Artifact is available as http://$GS_URL/$(basename $OPNFV_RPM_URL)"
378
379 - builder:
380     name: 'apex-deploy-virtual'
381     builders:
382         - shell: |
383             #!/bin/bash
384             set -o errexit
385             set -o nounset
386             set -o pipefail
387
388             # log info to console
389             echo "Starting the Apex virtual deployment."
390             echo "--------------------------------------------------------"
391             echo
392
393             if [[ ! "$ARTIFACT_NAME" == "latest" ]]; then
394                 # if artifact name is passed the pull a
395                 # specific artifact from artifacts.opnfv.org
396                 RPM_INSTALL_PATH=$GS_URL/$ARTIFACT_NAME
397             else
398                 if [[ -f opnfv.properties ]]; then
399                     # if opnfv.properties exists then use the
400                     # local build. Source the file so we get local OPNFV vars
401                     source opnfv.properties
402                     RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
403                 else
404                     # no opnfv.properties means use the latest from artifacts.opnfv.org
405                     # get the latest.properties to get the link to the latest artifact
406                     curl -s -o $WORKSPACE/opnfv.properties http://$GS_URL/latest.properties
407                     [[ -f opnfv.properties ]] || exit 1
408                     # source the file so we get OPNFV vars
409                     source opnfv.properties
410                     RPM_INSTALL_PATH=$OPNFV_RPM_URL
411                 fi
412             fi
413
414             source opnfv.properties
415             RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
416
417             # update / install the new rpm
418             if rpm -q opnfv-apex > /dev/null; then
419                if sudo yum update -y $RPM_INSTALL_PATH | grep "does not update installed package"; then
420                    sudo yum downgrade -y $RPM_INSTALL_PATH;
421                fi
422             else
423                sudo yum install -y $RPM_INSTALL_PATH;
424             fi
425
426             # cleanup virtual machines before we start
427             sudo opnfv-clean
428             # initiate virtual deployment
429             if [ -e /usr/share/doc/opnfv/network_settings.yaml.example ]; then
430               sudo opnfv-deploy -v -d /usr/share/doc/opnfv/deploy_settings.yaml.example -n /usr/share/doc/opnfv/network_settings.yaml.example
431             else
432               sudo opnfv-deploy -v
433             fi
434             echo
435             echo "--------------------------------------------------------"
436             echo "Done!"
437
438 - builder:
439     name: 'apex-deploy-baremetal'
440     builders:
441         - shell: |
442             #!/bin/bash
443             set -o errexit
444             set -o nounset
445             set -o pipefail
446
447             # log info to console
448             echo "Starting the Apex baremetal deployment."
449             echo "--------------------------------------------------------"
450             echo
451
452             if [[ ! "$ARTIFACT_NAME" == "latest" ]]; then
453                 # if artifact name is passed the pull a
454                 # specific artifact from artifacts.opnfv.org
455                 RPM_INSTALL_PATH=$GS_URL/$ARTIFACT_NAME
456             else
457                 if [[ -f opnfv.properties ]]; then
458                     # if opnfv.properties exists then use the
459                     # local build. Source the file so we get local OPNFV vars
460                     source opnfv.properties
461                     RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
462                 else
463                     # no opnfv.properties means use the latest from artifacts.opnfv.org
464                     # get the latest.properties to get the link to the latest artifact
465                     curl -s -o $WORKSPACE/opnfv.properties http://$GS_URL/latest.properties
466                     [[ -f opnfv.properties ]] || exit 1
467                     # source the file so we get OPNFV vars
468                     source opnfv.properties
469                     RPM_INSTALL_PATH=$OPNFV_RPM_URL
470                 fi
471             fi
472
473             source opnfv.properties
474             RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
475
476             # update / install the new rpm
477             if rpm -q opnfv-apex > /dev/null; then
478                if sudo yum update -y $RPM_INSTALL_PATH | grep "does not update installed package"; then
479                    sudo yum downgrade -y $RPM_INSTALL_PATH;
480                fi
481             else
482                sudo yum install -y $RPM_INSTALL_PATH;
483             fi
484
485             # cleanup environment before we start
486             sudo opnfv-clean
487             # initiate baremetal deployment
488             sudo opnfv-deploy -i  /root/inventory/pod_settings.yaml \
489             -d /usr/share/doc/opnfv/deploy_settings.yaml.example \
490             -n /root/network/network_settings.yaml
491
492             echo
493             echo "--------------------------------------------------------"
494             echo "Done!"
495
496 #######################
497 # trigger macros
498 ########################
499 - trigger:
500     name: 'apex-master'
501     triggers:
502         - timed: '0 3 * * *'