osmo-ci/jobs
Oliver Smith 7fc58133d6 Replace most remaining git.osmocom.org urls
Replace the legacy git.osmocom.org clone URLs with either gerrit or
gitea in most places. Besides not using legacy urls anymore, the
advantage of using gerrit directly is that we don't have a delay of 10
min to several hours on the repository.

Not replaced:
* ansible/roles/osmocom-workstation: not sure if still used, would need
  a bit of a rewrite to use logic similar to osmo_git_clone_url().

Related: https://osmocom.org/projects/cellular-infrastructure/wiki/Git_infrastructure
Change-Id: I90409c9e7f4db4e1765647021625f9acfccaa78b
2022-09-26 15:07:59 +02:00
..
README.adoc jobs: use "cmd: |", not "# keep first line ..." 2019-04-17 15:35:27 +00:00
coverity.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
gerrit-lint.yml jobs/gerrit-lint: fix color output 2022-09-12 11:50:13 +02:00
gerrit-verifications-dahdi.yml dahdi-linux: Add gerrit build verification against master 2022-04-24 19:48:47 +02:00
gerrit-verifications.yml {jobs,coverity}: add a new project - libosmo-gprs 2022-08-10 04:39:36 +07:00
master-builds-dahdi.yml jobs: stretch -> buster 2022-07-06 15:20:22 +00:00
master-builds.yml jobs/master-builds: use jenkins-notifications ML 2022-08-30 14:39:01 +02:00
octsim_osmo-ccid-firmware.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
osmo-gsm-manuals-trigger.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
osmo-gsm-tester-builder.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
osmo-gsm-tester-runner.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
osmo-gsm-tester-trigger.yml jobs: Add OGT open5gs build jobs 2021-03-15 19:13:07 +01:00
osmo-gsm-tester_run-gerrit.sh jobs: osmo-gsm-tester: Drop use of OSMO_GSM_TESTER_CONF for default conf dir 2020-05-07 19:16:15 +02:00
osmo-gsm-tester_run-prod.sh jobs: osmo-gsm-tester: Drop use of OSMO_GSM_TESTER_CONF for default conf dir 2020-05-07 19:16:15 +02:00
osmo-gsm-tester_run-rnd.sh jobs: osmo-gsm-tester: Drop use of OSMO_GSM_TESTER_CONF for default conf dir 2020-05-07 19:16:15 +02:00
osmo-gsm-tester_ttcn3.sh jobs: osmo-gsm-tester_ttcn3: Fix path to jenkins script 2020-06-09 14:10:46 +02:00
osmocom-build-tags-against-master.yml Replace most remaining git.osmocom.org urls 2022-09-26 15:07:59 +02:00
osmocom-depcheck.yml Replace most remaining git.osmocom.org urls 2022-09-26 15:07:59 +02:00
osmocom-list-commits.yml Replace most remaining git.osmocom.org urls 2022-09-26 15:07:59 +02:00
osmocom-obs.yml Replace most remaining git.osmocom.org urls 2022-09-26 15:07:59 +02:00
osmocom-release-tarballs.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
registry-rebuild-upload-fpga-build.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
registry-rebuild-upload-titan.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
registry-triggers.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
registry-update-base-images.yml jobs/registry-update-base-images: drop old images 2022-07-06 15:20:22 +00:00
repo-install-test.yml update git URLs (git -> https; gitea/gerrit) 2022-08-13 04:02:51 +07:00
ttcn3-testsuites-kernel-git.yml Replace most remaining git.osmocom.org urls 2022-09-26 15:07:59 +02:00
ttcn3-testsuites.yml Replace most remaining git.osmocom.org urls 2022-09-26 15:07:59 +02:00
update-osmo-ci-on-slaves.yml jobs/update-osmo-ci-on-slaves: run every day 2022-08-30 14:41:24 +02:00
update-osmo-python-on-slaves.yml jobs/update-osmo-*: change mail recipients 2022-06-29 09:33:30 +00: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