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