Commit Graph

136 Commits

Author SHA1 Message Date
Oliver Smith 4773f26d2d jobs/master,gerrit: fix pysim, sysmo-usim-tool
Don't attempt to create the CCACHE_DIR and chown it to osmocom-build for
the simtester jenkins node, and more generally all that were not
created with the ansible provisioning scripts. In case of simtester,
there is no osmocom-build user and we don't have the space there to use
ccache.

Fix for:
  chown: invalid user: ‘osmocom-build:osmocom-build’

Related: OS#5848
Change-Id: I339d9ba4ad0c959d7325820eb53bfa1f0e04c164
2023-01-25 12:59:30 +00:00
Oliver Smith a788a8b14f jobs/master,gerrit: add docker_run_ccache
Put arguments for ccache into a new docker_run_ccache variable, and use
it with all projects where it makes sense to use ccache.

Other projects use docker_run without the ccache parameters again:
* osmo_ss7, osmo_dia2gsup, pysim:
  Erlang/Python projects
* osmo-e1-hardware, ice40-usbtrace, no2bootloader, osmo-opencm3-projects:
  Don't use the default docker image
* osmo-gsm-tester:
  Only builds manuals (jenkins-build-manuals.sh)

Jenkins job builder's variable substitution doesn't replace {docker_run}
inside docker_run_ccache when used in cmd, so just duplicate the lines.

Related: OS#5848
Change-Id: Ib6d7f309b972979d3a3bc87f8fcf71f9e930c0da
2023-01-25 12:59:18 +00:00
Oliver Smith 945687b030 jobs/master,gerrit: use ccache to speed up builds
Related: OS#5848
Change-Id: I81f244ca09e660698df617549d70476fc96255e2
2023-01-24 10:56:03 +00:00
Oliver Smith c914967c53 jobs/master,gerrit: use minimal image for arm
Building debian-buster-jenkins on the raspberry pis may take > 1h,
depending on what changed. It has a lot of things we don't use, so build
and use a minimal image with the rpis instead.

Closes: OS#5863
Depends: docker-playground I4fb4b48b233acaef815c4c27ec6f17f12cfe836b
Change-Id: I73e62fbbf93824c0d37963039de4e00f26a43cbe
2023-01-24 08:04:54 +00:00
Oliver Smith 989c47bc91 scripts/osmo-build.sh / ARTIFACT_STORE: remove
This script was supposed to cache already built Osmocom libraries. But
it was only used with openbsc, didn't work as expected anymore (looking
at openbsc-master, it just builds all deps from source without caching)
and will be replaced with logic that allows using ccache in a future
patch.

Using ccache has the big advantage that we can cache all build objects
where the source files did not change, and not just do it on a
dependency level. Oftentimes only few source files change in our
patches, so we can really cache everything else that is not affected
within any git repository and not just a dependency that didn't change.

ccache also does automatic cache size management to ensure a cache stays
within a given size limit.

Related: OS#5848
Depends: openbsc Ib3272feec76b30412ca60dec204255b64e33831b
Change-Id: Id94d6126b476077d57839e4a884621b8c034f0c6
2023-01-23 13:31:08 +00:00
Oliver Smith 48614942c6 jobs/master-builds: use osmo-iuh/master for asn1c
As discussed with Pau, let's build the "osmo-iuh/master" branch of our
asn1c.git repository in jenkins. This branch is what we actually use for
osmo-iuh and "master" should track upstream master.

Related: OS#2435
Change-Id: Ic97a23a175b301e6f42f7ca67deb84dcc3ee3f90
2022-12-27 17:02:38 +00:00
Oliver Smith 4f1201ff06 jobs/master-builds,gerrit-verifications: fix node
Do not set a node for master-builds and gerrit-verifications to run on,
as this leads to needlessly blocking slots on the jenkins nodes.

Each of these jobs is a matrix job with a slave_axis. The matrix job
itself can run on the "builtin" node, as it practically doesn't cause
load - all it does is start other jobs in the matrix (even if there is
only one other job, which is the default). Jobs started in the matrix
job do run on a configured node already, as the slave_axis parameter is
set.

I've just noticed this problem because currently the raspberry pi nodes
are offline, and so the master-osmo-trx, master-osmo-pcu and other jobs
take up lots of build slots just to wait until the raspberry pi nodes
come online and an actual build can start.

