Buildtree replacement proposal
Problem to solve
buildtree was introduce to ease CTA development and testing in locally running CI. The idea is that the developers compile CTA code and buildtree will populate CTA binaries by creating plenty of symlinks to the developer generated binaries and libraries.
double buildtree was introduced later to allow the same symlink based workflow this time for EOS4 development. This second step doubled the complexity of the single buildtree workflow.
The current issue is that adapting double buildtree for EOS5 explodes again the complexity and this approach won't scale any further: think about possible restic developments or dCache.
In addition buildtree adds complexity in the CI containers definition: adding conditions in the container scripts that complicate CI code modifications and testing. Indeed CI developers are not likely to test buildtree and even less likely to test double buildtree environments...
Stakeholders
CTA developers, EOS developers developing some tape specific code they need to test, dcache developers...
Proposal
We need to remove the buildtree approach and replace it with something that is less intrusive for the main CI code.
One simple way to replicate this is to move developers workflow to one that is closer to CI:
- change source and compile code
- generate and publish rpms
- instantiate a local CI kubernetes namespace that will consume these rpms
Here is a mock up of the proposal:
All this can run on a laptop or any openstack dev VM: the developer should only interact with the local folder with his favorite editor. Everything else should ideally run inside containers: CTA and EOS compilation are taking place in gitlab inside containers.