Creating cloudtaf.yaml
[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: ta-builder-tox
81     builders:
82         - lf-pip-install:
83             pip-packages: tox
84         - shell: |2-
85             source /tmp/v/tox/bin/activate
86             for f in $(find $GERRIT_PROJECT -name tox.ini); do
87                 pushd $(dirname $f)
88                 tox
89                 popd
90             done
91
92 - builder:
93     name: ta-builder-rpm
94     builders:
95         - shell: |2-
96             #  Skip RPM build in case no *.spec file is found within the {project-to-build}
97             if [ -n "$(find {project-to-build} -name '*.spec')" ]
98             then
99                 sudo yum install -y createrepo
100                 ta/build-tools/build_rpms.sh \
101                  -m ta/manifest \
102                  -r ta/rpmbuilder \
103                  -w work \
104                  {project-to-build}
105                 find work/
106             fi
107
108 - builder:
109     name: ta-builder-scm
110     builders:
111         - shell: |2-
112             git clone {git-url}/{project} {project}
113             pushd {project}
114             if echo {ref} | grep -q "refs/"; then
115                 git fetch origin {ref}
116                 git checkout FETCH_HEAD
117             else
118                 git checkout {ref}
119             fi
120             popd
121
122 - builder:
123     name: ta-lf-infra-ship-rpms
124     builders:
125       # Ensure no pre-existing .netrc files are overriding logs config
126       - lf-provide-maven-settings-cleanup
127       - config-file-provider:
128           files:
129             - file-id: 'ta-settings'
130               variable: 'SETTINGS_FILE'
131       - inject:
132           properties-content: 'ALT_NEXUS_URL=https://nexus3.akraino.org'
133       - lf-infra-create-netrc:
134           server-id: rpm.snapshots
135       - shell: !include-raw:
136           # Ensure python-tools are installed in case job template does not
137           # call the lf-infra-pre-build macro.
138           - ../../global-jjb/shell/python-tools-install.sh
139           - ../shell/ta-rpm-deploy.sh
140       - shell: !include-raw:
141           - ../../global-jjb/shell/logs-clear-credentials.sh
142       - inject:
143           properties-content: 'ALT_NEXUS_URL='
144
145 - builder:
146     name: ta-lf-infra-ship-isos
147     builders:
148       # Ensure no pre-existing .netrc files are overriding logs config
149       - lf-provide-maven-settings-cleanup
150       - config-file-provider:
151           files:
152             - file-id: 'ta-settings'
153               variable: 'SETTINGS_FILE'
154       - lf-infra-create-netrc:
155           server-id: images-snapshots
156       - shell: !include-raw:
157           # Ensure python-tools are installed in case job template does not
158           # call the lf-infra-pre-build macro.
159           - ../../global-jjb/shell/python-tools-install.sh
160           - ../shell/ta-iso-deploy.sh
161       - shell: !include-raw:
162           - ../../global-jjb/shell/logs-clear-credentials.sh
163
164 - builder:
165     name: ta-builder-job-verify
166     builders:
167         - ta-builder-scm:
168               git-url: '{git-url}'
169               project: 'ta/manifest'
170               ref: '$SCM_REFSPEC_MANIFEST'
171         - ta-builder-scm:
172               git-url: '{git-url}'
173               project: 'ta/build-tools'
174               ref: '$SCM_REFSPEC_BUILD_TOOLS'
175         - ta-builder-scm:
176               git-url: '{git-url}'
177               project: 'ta/rpmbuilder'
178               ref: '$SCM_REFSPEC_RPMBUILDER'
179         - ta-builder-tox
180         - ta-builder-rpm:
181               project-to-build: '$GERRIT_PROJECT'
182
183 - builder:
184     name: ta-builder-job-verify-ta-rpmbuilder
185     builders:
186         - ta-builder-scm:
187               git-url: '{git-url}'
188               project: 'ta/manifest'
189               ref: '$SCM_REFSPEC_MANIFEST'
190         - ta-builder-scm:
191               git-url: '{git-url}'
192               project: 'ta/build-tools'
193               ref: '$SCM_REFSPEC_BUILD_TOOLS'
194         - ta-builder-scm:
195               git-url: '{git-url}'
196               project: '$SCM_PROJECT_TO_BUILD'
197               ref: '$SCM_PROJECT_TO_BUILD_REFSPEC'
198         - ta-builder-tox
199         - ta-builder-rpm:
200               # Just package some random project to verify "rpmbuilder" changes
201               project-to-build: '$SCM_PROJECT_TO_BUILD'
202
203 - builder:
204     name: ta-builder-job-merge
205     builders:
206         - ta-builder-scm:
207               git-url: '{git-url}'
208               project: 'ta/manifest'
209               ref: '$SCM_REFSPEC_MANIFEST'
210         - ta-builder-scm:
211               git-url: '{git-url}'
212               project: 'ta/build-tools'
213               ref: '$SCM_REFSPEC_BUILD_TOOLS'
214         - ta-builder-scm:
215               git-url: '{git-url}'
216               project: 'ta/rpmbuilder'
217               ref: '$SCM_REFSPEC_RPMBUILDER'
218         - ta-builder-rpm:
219               project-to-build: '$GERRIT_PROJECT'
220         - ta-lf-infra-ship-rpms
221
222 - builder:
223     name: ta-builder-install-docker
224     builders:
225       - shell: |2-
226           sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
227           sudo yum -y install docker-ce docker-ce-cli containerd.io
228           sudo mkdir -p /etc/docker/
229           echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
230           sudo systemctl start docker
231           # Ugly hack to make docker usable for non-root
232           # (adding to the group would require re-login)
233           sudo chmod 777 /var/run/docker.sock
234
235 - builder:
236     name: ta-builder-install-build-tools
237     builders:
238       - shell: |2-
239           sudo yum -y install createrepo libguestfs-tools-c jq
240           sudo systemctl start libvirtd
241           systemctl status libvirtd
242
243 ###########
244 # TRIGGER #
245 ###########
246
247 - trigger:
248     name: ta-trigger-job-verify
249     triggers:
250       - gerrit:
251           server-name: '{gerrit-server-name}'
252           trigger-on:
253             - patchset-created-event:
254                 exclude-drafts: 'false'
255                 exclude-trivial-rebase: 'false'
256                 exclude-no-code-change: 'false'
257             - draft-published-event
258             - comment-added-contains-event:
259                 comment-contains-value: 'recheck'
260             - comment-added-contains-event:
261                 comment-contains-value: 'reverify'
262           projects:
263             - project-compare-type: 'ANT'
264               project-pattern: '{project}'
265               branches:
266                 - branch-compare-type: 'ANT'
267                   branch-pattern: '**/{branch}'
268           readable-message: true
269
270 - trigger:
271     name: ta-trigger-job-merge
272     triggers:
273       - gerrit:
274           server-name: '{gerrit-server-name}'
275           trigger-on:
276             # Not sure if it would be better to use "change-merged" here and just clone the master
277             # branch. With the current approach the SCM can be identical in verify and merge jobs.
278             - ref-updated-event
279             - comment-added-contains-event:
280                 comment-contains-value: 'remerge'
281           projects:
282             - project-compare-type: 'ANT'
283               project-pattern: '{project}'
284               branches:
285                 - branch-compare-type: 'ANT'
286                   branch-pattern: '**/{branch}'
287           readable-message: true
288
289 #############
290 # PUBLISHER #
291 #############
292
293 - publisher:
294     name: ta-publisher-job-verify
295     publishers:
296       - lf-infra-publish
297
298 - publisher:
299     name: ta-publisher-job-merge
300     publishers:
301       - lf-infra-publish
302       - trigger-parameterized-builds:
303           - project: 'ta-ci-build'
304             condition: UNSTABLE_OR_BETTER
305             trigger-with-no-params: true