Change-Id: I447dd152fcc942ec48d0bcfbadd496e879c882da
2022-12-12 12:23:47 +01:00
Oliver Smith fe8bc324d9 jobs/master-builds: more binaries ssh credentials
Make the binaries_ftp.osmocom.org ssh credentials available to more jobs
that need them.

Related: OS#5798
Change-Id: I4f719c6daba06dcfadd252a4030293bdc0e26337
2022-12-01 10:30:13 +01:00
Oliver Smith 96f25bf519 jobs/master-builds: use binaries ssh credentials
Allow overriding the ssh agent credentials per repository, and use
binaries_ftp.osmocom.org where needed. Use docs_ftp.osmocom.org instead
of 97634b9d-a867-4f6d-825d-1da99813e93d so it's clear what the key is
for. I generated a new one with the new ID.

Fixes: OS#5798
Change-Id: I821968e09aaac3f6f6178de33fc909f81cb4abcb
2022-11-30 12:56:47 +01:00
Oliver Smith 935d742837 jobs/master-builds: pysim: don't use deb9 lxc
Don't require the debian 9 lxc anymore for publishing docs, the ssh key
problem that made this necessary has been solved.

Closes: OS#5767
Change-Id: Ia4ee524db059a978bedc1d92804fb59d7513d2cb
2022-11-28 15:10:31 +01:00
Oliver Smith 310859b21a jobs/master-builds: don't only use debian 9 lxcs
Change-Id: I62bf0b968103724ec676900de6cee65fdb00b9e4
2022-11-28 15:09:33 +01:00
Oliver Smith 40ced5a1a0 jobs/master-builds: pass ssh agent sock to docker
Pass the ssh agent to docker for master builds, so we can publish
manuals and other files generated during the builds. This used to work
with the .ssh directory where each lxc had its own key. But we are
changing that to have the keys in jenkins and use the ssh agent, so it
works without additional configuration when adding new nodes/lxcs (such
as the two deb11 lxcs we just added).

Change-Id: I6dc1fd5d7e81ec135f805562608f06cf03a1baeb
2022-11-28 15:09:33 +01:00
Oliver Smith 6b7741400d master-pysim: use specific node for docs upload
Related: OS#5767
Change-Id: I25d799ccd0609732f7f82034f97881f1c75dcdf8
2022-11-14 13:13:34 +01:00
Oliver Smith ac5bae1efa jobs: pysim: split into job types
Split the test, pylint and docs job types in the matrix to run them in
parallel.

Depends: pysim I5245c529db729e209d78a02ab9c917a90d0e0206
Related: OS#5497
Change-Id: Iea4f15fd9c9f8f36cb8d638c48da000eafe746a4
2022-11-07 08:16:23 +00:00
Oliver Smith ae69a1aa67 jobs: osmo-e1-hardware: split into job types
Split the job, so building the software can be done with the regular
docker image instead of the fpga-build one (that doesn't have the needed
dependencies).

Related: osmo-e1-hardware I26e839de419c6eb86bf2a6250a1adf06b761d1fa
Change-Id: I90fbe72c722e491f41b9607d1a6389964d7e43b4
2022-11-04 11:17:59 +00:00
Oliver Smith a3e83d6d40 jobs/master-builds: add timeout_cmd
Add the default timeout of 30 minutes to each job, just like in
gerrit-verifications.yml.

Change-Id: I2ed80258d5f2fbcd8cf27db74db125d9a52b9988
2022-11-04 11:17:59 +00:00
Oliver Smith 6b17805553 jobs/master-builds: add ice40-usbtrace
Related: OS#6169
Change-Id: I8872f20eabf2975aea602c9e95f66d144f74742d
2022-10-24 17:09:42 +02:00
Oliver Smith b5d65e6dae jobs/osmocom-obs: add job for master feed
Add one new job for building source packages and sending them to
obs.osmocom.org. Trigger it from all master-* jobs.

I've also considered adding one job per existing master job that would
only update one package at a time (master-libosmocore-obs,
master-osmo-bsc-obs, ...). With some additional development effort it
should be possible, and it would make each individual master OBS job
faster. But given that with the current implementation it only takes
20s to 30s for *all* packages if there are no changes, as it compares
git remote HEAD with the version currently on OBS before starting to
clone repositories and building the source packages (similar to
Osmocom_OBS_latest_obs.osmocom.org), it didn't seem worth optimizing.

