Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

One thing that I've learnt in my short dev career is that there are best practices (like TDD) and then there are actual practices that occur under pressure, or through budgetary/time constraints.

I'm working in a small PHP dev team on a project using Zend framework. The project has the potential to demand a lot of scalability, and so we are trying to establish a good development environment to promote ease of development long term. Architectural patterns/practices aside, I'm looking at trying to automate deployment, checking code quality through svn hooks, possibly even setting up a CI environment.

So I'm interested in hearing people's experience of deployment practices. I've checked other examples as they pertain to other languages - but I'm ideally looking to hear from people who have worked in a PHP/Zend environment

To make the question less vague: What are people's experiences of using deployment systems like phpUnderControl and rSync?

share|improve this question

closed as too broad by gnat, MichaelT, GlenH7, ChrisF Mar 15 '14 at 18:56

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

rsync is great for ensuring that files in a given folder on computer A are identical to files in another given folder on computer B. – user1249 Aug 6 '11 at 9:48
up vote 7 down vote accepted

If you are setting up the development processes for a team, you need to make the official way to do it so easy that no one would even conceive of doing it any other way.

When the pressure is on, automated builds that run the unit tests, create the release disks, set up the QA environments just make life easier for everyone, and make it that much harder for a bug to slip through, and for bugs to appear late in the product development.

share|improve this answer
+1 for "make it easy". Build servers are nice. – user1249 Nov 30 '10 at 17:57
I agree, and looking back at my answer, I didn't even mention a separate build server. – Michael Shaw Nov 30 '10 at 20:11

Basically it needs to be easy (if everything is acceptable) to deploy. This usually means, that after a checkin the system rebuilds automatically. If ok, the user can at a single click cause the test server to update to the new version.

You should be able to roll-back as easy.

The easier to use you can keep it, the happier people will be.

If at all possible set up a CI. Hudson Jenkins is nice, but there are plenty others. You WILL appreciate it quickly.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.