The Ocean pipeline implements a wholly integrated workflow. It provides the full spectrum of synergies typically associated with a modern, agile way of working.
The pipeline consists of three or four main stages or areas:
- The Dev Environment
- The Continuous Integration Environment
- The Staging Environments (optional)
- The Production Environment
Code is pushed from development to integration to staging to production according to specific rules and principles, and code is deployed in a wholly automated way.
This makes continuous deployment possible. As soon as a back-end service or front-end client passes all Continuous Integration tests, it is automatically deployed to its environment. The production environment always deploys its branch, as it is fully tested.
It should be noted that Continuous Deployment done in this fashion deploys each service or client separately as they are changed and tested. The whole stack of services and clients is never deployed at the same time.
Deployment to staging and production for each separate service or client server is triggered manually (through a simple
git merge command). Chef automatically takes care of updating the infrastructure and the deployed software on all machine instances as necessary, without any downtime required.
It should be pointed out, however, that test coverage must be high in order to deploy continuously, otherwise the correctness of deployed code cannot be guaranteed. If test coverage isn't complete, manual testing and quality assurance need to be carried out before releases can be triggered manually.