Set concurrent to false as the triggers from master-builds will likely
cause it to run multiple times in parallel otherwise.

Related: https://jenkins.osmocom.org/jenkins/view/OBS/job/Osmocom_OBS_master_obs.osmocom.org/
Related: https://obs.osmocom.org/project/show/osmocom:master
Related: OS#2385
Change-Id: I53a494f13f81ae837f2d362c54e1bdf13f121db3
2022-10-06 07:44:31 +00:00
Oliver Smith 317e429f9e jobs/master-builds: use jenkins-notifications ML
I didn't receive mail notifications about failing
master-osmo-opencm3-projects jobs. It seems they are not getting
through on the gerrit-log mailing list, searching for jenkins gives no
results:
https://lists.osmocom.org/hyperkitty/search?mlist=gerrit-log%40lists.osmocom.org&q=jenkins

And it seems to be the wrong ML anyway, so change it to
jenkins-notifications.

Change-Id: I15a747411d928055c71603cd4475289a77c8e749
2022-08-30 14:39:01 +02:00
Oliver Smith a0dd1d923d jobs/master-builds: clone from gerrit.osmocom.org
Work around two issues with cloning from https://git.osmocom.org:
* cloning via https from git.osmocom.org is unreliable, leads to lots of
  mails of failed builds
* the cgit mirror of libosmo-gprs.git is out of sync

Related: https://lists.osmocom.org/hyperkitty/list/openbsc@lists.osmocom.org/message/YVYMAC423OJ3FNP52YAX55RDUQXV6FZ2/
Change-Id: I2f345be55f5c7eb42655dc346776ad8891af126d
2022-08-19 14:08:28 +00:00
Oliver Smith 71bafe74d3 jobs/master-builds: archive core, testsuite.log
In case one of the master-buils is segfaulting or has an error in the
testsuite, collect the relevant files and store them as artifacts.

It was asked in the related issue to do this only on error, however
while there's an option to archive only artifacts when a build is
successful, there is not an option to do it only on failure. So just do
it always, the testsuite.log file is typically just a few kb in size.
core files should only get generated on error.

Closes: OS#5642
Change-Id: I91d4b995b16c8e028a5dff19b0e0f09c01d8c8c6
2022-08-17 08:10:12 +00:00
Harald Welte 5455b42405 update git URLs (git -> https; gitea/gerrit)
Unencrypted git:// protocol offers no integrity or authentication,
making it subject to tampering.  Use https:// instead.

https://github.blog/2021-09-01-improving-git-protocol-security-github/#no-more-unauthenticated-git
https://blog.readthedocs.com/github-git-protocol-deprecation/

Change-Id: Ia44e4127ff87a3d4d747225d3258188a0a891f1b
2022-08-13 04:02:51 +07:00
Harald Welte 942f5ef96c master-opencm3-projects: Build from gitea, not git
git.osmocom.org is a mirror of gitea.osmocom.org, let's build from
the actual master repo, not from the (possibly slightly outdated) mirror

Change-Id: I12d090a9ee7fde09892567ada739826484a4a35b
2022-08-12 12:11:05 +02:00
Vadim Yanitskiy ac0b663951 {jobs,coverity}: add a new project - libosmo-gprs
Change-Id: I83e86084e9f7a7431bf5a70c372da1f9ccd28436
2022-08-10 04:39:36 +07:00
Vadim Yanitskiy 33c09f4344 jobs/master-builds: fix libosmo-pfcp related trigger mess
* master-libosmo-pfcp is triggered directly by libosmocore, not
  by master-libosmo-netif, nor master-libosmo-abis, so
** fix comment explaining the hierarchy.

* master-osmo-upf is triggered by master-libosmo-pfcp, so
** it should not be triggered directly by libosmocore.

Change-Id: Ie4a5cb47464e9abfc9d04e63e9e71619f33ffd42
Fixes: Icb75adec886cf1053b80c968fea59e597ed289a7
2022-08-10 04:08:30 +07:00
Oliver Smith 86c77d3958 jobs/master-builds: enable osmo-opencm3-projects
Use debian-bullseye-jenkins to have picolibc-arm-none-eabi available.

