I inadvertantly pioneered the single-artefact deployment in our company. That means once the artefact is built, it will work in *any* of the environments. We have either per-environment files to override production defaults, or a parameter to tell the artifact which environment it is.
Operations loved this idea. Most other development groups were creating one artefact for Testing, then built another for Staging, then a third for Production. Many bugs were released into Production because the code artefacts always had unique code. Ours didn't. :-)
I learnt this in a previous employer where we had to provide and support installs for a number of clients. We had releases so frequently that it was very annoying keeping the customisations, so I came up with a way we could leave the customisations out of the way of a code drop. But what really sold it was that it made it so much easier to support multiple development environments, too!
Wade.