Hi everyone,
the manuals have been moved to the project specific repositories. I'm wondering what's the best way implement gerrit build verification and publishing the manuals for osmo-gsm-tester.git.
With typical Osmocom projects, we have gerrit-verifications.yml and master-builds.yml, which build the projects when patches land in gerrit and when commits are merged to master. The latter is also able to publish the generated PDFs. No osmo-gsm-tester related jobs are created in both configs so far. Instead, there is a section in osmo-gsm-tester_runner.yml, which generates the osmo-gsm-tester_gerrit job.
This osmo-gsm-tester_gerrit job works differently than the gerrit-verifications and master-builds jobs; they do not seem to have the osmo-ci scripts available (which are used to build and install dependencies and to clean up the workspace). The way I've implemented building and publishing manuals in the other projects makes use of both scripts (the dependency that gets installed is osmo-gsm-manuals, which has the shared manuals content).
So far, the osmo-gsm-tester_gerrit job runs a few smoke test to make sure that the osmo-gsm-tester is not completely broken. It does not do a full run, as this would take 15 hours.
I see the following solutions now: a) remove osmo-gsm-tester_gerrit and add an entry in gerrit-verifications and master-builds instead. Then implement manuals building and publishing just like in the other projects. b) extend osmo-gsm-tester_gerrit to build manuals, without the osmo-ci scripts (so it's maybe 10 more lines of shell code), and create an entry in master-builds for publishing the manuals (together with a new jenkins script, e.g. contrib/jenkins-publish-manuals.sh) c) do not do build the manuals in osmo-gsm-tester_gerrit, but keep that job and add an *additional* job in gerrit-verifications just for building the manuals (also add the same job in master-builds to build and publish the manuals).
Regarding c), I am not sure how this would look like in gerrit. Two jobs would get triggered for each new patch, but jenkins should only give the verification +1 if both jobs ran through - can it do that?
Regards, Oliver
Hi,
osmo-gsm-tester jobs are set up different because the nodes expected to run them are quite specialized: they need a different set of dependencies and HW attached to it than a regular "osmocom builder".
In osmo-gsm-tester, we build sysroots of different osmocom projects which will later be packaged into a "trial" used by osmo-gsm-tester main unit to run the tests. This part of building the osmocom project sysroots (osmo-gsm-tester-builder.yml) can be done by a normal osmocom jenkins build node, and it is actually done by them.
The osmo-gsm-tester_runner.yml require to be run in a "osmo-gsm-tester main unit" node, with different dependencies and HW attached as explained above.
What I would do: * Add a new "master-osmo-gsm-tester" job together either together with other "master-" jobs or inside osmo-gsm-tester-builder.yml, because those nodes should more or less have the same dependencies. This "master-osmo-gsm-tester" needs to only build + publish the pdf to the FTP server. A new script can be created for that in osmo-gsm-tester.git/contrib/. Feel free to depend on osmo-ci or copy whatever is needed as you see makes sense.
* Extend osmo-gsm-tester_gerrit job (which calls osmo-ci.git/contrib/jobs/osmo-gsm-tester_run-gerrit.sh) to also build the manuals in osmo-gsm-tester.git but no publish them. Since this job is run in an "osmo-gsm-tester main unit" node, that means you mayu need to update the ansible files in osmo-ci.git to install required dependencies onto those nodes. See osmo-ci.git/ansible/roles/gsm-tester/.
As a reminder, this is the job actually running the full set of tests in osmo-gsm-tester main unit (Prod setup): https://jenkins.osmocom.org/jenkins/view/osmo-gsm-tester/job/osmo-gsm-tester...