Related: OS#6041
Change-Id: Iefff6e3c3b18f4af99079635a45320faaac54e50
2022-07-12 14:33:30 +00:00
Oliver Smith 8424c5986f jobs: stretch -> buster
Related: OS#5601
Change-Id: Ieb2bfc426563e48b9b8cd3910efbebdf09b41f46
2022-07-06 15:20:22 +00:00
Oliver Smith 3577608180 jobs/master-builds: disable master-osmo-opencm3-projects
As discussed in the team meeting, disable it for now.

Change-Id: I4a79a146042d5cf586f5273960a9a2b92b45b1be
2022-06-21 11:39:32 +02:00
Neels Hofmeyr 38d569d45f add libosmo-pfcp
Change-Id: Icb75adec886cf1053b80c968fea59e597ed289a7
2022-06-17 16:33:10 +02:00
Oliver Smith 382aebd040 treewide: rename rpi4-raspbian10 to rpi4-raspbian11
The raspberries have been upgraded to the debian 11 based raspberry pi
OS. Adjust the name to avoid confusion.

Related: OS#5453
Change-Id: I0b2e08b11d83243e81b2bb4412ffcc9bc59821ff
2022-05-02 13:29:50 +00:00
Harald Welte 8349494c9e jenkins-jobs: Add master + gerrit for dahdi-tools
Change-Id: I9c007e070e168bfe6509f50dbc3b4e0846c31356
2022-02-21 21:23:58 +01:00
Harald Welte 5cff7924ec jobs/master-builds.yml: Add master-pysim to publish manual
We only had gerrit build verification for pysim so far, but no 'master'
job that periodically builds/tests master (and publishes the manual).

As a reult, the pySim manual was still the original version from April
2021, while the code has of course progressed quite a bit in git since.

Change-Id: I4dce05cdb5f2c574256378d5fb66cff1c329c141
Closes: OS#5271
2022-02-09 17:48:04 +01:00
Oliver Smith c04fb387ea jobs/{master-builds,gerrit-*}: add osmo-bsc-nat
Related: SYS#5560
Change-Id: I240cb614bf3905d04bccc6a00c72567a2ad722d8
2022-01-31 14:05:34 +01:00
Harald Welte 8a3cd203f8 jenkins-jobs: add master build for opencm3 projects
Change-Id: I95f84079478ce57d8d5c0cffd71bc67e1605e68e
2022-01-18 14:58:41 +00:00
Pau Espin 702fd8ff94 Add new repo osmo-hnbgw (nightly) to build jobs and scripts
Change-Id: I2fdbd651e4b50191e1a67e183590de99d6366ca5
2022-01-05 11:39:41 +01:00
Pau Espin 7f89d91666 jobs/master-builds: Place osmo-hnodeb properly in dependency tree
Change-Id: Id66a8be3f665ff4dc88a754d072939fbda16d719
2022-01-04 19:22:37 +01:00
Neels Hofmeyr 0c5869f359 jobs: add osmo-upf (gerrit, master builds, ttcn3 tests)
Change-Id: I43cd55c9395f2c706369afe1a9a7f475be47339f
2021-12-28 15:57:54 +01:00
Pau Espin 2146640769 Add osmo-hnodeb to ansible/jenkins/coverity setup
Change-Id: Ie4b03aefeda13d216706bd648145689cf2ef93bb
2021-10-25 11:06:48 +02:00
Harald Welte 16f324618f master-builds: turn git_base_url actually in a URL, not just hostname.
Let's include the 'protocol' part itno the git_base_url variable, so it
actually becomes an URL, not just a hostname-with-path-prefix.

This way we can keep using git:// for osmocom and use https:// for
github and sysmocom.

Change-Id: I7befd1dd1445e0aa4d42434dbc8e001f904ae196
2021-05-18 11:55:53 +02:00
Harald Welte 51e5b234f4 master-builds: Use https when linking to git repos from description
Change-Id: I3a0a3d779ce456ce359e33bc1305f63271deb87e
2021-05-18 11:53:35 +02:00
Harald Welte d793650519 some more git.sysmocom.de https (+path) changes due to gitea migration
Change-Id: Ie1599b356932ffa83d70e08b96179b7ca4909b14
2021-05-17 08:16:34 +02:00
Oliver Smith 463a6cc012 jobs/master,gerrit: run osmo-{bts,trx} in docker
Build both of them in docker, like most other projects.

