osmo-ci/jobs
Oliver Smith a8153577fe gerrit, master builds: use stretch, not jessie
Debian jessie (8) is EOL already, so switch to stretch (9). This is
required to build all Osmocom projects in docker, because at least
libosmocore fails to build with the old image (tests won't build with
GCC-4.9.x from jessie unless -Werror is disabled).

Do not build the jessie image anymore, and update the shared dockerfile.
Remove everything jessie specific, and make it work with stretch by
installing asciidoc-dblatex. Otherwise we get this error when building
manuals:

a2x: ERROR: missing configuration file: /etc/asciidoc/dblatex/asciidoc-dblatex.xsl

Add '--cap-add SYS_PTRACE' argument to the docker run command, because
otherwise the address sanitizer isn't working anymore with stretch
(which makes the OsmoPCU tests fail).

I've tried to split this patch up into multiple ones, but since there is
no asciidoc-dblatex package in jessie, we must add the dependency and
switch the image at the same time.

Related: OS#3726
Change-Id: I61fe93863d5367e3b9c01ab4726bb95bd16d891d
2019-09-24 08:04:53 +02:00
..
README.adoc jobs: use "cmd: |", not "# keep first line ..." 2019-04-17 15:35:27 +00:00
coverity.yml jenkins: Send build failures to jenkins-notifications mailing list 2019-03-03 16:04:41 +01:00
gerrit-verifications.yml gerrit, master builds: use stretch, not jessie 2019-09-24 08:04:53 +02:00
master-builds.yml gerrit, master builds: use stretch, not jessie 2019-09-24 08:04:53 +02:00
osmo-gsm-tester-builder.yml jenkins: Send build failures to jenkins-notifications mailing list 2019-03-03 16:04:41 +01:00
osmo-gsm-tester-runner.yml jobs: osmo-gsm-tester: Add oc2g jobs 2019-02-21 18:50:40 +01:00
osmo-gsm-tester-trigger.yml jobs: osmo-gsm-tester: Add oc2g jobs 2019-02-21 18:50:40 +01:00
osmo-gsm-tester_run-gerrit.sh jobs: osmo-gsm-tester_run-gerrit: Update suites selected for verification 2018-09-25 08:04:18 +00:00
osmo-gsm-tester_run-prod.sh jenkins: add osmo-gsm-tester_run-{prod,rnd} 2018-04-06 06:49:31 +00:00
osmo-gsm-tester_run-rnd.sh jenkins: add osmo-gsm-tester_run-{prod,rnd} 2018-04-06 06:49:31 +00:00
osmo-gsm-tester_ttcn3.sh Fix copy and paste in the script. 2019-02-15 15:34:52 +00:00
osmocom-build-tags-against-master.yml jobs: add osmocom-build-tags-against-master.yml 2019-03-26 15:54:46 +01:00
osmocom-debian-install.yml jobs: upload to OBS before debian-install test 2019-07-26 08:55:21 +02:00
osmocom-depcheck.yml jenkins: Send build failures to jenkins-notifications mailing list 2019-03-03 16:04:41 +01:00
osmocom-list-commits.yml jobs: add osmocom-list-commits.yml 2019-03-20 11:41:28 +01:00
osmocom-obs.yml jobs: upload to OBS before debian-install test 2019-07-26 08:55:21 +02:00
osmocom-release-tarballs.yml jobs: add osmocom-release-tarballs.yml 2019-07-02 13:27:44 +02:00
ttcn3-testsuites.yml jenkins-jobs: Add ttcn3-remsim-test for {master,latest] 2019-09-13 14:02:17 +02:00
update-osmo-ci-on-slaves.yml jobs: update-osmo-* remove old build nodes 2018-04-24 11:26:24 +02:00
update-osmo-python-on-slaves.yml jobs: update-osmo-* remove old build nodes 2018-04-24 11:26:24 +02: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.
Instead of using your jenkins password, use an *API Token*. To retrieve your token go
to Jenkins via a Webbrowser, click on your Username in the right corner, click on configure,
click on *Show API Toke...*.

jenkins_jobs.ini:

    [jenkins]
    user=my_user_name
    password=my_api_token
    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:

Use 'key: |' to keep new lines in multiline values, e.g.:
  - shell: |
      echo hello
      echo world

See also:
* https://yaml-multiline.info/
* https://stackoverflow.com/a/21699210

- 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')

*Jenkins labels*

The build jobs are using labels to specify on which nodes the job should be run.
Please use the following labels

- osmocom-master-debian8: are nodes which can build osmocom-master and is a debian 8
- osmocom-master-debian9: are nodes which can build osmocom-master and is a debian 9
- osmocom-gerrit-debian8: are nodes which can build osmocom-gerrit and is a debian 8
- osmocom-gerrit-debian9: are nodes which can build osmocom-gerrit and is a debian 9