Problem:
Our client had a manual CI/CD process executed on every developer machine. The problem was the long compilation times and some of the tools had a lot of manual steps also some tools required a license which was shared amongst the team, which created synchronisation problems. They were using an older type of version control, which was very slow.
Solution:
It was a requirement, that we keep the incremental build and the ability to manually modify the source tree, without checking it in into version control. Our solution was to build them a build farm, where the compilation can run on a highly parallel bare-bone, which also solved the problem of synchronising the license.
We created a custom script for them to access all the Jenkins functionality through their make commands, this allowing them to continue using the command line instead of initiating/cancelling a build on the Jenkins page.
We created a version control cache on the build farm, to fasten up checkout times and we have built a custom script, which checked their local directory for differences compared to their base version, stored in the repository and automatically synched those items into their build directories on the build farm. We have also made it possible to deliver the artifacts, made by the build process, back to their developer machine.