create onosfw CI jobs
[releng.git] / jjb / onosfw / onosfw.yml
1 - project:
2
3     name: onosfw
4
5     jobs:
6         - 'onosfw-verify-{stream}'
7         - 'onosfw-daily-{stream}'
8         - 'onosfw-build-{stream}'
9
10 # only master branch is enabled at the moment to keep no of jobs sane
11     stream:
12         - master:
13             branch: 'master'
14             gs-pathname: ''
15 #        - brahmaputra:
16 #            branch: 'stable/brahmaputra'
17 #            gs-pathname: '/brahmaputra'
18
19     project: 'onosfw'
20
21 ########################
22 # job templates
23 ########################
24 - job-template:
25     name: 'onosfw-verify-{stream}'
26
27     parameters:
28         - project-parameter:
29             project: '{project}'
30         - gerrit-parameter:
31             branch: '{branch}'
32         - 'opnfv-build-defaults'
33
34     scm:
35         - gerrit-trigger-scm:
36             credentials-id: '{ssh-credentials}'
37             refspec: '$GERRIT_REFSPEC'
38             choosing-strategy: 'gerrit'
39
40     triggers:
41         - gerrit:
42             trigger-on:
43                 - patchset-created-event:
44                     exclude-drafts: 'false'
45                     exclude-trivial-rebase: 'false'
46                     exclude-no-code-change: 'false'
47                 - draft-published-event
48                 - comment-added-contains-event:
49                     comment-contains-value: 'recheck'
50                 - comment-added-contains-event:
51                     comment-contains-value: 'reverify'
52             projects:
53               - project-compare-type: 'ANT'
54                 project-pattern: '{project}'
55                 branches:
56                   - branch-compare-type: 'ANT'
57                     branch-pattern: '**/{branch}'
58                 forbidden-file-paths:
59                   - compare-type: ANT
60                     pattern: 'docs/**|.gitignore'
61
62     builders:
63         - 'builder-onosfw-build'
64
65 - job-template:
66     name: 'onosfw-daily-{stream}'
67
68     parameters:
69         - project-parameter:
70             project: '{project}'
71         - 'opnfv-build-defaults'
72
73     scm:
74         - git-scm:
75             credentials-id: '{ssh-credentials}'
76             refspec: ''
77             branch: '{branch}'
78
79     triggers:
80         - timed: '@midnight'
81
82     builders:
83         - trigger-builds:
84           - project: 'onosfw-build-{stream}'
85             git-revision: true
86             block: true
87
88 - job-template:
89     name: 'onosfw-build-{stream}'
90
91     parameters:
92         - project-parameter:
93             project: '{project}'
94         - 'opnfv-build-defaults'
95
96     scm:
97         - git-scm:
98             credentials-id: '{ssh-credentials}'
99             refspec: ''
100             branch: '{branch}'
101
102     builders:
103         - 'builder-onosfw-build'
104         - 'builder-onosfw-upload-artifact'
105
106
107
108 ########################
109 # builder macros
110 ########################
111 - builder:
112     name: 'builder-onosfw-build'
113     builders:
114         - shell: |
115             #!/bin/bash
116             set -o errexit
117             set -o nounset
118             set -o pipefail
119
120             # log info to console
121             echo "Starting the build of $PROJECT. This could take some time..."
122             echo "--------------------------------------------------------"
123             echo
124
125             # create the cache directory if it doesn't exist
126             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
127             [[ -d $BUILD_DIRECTORY ]] || mkdir -p $BUILD_DIRECTORY
128
129             # set OPNFV_ARTIFACT_VERSION
130             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
131
132             # start the build
133             cd $WORKSPACE/
134             ./ci/build.sh  $BUILD_DIRECTORY/
135
136             # list the build artifacts
137             ls -al $BUILD_DIRECTORY
138
139             # save information regarding artifact into file
140             (
141                 echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
142                 echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
143                 echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
144                 echo "OPNFV_ARTIFACT_URL=$GS_BASE/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
145                 echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/onosfw.iso | cut -d' ' -f1)"
146                 echo "OPNFV_BUILD_URL=$BUILD_URL"
147             ) > $BUILD_DIRECTORY/opnfv.properties
148             echo
149             echo "--------------------------------------------------------"
150             echo "Done!"
151
152
153 - builder:
154     name: 'builder-onosfw-upload-artifact'
155     builders:
156         - shell: |
157             #!/bin/bash
158             set -o errexit
159             set -o nounset
160             set -o pipefail
161
162             # log info to console
163             echo "Uploading the $INSTALLER artifact. This could take some time..."
164             echo "--------------------------------------------------------"
165             echo
166
167             # source the opnfv.properties to get ARTIFACT_VERSION
168             source $BUILD_DIRECTORY/opnfv.properties
169
170             # upload artifact and additional files to google storage
171             gsutil cp $BUILD_DIRECTORY/onosfw.iso gs://$GS_BASE/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
172             gsutil cp $BUILD_DIRECTORY/opnfv.properties gs://$GS_BASE/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
173             gsutil cp $BUILD_DIRECTORY/opnfv.properties gs://$GS_BASE/latest.properties > gsutil.latest.log 2>&1
174
175             echo
176             echo "--------------------------------------------------------"
177             echo "Done!"
178             echo "Artifact is available as http://$GS_BASE/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
179
180