|
I’ve been working with Magento in a live production environment every since it went public. It’s a fantastic product and I’ve been very happy with it in all aspects, but I have not found a good policy/procedure for deployment and code management. I thought I would look to the community and/or some of the core developers for insight and advise on this topic.
I use http://www.beanstalkapp.com for svn repository and plan to start using it’s ftp deployment features (currently I use rsync to deploy). We do a lot of custom code and I place all of that custom core code in app/code/local to avoid losing code on any upgrades, and I use three different environments to help with stability - development, test and production environment.
However, my main concerns and questions are with the following:
1. When upgrading Magento is it important to go through the same upgrading process for each separate environment - development, test and production environments? What’s a good policy/procedure for the upgrading process?
I assume that upgrading Magento could possible change both the core code and the database (and also some theme code depending on the upgrade). If this is the case then I believe the answer to the question above would be “yes”.
That being said, what part of the app do I need to keep my programmers and deployment tools away from? Is this just the core code? Should I place the entire app under my own svn repository and still use the magento upgrade process in each environment to upgrade?
2. I have similar questions and concerns when installing extensions in magento. Is this process very similar to upgrading Magento?
3. How do I manage the config files - local.xml for each environment? I assume this may also be similar to upgrading Magento in that each environment may need to initially be setup separately and manually and then upgraded from the repository without changing those config files. Are there any other config files that I need to be careful not to change on a deploy?
The main question at hand here is how do we properly manage code and the deployment process with multiple environments without messing up core code, the upgrading process and extensions.
|