4 ms·
Mono repos can be useful if you have different services that are highly dependent on each other. This lets you package releases in a simple way by just tagging
by dinkleberg 6y ago
Mono repos can be useful if you have different services that are highly dependent on each other. This lets you package releases in a simple way by just tagging the repo. That tag/release gives you the exact version of all the components that you need.
But CI becomes substantially more complicated. You have to figure out with every commit what actually changed and based on that change what needs to be tested and built. You don’t want to run a build of all components if you only changed a small piece of one component.
- methyl 6y ago> You have to figure out with every commit what actually changed and based on that change what needs to be tested and built. I feel this problem and I wonder, is there any ready-made solution for that?
- gravypod 6y agoGoogle, Twitter, and Facebook have open sourced their solutions to this. Bazel, Pants, and Buck. Each have some rough edges but I'm currently migrating a bunch of stuff to Bazel and the workflow and tooling for it is pretty amazing.
- AlphaSite 6y agoBazel? Gradle? They’re good at figuring out the minimal changeset and caching very aggressively.
- minor3rd 6y agoWe just build and test everything every time. Maybe it costs us more $$$ on CI, but it costs far less in developer time. That being said, I mostly work at startups and larger companies will certainly cross a threshold where this isn't feasible.
- user5994461 6y ago>>> larger companies will certainly cross a threshold where this isn't feasible. Nope. Worked at the largest US bank that happens to be mono repo. They had compute grids with thousands of cores running tests 24/7. It's not sizable compared to the costs of the developers writing and maintaining software.