Hi,
- build all projects, or at least all projects that have dependencies on other [osmocom] projecst inside docker, not some on the build slave and some in a container
+1
- have a process by which the container images are re-built. Right now those appear to be still jessie-based, for example. It's good to test both jessie and stretch, of course, but doing some project builds on either of the two doesn't really ensure compatibility for both versions. We should either build everything on both stretch and jessie, or one defined version.
I thought there is a defined process already. All Jenkins jobs generated by gerrit-verifications.yml and master-builds.yml use the "osmocom:amd64" image, which is defined here:
osmo-ci.git/docker/Dockerfile_osmocom_jenkins.amd64
It gets rebuilt automatically for all buildbots, whenever changes to osmo-ci.git are made: https://jenkins.osmocom.org/jenkins/job/update-osmo-ci-on-slaves/
With a few more details, I had documented the process as I understood it here: https://osmocom.org/projects/osmocom-servers/wiki/Jenkins_build_verification...
- ensure that gerrit and master builds run in identical environments. This reduces the risk of patches passing gerrit but failing in master.
Assuming we use Docker for all builds, then this should be solved (as we are using the same image already).
Regarding the "deployment" of artifacts like pdf manuals or binary firmware builds, I would say it's best to move that into a separate post-build action inside jenkins, one that happens outside e.g. the docker image. This would mean we mount some "output" directory from the build slave into the container where the artifacts are stored to persist beyond the "--rm" docker container.
From there, we should be able to scp/rsync/... the artefact to the [ftp] server, using e.g. SSH agent forrwarding with credetials provided by the server.
Sounds good. (Implementation details: the entire build folder is actually mounted inside Docker, so it is writing all build results to the host system. But we clean it up with "osmo-clean-workspace.sh" from osmo-ci.git/scripts before and after each build, hence the built pdfs do not remain. But I'm sure we can find a way to keep the artifacts, no need to discuss that here in detail.)
Regards, Oliver