6 name: ta-parameters-manifest
9 default: refs/heads/master
11 name: SCM_REFSPEC_MANIFEST
15 name: ta-parameters-build-tools
18 default: refs/heads/master
20 name: SCM_REFSPEC_BUILD_TOOLS
24 name: ta-parameters-rpmbuilder
27 default: refs/heads/master
29 name: SCM_REFSPEC_RPMBUILDER
33 name: ta-parameters-ci
35 - ta-parameters-manifest
36 - ta-parameters-build-tools
37 - ta-parameters-rpmbuilder
40 name: ta-parameters-ci-ta-rpmbuilder
42 - ta-parameters-manifest
43 - ta-parameters-build-tools
47 name: SCM_PROJECT_TO_BUILD
50 default: refs/heads/master
52 name: SCM_PROJECT_TO_BUILD_REFSPEC
59 # Enhanced version of the global-jjb
60 name: ta-lf-infra-gerrit-scm
63 credentials-id: '{jenkins-ssh-credential}'
67 - 'refs/heads/{branch}'
71 recursive: '{submodule-recursive}'
72 timeout: '{submodule-timeout}'
73 choosing-strategy: '{choosing-strategy}'
80 name: lf-display-node-uuid
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"])'
93 source /tmp/v/tox/bin/activate
94 for f in $(find $GERRIT_PROJECT -name tox.ini); do
105 # Skip RPM build in case no *.spec file is found within the {project-to-build}
106 if [ -n "$(find {project-to-build} -name '*.spec')" ]
108 if apt --version 2>1 >/dev/null; then
109 sudo groupadd mock || true
110 sudo usermod -aG mock $USER
112 # Explicitly install mock dependencies
113 sudo apt install -y createrepo alien systemd-container python-pip \
114 python-decoratortools yum-utils usermode pigz
115 # We need a specific version of mock (1.4.14) and devtools
116 # not available in Ubuntu/Debian repos, so fetch them from RHEL mirrors
117 wget http://mirror.centos.org/centos/7.6.1810/os/x86_64/Packages/rpmdevtools-8.3-5.el7.noarch.rpm \
118 https://kojipkgs.fedoraproject.org/packages/mock/1.4.14/2.el7/noarch/mock-1.4.14-2.el7.noarch.rpm
122 # RHEL tools hardcode the full path for certain distro tools
123 sudo ln -sf /bin/tar /usr/bin/gtar
124 sudo ln -sf /bin/machinectl /bin/df /usr/bin/
125 # Some mock dependencies are only available via pip
126 sudo pip install distro pyroute2
128 sudo yum install -y createrepo
130 ta/build-tools/build_rpms.sh \
144 git clone {git-url}/{project} {project}
146 if echo {ref} | grep -q "refs/"; then
147 git fetch origin {ref}
148 git checkout FETCH_HEAD
155 name: ta-lf-infra-ship-rpms
157 # Ensure no pre-existing .netrc files are overriding logs config
158 - lf-provide-maven-settings-cleanup
159 - config-file-provider:
161 - file-id: 'ta-settings'
162 variable: 'SETTINGS_FILE'
164 properties-content: 'ALT_NEXUS_URL=https://nexus3.akraino.org'
165 - lf-infra-create-netrc:
166 server-id: rpm.snapshots
167 - shell: !include-raw:
168 # Ensure python-tools are installed in case job template does not
169 # call the lf-infra-pre-build macro.
170 - ../../global-jjb/shell/python-tools-install.sh
171 - ../shell/ta-rpm-deploy.sh
172 - shell: !include-raw:
173 - ../../global-jjb/shell/logs-clear-credentials.sh
175 properties-content: 'ALT_NEXUS_URL='
178 name: ta-lf-infra-ship-isos
180 # Ensure no pre-existing .netrc files are overriding logs config
181 - lf-provide-maven-settings-cleanup
182 - config-file-provider:
184 - file-id: 'ta-settings'
185 variable: 'SETTINGS_FILE'
186 - lf-infra-create-netrc:
187 server-id: images-snapshots
188 - shell: !include-raw:
189 # Ensure python-tools are installed in case job template does not
190 # call the lf-infra-pre-build macro.
191 - ../../global-jjb/shell/python-tools-install.sh
192 - ../shell/ta-iso-deploy.sh
193 - shell: !include-raw:
194 - ../../global-jjb/shell/logs-clear-credentials.sh
197 name: ta-builder-job-verify
201 project: 'ta/manifest'
202 ref: '$SCM_REFSPEC_MANIFEST'
205 project: 'ta/build-tools'
206 ref: '$SCM_REFSPEC_BUILD_TOOLS'
209 project: 'ta/rpmbuilder'
210 ref: '$SCM_REFSPEC_RPMBUILDER'
213 project-to-build: '$GERRIT_PROJECT'
216 name: ta-builder-job-verify-ta-rpmbuilder
220 project: 'ta/manifest'
221 ref: '$SCM_REFSPEC_MANIFEST'
224 project: 'ta/build-tools'
225 ref: '$SCM_REFSPEC_BUILD_TOOLS'
228 project: '$SCM_PROJECT_TO_BUILD'
229 ref: '$SCM_PROJECT_TO_BUILD_REFSPEC'
232 # Just package some random project to verify "rpmbuilder" changes
233 project-to-build: '$SCM_PROJECT_TO_BUILD'
236 name: ta-builder-job-merge
240 project: 'ta/manifest'
241 ref: '$SCM_REFSPEC_MANIFEST'
244 project: 'ta/build-tools'
245 ref: '$SCM_REFSPEC_BUILD_TOOLS'
248 project: 'ta/rpmbuilder'
249 ref: '$SCM_REFSPEC_RPMBUILDER'
251 project-to-build: '$GERRIT_PROJECT'
252 - ta-lf-infra-ship-rpms
255 name: ta-builder-install-docker
259 if apt --version 2>1 >/dev/null; then
261 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
262 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
263 sudo add-apt-repository -y "deb http://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
265 sudo apt install -y docker-ce
267 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
268 sudo yum -y install docker-ce docker-ce-cli containerd.io
270 sudo mkdir -p /etc/docker/
271 echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
272 sudo systemctl start docker
273 # Ugly hack to make docker usable for non-root
274 # (adding to the group would require re-login)
275 sudo chmod 777 /var/run/docker.sock
278 name: ta-builder-install-build-tools
282 if apt --version 2>1 >/dev/null; then
284 sudo apt install -y createrepo libguestfs-tools jq
286 sudo yum -y install createrepo libguestfs-tools-c jq
288 sudo systemctl start libvirtd
289 systemctl status libvirtd
296 name: ta-trigger-job-verify
299 server-name: '{gerrit-server-name}'
301 - patchset-created-event:
302 exclude-drafts: 'false'
303 exclude-trivial-rebase: 'false'
304 exclude-no-code-change: 'false'
305 - draft-published-event
306 - comment-added-contains-event:
307 comment-contains-value: 'recheck'
308 - comment-added-contains-event:
309 comment-contains-value: 'reverify'
311 - project-compare-type: 'ANT'
312 project-pattern: '{project}'
314 - branch-compare-type: 'ANT'
315 branch-pattern: '**/{branch}'
316 readable-message: true
319 name: ta-trigger-job-merge
322 server-name: '{gerrit-server-name}'
324 # Not sure if it would be better to use "change-merged" here and just clone the master
325 # branch. With the current approach the SCM can be identical in verify and merge jobs.
327 - comment-added-contains-event:
328 comment-contains-value: 'remerge'
330 - project-compare-type: 'ANT'
331 project-pattern: '{project}'
333 - branch-compare-type: 'ANT'
334 branch-pattern: '**/{branch}'
335 readable-message: true
342 name: ta-publisher-job-verify
347 name: ta-publisher-job-merge
350 - trigger-parameterized-builds:
351 - project: 'ta-ci-build-{arch}'
352 condition: UNSTABLE_OR_BETTER
353 trigger-with-no-params: true