I have a ROS project for which I'm looking to use Jenkins to set up a CI system.
The project has a large number of dependencies which take a long time to build (they can't be installed on the build executor machines), so we typically build them once, then let Catkin (ROS's build system, based on CMake) use the cached artifacts on subsequent builds.
The Jenkins setup we currently have does this:
- Clone repository at commit
- Create an empty Catkin workspace
- Clone and setup all our dependencies
- Build everything together
- Run tests
Due to building all our dependencies, this takes several hours.
What I'd like to do is this:
- Clone repository at commit
- Move it into an already built Catkin workspace containing all dependencies
- Build just our project
- Run tests
I was thinking of setting up a Docker container with all the dependencies ready to go, and then just running the build in that. Is that a typically recommended approach?