Deployment means pushing a specific version or branch to another server.
They usually happen in succession, but can be run independent of one another for specific workflows.
Continuous integration should handle continuous deployment of green builds. dev should be pushed to staging, and master should be pushed to production.
A release should be done from the dev branch with a clean working directory.
Once a release is confirmed in staging, dev should be merged into master (manually).
Semantic Versioning should be followed for libraries. Apps can follow Semantic Versioning or use a UTC timestamp (i.e., 20150914175950, like Capistrano uses), whichever makes more sense.
dev
should be pushed to staging, andmaster
should be pushed to production.dev
branch with a clean working directory.dev
should be merged intomaster
(manually).20150914175950
, like Capistrano uses), whichever makes more sense.