osmo-ci/jobs
Oliver Smith 3633d1f62e jobs/update-osmo-…: only trigger container rebuild
Installing osmo-python-tests to the jenkins nodes should not be needed
anymore, as builds of almost all jenkins jobs are done in docker where
we install osmo-python-tests inside the containers where it is needed.
We already removed the initial deployment to jenkins nodes via ansible
in I7c87bd516d1bcdbcc21f65909dabbd3ccc38eede ("ansible:
osmocom_build_deps: remove"), let's adjust the job that updates
osmo-python-tests too. Instead of deploying it directly, only trigger
a rebuild of containers.

I'm doing this now because the jenkins job started failing after
I42ba71e2fd0ceb8466758ea46e9ae33e3d4fcb91 ("contrib/jenkins.sh: use
virtualenv and pip") on some nodes where virtualenv is not available.
The contrib/jenkins.sh script was used for both CI verification and to
actually deploy this python package to the jenkins nodes, which was
not really obvious and also as noted above isn't needed anymore.

Change-Id: I3b06a2fc2c7182d0b0a4d13b82f67a9db1be2fd0
2024-07-23 11:24:56 +02:00
..
README.md jenkins-jobs-osmo: new file 2024-06-04 13:40:07 +00:00
coverity-status.yml coverity: add job to check for failed uploads 2023-12-08 14:53:40 +01:00
coverity.yml jobs/coverity: fix clean up permission errors 2024-06-14 09:24:48 +02:00
gerrit-binpkgs.yml OBS: move gerrit-binpkgs logic to separate script 2024-04-25 14:13:45 +02:00
gerrit-lint.yml jobs/gerrit-lint: wipe workspace 2024-07-17 07:15:49 +00:00
gerrit-verifications-comment.yml jobs: fix undefined parameter log warnings 2023-12-04 08:55:28 +01:00
gerrit-verifications-dahdi.yml gerrit-verifications-dahdi: set concurrent: false 2024-07-17 07:15:49 +00:00
gerrit-verifications-parameters.yaml.inc jobs: fix undefined parameter log warnings 2023-12-04 08:55:28 +01:00
gerrit-verifications.yml jobs/various: clean workspace on success 2024-07-17 07:15:49 +00:00
master-builds-dahdi.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
master-builds.yml jobs/various: clean workspace on success 2024-07-17 07:15:49 +00:00
octsim_osmo-ccid-firmware.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
osmo-gsm-manuals-trigger.yml jobs: add build-discarder to all 2023-04-03 11:22:21 +02: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 jobs/osmo-gsm-tester-virtual: kill old instances 2023-12-14 11:11:27 +01:00
osmo-gsm-tester-trigger.yml jobs: add build-discarder to all 2023-04-03 11:22:21 +02: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-api.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
osmocom-build-tags-against-master.yml jobs/osmocom-build-tags…: fix workspace clean 2024-07-17 13:29:40 +00:00
osmocom-depcheck.yml jobs: add build-discarder to all 2023-04-03 11:22:21 +02:00
osmocom-list-commits.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
osmocom-obs-check-builders.yml jobs: add build-discarder to all 2023-04-03 11:22:21 +02:00
osmocom-obs-check-new-distros.yml OBS: add jenkins job to check for new distros 2023-12-06 06:10:46 +00:00
osmocom-obs-ewild.yml jobs: add osmocom-obs-ewild 2024-03-21 10:33:42 +01:00
osmocom-obs-nhofmeyr.yml osmocom-obs-nhofmeyr.yml: edit to create initial version 2023-04-17 01:45:13 +02:00
osmocom-obs-nightly-asan.yml jobs/various: clean workspace on success 2024-07-17 07:15:49 +00:00
osmocom-obs-rhizomatica.yml jobs/osmocom-obs-rhizomatica: add new jobs 2023-04-06 10:59:28 +02:00
osmocom-obs-sync.yml OBS: sync_obs_projects: remove AlmaLinux:8 2024-05-08 11:35:50 +02:00
osmocom-obs-wireshark.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
osmocom-obs.yml jobs/various: clean workspace on success 2024-07-17 07:15:49 +00:00
osmocom-release-manuals.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
osmocom-release-tarballs.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
registry-rebuild-upload-fpga-build.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
registry-rebuild-upload-titan.yml jobs/registry-rebuild-upload-titan: use bookworm 2023-08-14 09:28:40 +00:00
registry-triggers.yml jobs: update trigger timers 2023-09-13 16:11:29 +00:00
registry-update-base-images.yml jobs/registry-update-base…: remove almalinux8 2024-02-14 16:53:50 +01:00
repo-install-test.yml jobs/repo-install-test: remove centos8 2024-02-14 16:53:44 +01:00
ttcn3-testsuites-kernel-git.yml jobs: remove artifacts-days/num-to-keep: -1 2023-04-03 10:47:54 +02:00
ttcn3-testsuites.yml ttcn3: io_uring: use custom seccomp profile 2024-07-09 14:13:50 +02:00
update-containers-osmo-python-tests.yml jobs/update-osmo-…: only trigger container rebuild 2024-07-23 11:24:56 +02:00
update-osmo-ci-on-slaves.yml jobs/update-osmo*: add lx2-raspbian11build-ansible 2024-06-04 13:33:01 +00:00

README.md

Osmocom jenkins jobs

These jenkins.osmocom.org job definitions, managed by Jenkins Job Builder

Prepare

Install jenkins-job-builder:

# apt-get install jenkins-job-builder

Create the following file:

~/.config/jenkins_jobs/jenkins_jobs_osmo-ci.ini

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_osmo-ci.ini:

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

and

$ chmod go-rwx jenkins_jobs_osmo-ci.ini

Update a single job on jenkins.osmocom.org

$ cd ..
$ ./jenkins-jobs-osmo.sh update jobs/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

$ cd ..
$ ./jenkins-jobs-osmo.sh update jobs/gerrit-verifications.yml

Update all jobs in all files

$ cd ..
$ ./jenkins-jobs-osmo.sh update jobs/

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:

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.

Jenkins labels

Most jenkins jobs should run a docker container and install all required dependencies inside that, so we don't need to install them on the jenkins node. These jobs don't need to set a label, they can just run on any generic jenkins node that has docker available. So if you add a new job, you probably don't need a label at all.

Existing jobs typically have a label set by the topic they belong to, e.g.:

  • osmocom-master
  • osmocom-gerrit
  • ttcn3

Other labels indicate specific software/hardware works here, e.g.:

  • coverity
  • hdlc
  • osmo-gsm-tester
  • podman

ccache

The jobs from master-builds and gerrit-verifications use ccache. View the statistics with SSH on the build nodes with:

$ CCACHE_DIR=~/ccache/gerrit-verifications ccache -s
$ CCACHE_DIR=~/ccache/master-builds ccache -s

Note that running multiple jobs in parallel influence the ccache statistics, and it's impossible to tell which job caused which change in the stats (that's why they are not printed at the end of each job, it would be confusing).

Timers

A lot of the jenkins jobs run daily with a timer:

triggers:
  - timed: "H 20 * * *"

or weekly:

triggers:
  - timed: "H 20 * * H"

Use H for the minute / day of week, to have it derivated as hash of the job name. Replace 20 with the hour (UTC) the job should run.

The jobs follow this timetable, to ensure we don't attempt to use binary packages before they have been built (leading to failing jobs).

18:00 - 21:00 OBS related
  18:XX osmocom-obs-sync (sync Debian:12 etc. with openSUSE OBS)
  19:XX osmocom-obs-check-new-distros
  19:XX osmocom-obs-wireshark
  20:XX osmocom-obs (new binary packages start building on OBS!)

22:00 - 03:00 Jobs that don't need binary packages
  22:XX coverity
  22:XX octsim_osmo-ccid-firmware
  22:XX osmo-gsm-tester-runner (virtual)
  23:XX master-builds-dahdi
  00:XX osmocom-api
  00:XX registry-update-base-images
  01:XX osmocom-build-tags-against-master
  01:XX osmocom-list-commits
  02:XX registry-triggers
  02:XX registry-rebuild-upload-fpga-build (weekly)

03:00 - 18:00 Jobs that need binary packages
  ttcn3-testsuites
  04:XX osmocom-release-manuals
  05:XX osmocom-release-tarballs
  06:XX repo-install-test
  06:XX coverity-status (runs intentionally much later than the coverity job)

master-builds: to avoid complexity, these run throughout the day (H H * * *).