How do i setup continuous integration in a multi team distributed environment without running into issues of broken builds
There should be a CI server accesible by all teams. It's understandable that due to the timezone difference, broken builds may cause issues. When one team breaks the build, the other team might not proceed with that issue. So in order to have a healthy CI environment, some rules should be set.
- Never leave the office if a build is in red (i.e. it is broken, some tests are failing)
- Everyone is responsible for the commits. So before pushing the commits, the committer should make it perfect by checking if tests are passing, if the commit message is in standards, etc. I advice you (or someone else) to monitor CI builds closely and give immediate feedback if the rules are not obeyed.
How do i plan for the frequently shippable increment Sprint on Sprint basis of all three projects combined
I collected my opinions as listed below.
- Product owner should be capable of managing the product and the PBIs.
- You can create builds for deploying products of the 3 projects by checking the dependencies. We have such kind of builds and these should be designed with the help of the teams working on those projects.
Any other things i need to watch for or take care of for setting up sucha na environment. My idea is to make it first time right from process standpoint (at least most of the process)
I think continuous integration, continuous builds, 10-min build rule, continuous deployment, emergent architecture, test driven development, multiple enterprise environments (like uat, test/qa, prod environments) are the key concepts you should dig into. The topic is quite wide, but it is achievable if you consider all these topics. There exists very satisfying information in internet about these concepts.
I hope that helps.