osmo-ci/jobs
Max ce1d21fec1 libosmocore: use dispatcher script
Get rid of job name comparison because it depends and exact build server
name and hence is highly fragile. Use dispatcher script the same way we
do in osmo-bts.

N. B: this requires I2955e866bce4f000a53369bd601a346c36c82468 in
libosmocore.

Change-Id: I76dfc11a05007ae5c6e0554fe8132695b67cccaa
2018-01-21 21:14:41 +00:00
..
README.adoc README: also hint at /n/home/dub8/.config/jenkins_job_builder/jenkins_jobs.ini 2018-01-15 12:53:57 +00:00
gerrit-verifications.yml libosmocore: use dispatcher script 2018-01-21 21:14:41 +00:00
master-builds.yml libosmocore: use dispatcher script 2018-01-21 21:14:41 +00:00
osmocom-nightly-nitb-split.yml jobs: yml files: set vim expandtab (and shiftwidth) 2017-10-30 04:43:38 +01:00
osmocom-obs-latest.yml jobs: yml files: set vim expandtab (and shiftwidth) 2017-10-30 04:43:38 +01:00
update-osmo-ci-on-slaves.yml Send email on update-* job failures 2018-01-08 12:36:50 +01:00
update-osmo-python-on-slaves.yml Send email on update-* job failures 2018-01-08 12:36:50 +01:00

README.adoc

These jenkins.osmocom.org job definitions, managed by
https://docs.openstack.org/infra/jenkins-job-builder/index.html[Jenkins Job Builder]

*Prepare:*

Install jenkins-job-builder:

For debian 9, see troubleshooting below. Otherwise:

  apt-get install jenkins-job-builder

Have a jenkins-job-builder.ini file. One of

    ~/.config/jenkins_jobs/jenkins_jobs.ini
    /etc/jenkins_jobs/jenkins_jobs.ini

or place one in here and pass it to jenkins-jobs using the --conf file.

Make sure the file not world readable to minimally safeguard your jenkins password.

jenkins_jobs.ini:

    [jenkins]
    user=my_user_name
    password=my_password
    url=https://jenkins.osmocom.org/jenkins

and

    chmod go-rwx jenkins_jobs.ini

*Update a single job on jenkins.osmocom.org:*

    jenkins-jobs --conf jenkins_jobs.ini update gerrit-verifications.yml gerrit-osmo-msc

NOTE: when you supply a name not defined in that yml file, you will not get an
error message, just nothing will happen.

*Update all jobs of one file:*

    jenkins-jobs --conf jenkins_jobs.ini update gerrit-verifications.yml

*Update all jobs in all files:*

    jenkins-jobs --conf jenkins_jobs.ini update ./

*Troubleshooting:*

- 'jenkins.JenkinsException: create[gerrit-osmo-msc] failed'

jenkins.osmocom.org is not reachable, or URL in the config file is erratic.
Make sure it is exactly

    url=https://jenkins.osmocom.org/jenkins

- newlines:

The build commands may be multiline, but especially in the
gerrit-verifications.yml, where the commands are first stored in 'cmd' and
later inserted in a 'shell' section, the newlines between individual shell
lines don't all survive. Interestingly enough, only a line that has more
indenting than the first line also receives an actual newline in the resulting
jenkins Execute Shell section; take a look at the job's config page on jenkins.
Hence we often have a '# keep first line with less indent' comment. Note that
issuing backslashes to span a shell command across several lines will break the
command if the newlines are not preserved, so we need a '# keep...' comment
where there are more than one shell command, and where there are backslashes
'\' to join multiple lines.

- jobs named on cmdline are not updated:

Make sure the job name is correct, or just issue an entire yml file without
individual job names.

Also be aware that jobs are only actually updated when anything changed.

- debian 9

For jenkins-job-builder to work on debian 9:

add 'testing' to /etc/apt/sources.list like

  deb http://ftp.de.debian.org/debian/ testing main

then

    sudo apt-get update
    sudo apt-get -t testing install python-jenkins
    sudo apt-get install jenkins-job-builder

and make sure to *not* pick the python3 versions
(or you'll need to add catching of HTTPError to jenkins/__init__.py in
'def maybe_add_crumb')