In my experience as a developer I have observed various release processes that are used to get code to production.
In my opinion the most effective and efficient release process within an Agile environment is one that is automated and is controlled by either a QA (Quality Assurance) Tester or a PO (Product Owner). Both these individuals have a strong understand of the acceptance criteria and customer requirements, hence they would be best suited to deploy a piece of code to production.
I believe the entire process should be automated including rollbacks and configuration changes and should be as seamless as just clicking a button.
The steps should be as follows:
- Developer finishes work and deploys to a test environment.
- QA signs off work according to COA (conditions of acceptance) and deploys to an intermediate environment, e.g. hidden live, stage (whatever)
- The QA and PO then review the work again on the intermediate environment and deploy directly to production
That entire process could take less than an hour! Meaning work developed at the start of the day could be in production by the end ☺