The purpose of Continuous delivery is to be able to quickly deliver customizations and extensions of your project to production, without interrupting the work of the Live environment, without having downtime, or without the need to manually merge configurations or databases. You ensure your application functions as expected using thorough automation tests on a production-like environment. Propelling the changes through the environments is automated, which makes it more reliable.
The main goal of the process is that after every development iteration, you end up with the same setup, which you started with - code is the same on all environments, the latest database is on the Live environment.
The following chart displays a simplified overview of a Continuous delivery process:
Generally, in a Continuous delivery process, you have the following environments:
- Development environment
This is the environment where you develop your project. Usually it integrated a source control system. There you develop, extend, and configure your project and, then, build it and run unit tests and integration tests.
- Test environment
This is the environment where you only run tests, such as UI automation tests, performance and security tests. You can change the test, but not the code in this environment. To perform the tests, you can create and delete content, but if you need to fix something in the code, you need to go back to the development environment.
- Live environment
This is the environment that displays your public website. This is where the backend users can create content, change runtime setting, manage websites, but cannot change the code and the configurations of the project. This is the environment where the frontend of the website is accessible to public users.
If you need to change the code or the configurations, you need to go back to your development environment.
You can setup a Continuous delivery process for new, as well as existing projects. You can setup the process, regardless of how many existing environments you are currently using, and regardless of where your project is currently deployed or where you want to deploy it. You can also setup the process with a SiteSync environment, used to synchronize content.
Your Live environment can be located on various locations, such as Amazon Web Apps, Azure Cloud Services, on a Virtual Private Server, etc.
For all available deployment options, see Deployment.
To setup the Continuous Delivery process, you must first setup your development environment, then copy the code to your live and test environments, using export for deployment. Afterwards, to protect the live and test environments, you should make its configurations read-only and configure the SiteSync to synchronize content only. You must also use the Auto-storage mode of configurations on all of your environments, which takes care that environment configurations are delivered easily between environments, while runtime setting are not overwritten.
Recommended environment settings
In order for the Continuous delivery process to work, your environments have to be set up accordingly.
The following diagram demonstrates the required settings:
For more information, see Deployment mode.
For more information, see Storage modes of configurations.
For more information, see Read-only mode of configurations.
For more information, see Configure SiteSync for Continuous delivery.
For more information see Export and deploy code changes.
Determine your current setup
Before you setup the Continuous delivery process, answer the following questions: Do you want to use SiteSync to synchronize content between your Staging and your Live environments?
Depending on your answers, you can have the following setup scenarios:
- Standard Continuous delivery setup
- Setup Continuous delivery with SiteSync