I'm working on a project that consists of several different services in different languages (a React webapp, a Scala backend, some Python stuff etc). I currently have each of these services in separate repositories on Github, and build them separately using CircleCI.
Some people seem to promote mono repos. As I'm planning to migrate the code over to Gitlab I wanted to take the opportunity to understand how this could be made into a monorepo. I have three questions:
Assume I put all the services in the same Project (Gitlab repos are called Projects right?), can I then get the CI/CD system to build each component independently?
Can I have Gitlab emit several images into my container registry?
Assume I commit a change to one service, and want to make sure it works with my other services before I deploy, how do I best setup integration tests that condition the success of my commit on the interaction with my other services?
potentialhigh cost (often raised, I know) should also be compared with the cost of not shipping a release because of the issues found or shipping a faulty release. Your compromise may be acceptable, but that depends on the project, its scale, the quality of the team, etc. I agree with case-by-case evaluation. Reliability can be achieved even without running a test for each and every change, but only with commit conditioning by pre-commit testing (rather than post-commit, traditional CI). – Dan Cornilescu Nov 13 '17 at 16:21