Continuous integration(CI) and continuous development (CD) are the glue that holds together the three other deeply related development practices – Agile, DevOps, and a client focused testing strategy. It was essential for development and testing to be fully integrated, allowing code to be written collaboratively and defects to be caught early.
As we adopted AWS infrastructure early on for development, we started developing CI/CD pipelines to automated between DEV, QA, UAT, and PROD. We had initially adopted GoCD as our CD tool of choice but felt that it left a gap in implementing CI in our process. Rather than bringing another tool in the mix, we fell back to the tried and tested Jenkins to replace GoCD. Jenkins provided us the flexibility, and both our development and QA teams benefited from this choice – development running at a quicker pace with a fast feedback loop between the time a code is committed before they can move on to the next feature or bug.
We use Docker for deploy instances since Docker works in the cloud or virtual environments and supports both Linux and Windows. As soon as our developers submit code to BitBucket, a Jenkins pipeline is triggered for integration tests, and if passed, the successful build images are added to the appropriate Docker registries.