All the individual products in our organization use continuous integration development practice. However, all the products are built by different teams (with different skill-sets) under Sprints that do not share the same boundaries.
Some of these are complete products by themselves. They also are bundled together in a suite and so require integration testing. How do we apply continuous integration practice on a grand scale to this problem?
We ended up making these decisions:
- The individual product team (with “inward” dependency) shall take the responsibilities of writing/maintaining the integration test cases.
- We decided to push the individual product builds into this environment every week, mostly and also have the flexibility of being able to push the builds on demand, if necessary.
- Start with a basic set of integration test cases and build upon them to keep it simple/Agile.
- Start with manual steps to deploy these individual product builds into the integration environment and then slowly build a set of scripts to automate this.
- Eventually, we should have a “push-button” integration environment where individual teams can push a button or set up rules to promote their builds in to this integration environment.
- Decide that all teams should eventually move to a single source repository.
- Initially, to keep it simple, all of the individual product teams will push only binaries into this environment.
- We agreed upon a simple defect tracking process for reporting/escalating integration testing bugs.