Depends: docker-playground Ieec31fd6a2034c4430be81afd1d370816cd577d5
Related: OS#5055
Change-Id: Ifc11730192b852d3760a31a561efc61a1a853674
2021-03-09 09:30:27 +01:00
Oliver Smith 8c48d2020a jobs/*: update references to rpi4 nodes
Use the new label that matches all three rpi4 nodes in master-builds and
gerrit-verifications (so the builds can run on any of them). Use the
names of the three nodes in update-osmo-*-on-slaves, so all of them get
updated.

Related: https://jenkins.osmocom.org/jenkins/label/rpi4-raspbian10/
Related: OS#5055
Change-Id: I5b2af801baeb510e7784d6bcd7cabfda4962af0c
2021-03-08 15:44:11 +01:00
Oliver Smith 2b22fa2f5a jobs/master-builds: libosmocore: add triggers
Add missing triggers for osmo-gbproxy, osmo-trx.

Related: OS#4992
Change-Id: I1bc590cc9560b1780cccd99f7ca86700bd9a6ad9
2021-02-11 12:28:24 +01:00
Harald Welte 2933da3810 master + gerrit jenkins jobs: Add osmo-gbproxy
osmo-gbproxy is moving to its own reporitory

Change-Id: Id29c83bdcd9b626bb7920738c8b1f945ef7f3671
2021-02-03 08:38:06 +00:00
Oliver Smith 9dadec3209 jobs: remove duplicate docker_run
docker_run was duplicated for osmo-e1-hardware and no2bootloader, so the
'-e PATH' line could be removed from the global docker_run. It was
overriding the PATH, which then did not contain the path to the compiler
toolchain anymore.

This workaround is not needed anymore since de5aa17d6 ('jobs: don't
overwrite PATH in "docker run"').

Related: OS#4911
Change-Id: I97a4add17d9fa1bd28ab0ceb054b9a8d948b6f86
2021-01-13 12:40:18 +01:00
Oliver Smith 212e43fa1c jobs: update OSMO_GSM_MANUALS_DIR
Use new location inside / outside docker, where the repository was
cloned already. So it does not need to be cloned during the job.

Roll out: make sure that the docker images are already built! (or let me
merge it)

Related: OS#4912
Depends: docker-playground Id402e0ea372b5ca8a6c8f6f5beb190544c888207
Change-Id: Ibe91a613162687589e006cba99193606fb8a3eb9
2021-01-13 12:40:18 +01:00
Oliver Smith 24a5609f30 jobs: add missing OSMO_GSM_MANUALS_DIR
Add the variable to projects that don't use docker at all or overwrite
docker_run instead of using the global variable that has
OSMO_GSM_MANUALS_DIR defined.

Related: OS#4912
Change-Id: I65102655b4b3e907a0b0de8026f8f9af76281f90
2021-01-12 13:54:55 +01:00
Oliver Smith de5aa17d6d jobs: don't overwrite PATH in "docker run"
Don't mount $HOME/bin to /build_bin, and don't overwrite PATH to include
/build_bin anymore. This isn't needed because the scripts are installed
to /usr/local/bin inside the docker images now.

Depends: docker-playground I0820f13cd740f7d4a8999d279cef6ae293a67d81
Related: OS#4911
Change-Id: I45bd7ea56849dab839a98cfd52806f7cd288094e
2021-01-12 09:15:45 +01:00
Oliver Smith 4cbc445616 osmo-build-dep.sh: don't build osmo-gsm-manuals
Save time by only cloning the repository, and not running autoreconf
-fi, ./configure, make and make install. Especially the tests during
make took up significant time, that slowed every project depending on
osmo-gsm-manuals down while being built through master-builds or
gerrit-verifications jobs. Set OSMO_GSM_MANUALS_DIR to the clone
location.

This is an interim measure, I'll submit more patches soon that remove
the 'osmo-build-dep.sh osmo-gsm-manuals' calls from all projects.

Change-Id: I5238cf3f93ded97ed2b44d27868123a646e122dc
Related: OS#4912
2021-01-12 09:14:38 +01:00