Add node UUI display macro
[ci-management.git] / jjb / akraino-templates / akraino-ta-common-macros.yaml
1 ---
2 ##############
3 # PARAMETERS #
4 ##############
5 - parameter:
6     name: ta-parameters-manifest
7     parameters:
8      - string:
9         default: refs/heads/master
10         description: ''
11         name: SCM_REFSPEC_MANIFEST
12         trim: 'false'
13
14 - parameter:
15     name: ta-parameters-build-tools
16     parameters:
17      - string:
18         default: refs/heads/master
19         description: ''
20         name: SCM_REFSPEC_BUILD_TOOLS
21         trim: 'false'
22
23 - parameter:
24     name: ta-parameters-rpmbuilder
25     parameters:
26      - string:
27         default: refs/heads/master
28         description: ''
29         name: SCM_REFSPEC_RPMBUILDER
30         trim: 'false'
31
32 - parameter:
33     name: ta-parameters-ci
34     parameters:
35      - ta-parameters-manifest
36      - ta-parameters-build-tools
37      - ta-parameters-rpmbuilder
38
39 - parameter:
40     name: ta-parameters-ci-ta-rpmbuilder
41     parameters:
42      - ta-parameters-manifest
43      - ta-parameters-build-tools
44      - string:
45         default: ta/yarf
46         description: ''
47         name: SCM_PROJECT_TO_BUILD
48         trim: 'false'
49      - string:
50         default: refs/heads/master
51         description: ''
52         name: SCM_PROJECT_TO_BUILD_REFSPEC
53         trim: 'false'
54
55 #######
56 # SCM #
57 #######
58 - scm:
59     # Enhanced version of the global-jjb
60     name: ta-lf-infra-gerrit-scm
61     scm:
62       - git:
63           credentials-id: '{jenkins-ssh-credential}'
64           url: '{git-url}'
65           refspec: '{refspec}'
66           branches:
67             - 'refs/heads/{branch}'
68           skip-tag: true
69           wipe-workspace: true
70           submodule:
71             recursive: '{submodule-recursive}'
72             timeout: '{submodule-timeout}'
73           choosing-strategy: '{choosing-strategy}'
74           basedir: '{basedir}'
75
76 ###########
77 # BUILDER #
78 ###########
79 - builder:
80     name: lf-display-node-uuid
81     builders:
82         - shell: |2-
83             echo "---> Node UUID:"
84             curl -s http://169.254.169.254/openstack/latest/meta_data.json | python -c 'import sys, json; data = json.load(sys.stdin); print(data["uuid"])'
85
86 - builder:
87     name: ta-builder-tox
88     builders:
89         - lf-pip-install:
90             pip-packages: tox
91         - shell: |2-
92             source /tmp/v/tox/bin/activate
93             for f in $(find $GERRIT_PROJECT -name tox.ini); do
94                 pushd $(dirname $f)
95                 tox
96                 popd
97             done
98
99 - builder:
100     name: ta-builder-rpm
101     builders:
102         - shell: |2-
103             #  Skip RPM build in case no *.spec file is found within the {project-to-build}
104             if [ -n "$(find {project-to-build} -name '*.spec')" ]
105             then
106                 sudo yum install -y createrepo
107                 ta/build-tools/build_rpms.sh \
108                  -m ta/manifest \
109                  -r ta/rpmbuilder \
110                  -w work \
111                  {project-to-build}
112                 find work/
113             fi
114
115 - builder:
116     name: ta-builder-scm
117     builders:
118         - shell: |2-
119             git clone {git-url}/{project} {project}
120             pushd {project}
121             if echo {ref} | grep -q "refs/"; then
122                 git fetch origin {ref}
123                 git checkout FETCH_HEAD
124             else
125                 git checkout {ref}
126             fi
127             popd
128
129 - builder:
130     name: ta-lf-infra-ship-rpms
131     builders:
132       # Ensure no pre-existing .netrc files are overriding logs config
133       - lf-provide-maven-settings-cleanup
134       - config-file-provider:
135           files:
136             - file-id: 'ta-settings'
137               variable: 'SETTINGS_FILE'
138       - inject:
139           properties-content: 'ALT_NEXUS_URL=https://nexus3.akraino.org'
140       - lf-infra-create-netrc:
141           server-id: rpm.snapshots
142       - shell: !include-raw:
143           # Ensure python-tools are installed in case job template does not
144           # call the lf-infra-pre-build macro.
145           - ../../global-jjb/shell/python-tools-install.sh
146           - ../shell/ta-rpm-deploy.sh
147       - shell: !include-raw:
148           - ../../global-jjb/shell/logs-clear-credentials.sh
149       - inject:
150           properties-content: 'ALT_NEXUS_URL='
151
152 - builder:
153     name: ta-lf-infra-ship-isos
154     builders:
155       # Ensure no pre-existing .netrc files are overriding logs config
156       - lf-provide-maven-settings-cleanup
157       - config-file-provider:
158           files:
159             - file-id: 'ta-settings'
160               variable: 'SETTINGS_FILE'
161       - lf-infra-create-netrc:
162           server-id: images-snapshots
163       - shell: !include-raw:
164           # Ensure python-tools are installed in case job template does not
165           # call the lf-infra-pre-build macro.
166           - ../../global-jjb/shell/python-tools-install.sh
167           - ../shell/ta-iso-deploy.sh
168       - shell: !include-raw:
169           - ../../global-jjb/shell/logs-clear-credentials.sh
170
171 - builder:
172     name: ta-builder-job-verify
173     builders:
174         - ta-builder-scm:
175               git-url: '{git-url}'
176               project: 'ta/manifest'
177               ref: '$SCM_REFSPEC_MANIFEST'
178         - ta-builder-scm:
179               git-url: '{git-url}'
180               project: 'ta/build-tools'
181               ref: '$SCM_REFSPEC_BUILD_TOOLS'
182         - ta-builder-scm:
183               git-url: '{git-url}'
184               project: 'ta/rpmbuilder'
185               ref: '$SCM_REFSPEC_RPMBUILDER'
186         - ta-builder-tox
187         - ta-builder-rpm:
188               project-to-build: '$GERRIT_PROJECT'
189
190 - builder:
191     name: ta-builder-job-verify-ta-rpmbuilder
192     builders:
193         - ta-builder-scm:
194               git-url: '{git-url}'
195               project: 'ta/manifest'
196               ref: '$SCM_REFSPEC_MANIFEST'
197         - ta-builder-scm:
198               git-url: '{git-url}'
199               project: 'ta/build-tools'
200               ref: '$SCM_REFSPEC_BUILD_TOOLS'
201         - ta-builder-scm:
202               git-url: '{git-url}'
203               project: '$SCM_PROJECT_TO_BUILD'
204               ref: '$SCM_PROJECT_TO_BUILD_REFSPEC'
205         - ta-builder-tox
206         - ta-builder-rpm:
207               # Just package some random project to verify "rpmbuilder" changes
208               project-to-build: '$SCM_PROJECT_TO_BUILD'
209
210 - builder:
211     name: ta-builder-job-merge
212     builders:
213         - ta-builder-scm:
214               git-url: '{git-url}'
215               project: 'ta/manifest'
216               ref: '$SCM_REFSPEC_MANIFEST'
217         - ta-builder-scm:
218               git-url: '{git-url}'
219               project: 'ta/build-tools'
220               ref: '$SCM_REFSPEC_BUILD_TOOLS'
221         - ta-builder-scm:
222               git-url: '{git-url}'
223               project: 'ta/rpmbuilder'
224               ref: '$SCM_REFSPEC_RPMBUILDER'
225         - ta-builder-rpm:
226               project-to-build: '$GERRIT_PROJECT'
227         - ta-lf-infra-ship-rpms
228
229 - builder:
230     name: ta-builder-install-docker
231     builders:
232       - shell: |2-
233           sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
234           sudo yum -y install docker-ce docker-ce-cli containerd.io
235           sudo mkdir -p /etc/docker/
236           echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
237           sudo systemctl start docker
238           # Ugly hack to make docker usable for non-root
239           # (adding to the group would require re-login)
240           sudo chmod 777 /var/run/docker.sock
241
242 - builder:
243     name: ta-builder-install-build-tools
244     builders:
245       - shell: |2-
246           sudo yum -y install createrepo libguestfs-tools-c jq
247           sudo systemctl start libvirtd
248           systemctl status libvirtd
249
250 ###########
251 # TRIGGER #
252 ###########
253
254 - trigger:
255     name: ta-trigger-job-verify
256     triggers:
257       - gerrit:
258           server-name: '{gerrit-server-name}'
259           trigger-on:
260             - patchset-created-event:
261                 exclude-drafts: 'false'
262                 exclude-trivial-rebase: 'false'
263                 exclude-no-code-change: 'false'
264             - draft-published-event
265             - comment-added-contains-event:
266                 comment-contains-value: 'recheck'
267             - comment-added-contains-event:
268                 comment-contains-value: 'reverify'
269           projects:
270             - project-compare-type: 'ANT'
271               project-pattern: '{project}'
272               branches:
273                 - branch-compare-type: 'ANT'
274                   branch-pattern: '**/{branch}'
275           readable-message: true
276
277 - trigger:
278     name: ta-trigger-job-merge
279     triggers:
280       - gerrit:
281           server-name: '{gerrit-server-name}'
282           trigger-on:
283             # Not sure if it would be better to use "change-merged" here and just clone the master
284             # branch. With the current approach the SCM can be identical in verify and merge jobs.
285             - ref-updated-event
286             - comment-added-contains-event:
287                 comment-contains-value: 'remerge'
288           projects:
289             - project-compare-type: 'ANT'
290               project-pattern: '{project}'
291               branches:
292                 - branch-compare-type: 'ANT'
293                   branch-pattern: '**/{branch}'
294           readable-message: true
295
296 #############
297 # PUBLISHER #
298 #############
299
300 - publisher:
301     name: ta-publisher-job-verify
302     publishers:
303       - lf-infra-publish
304
305 - publisher:
306     name: ta-publisher-job-merge
307     publishers:
308       - lf-infra-publish
309       - trigger-parameterized-builds:
310           - project: 'ta-ci-build'
311             condition: UNSTABLE_OR_BETTER
312             trigger-with-no-params: true