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