So what exactly is a staged deployment environment? It is basically an industry standard practice of separating your development, testing and production systems.
When using Git with this model you can create development, testing and production repositories and move your code between them as it moves through the stages. This helps to make the whole deployment process a lot easier to manage.
|Development||Create and modify code||
||Coding is performed by a developer using Iguana on a desktop machine. The developer will commit changes in the Iguana builtin repository while working on the code. Once he is satisfied that the code is complete he will export changes to a shared development repository.
Some code testing will usually be performed at this stage to ensure it integrates correctly with (and does not break) other code. Any testing at this stage will have a technical code based focus and will be performed by another developer, or someone with a development background. Automated backtesting can also be performed.
Once the code is working correctly in the development environment it can then be exported to the testing repository.
Note: Some technical or backtesting can be performed at the next stage there there is no hard and fast rule, it is really what works best in your environment.
|Testing||Test code to ensure that if performs according to specification||
||More thorough testing is done at this stage, with a much more business and user oriented focus. Basically you want to make sure that all the data is processed correctly according to the business requirements.
Testing at this stage is often broken down into three steps:
Once the code passes all the required tests then it can be exported to the production repository.
|Production||Production code to keep track of code releases||
||The production repository is used to track code releases. Only the production ready release candidates should be stored in the production repository.
To complete the release process the code will need to be copied to the live Iguana production server.
Note: Releasing code to live servers occurs after it is uploaded to the production repository, it could be days or even weeks later depending on business requirements.