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