Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Version control and release management

Are there any so-called "version control systems" that also support actual release management / deployment ?

The mainframe shop I used to work for, had an automated release management tool that did not only control concurrent modifications to sources, but that also took care of running compilers, precompilers, database bind utilities etc. etc., making it our fully automated deployment tool as well.

My understanding is that "more modern" version control tools support only the source management part. Is that understanding correct ?

like image 806
Erwin Smout Avatar asked Nov 11 '09 12:11

Erwin Smout


2 Answers

Version control has little to do with release management or deployment, so it makes sense that the VCSs don't try to do this as well.

What I've seen in this area are build or Continuous Integration (CI) servers. These listen to changes in the VCS, do a fresh checkout on any commit and then try to build everything. So they integrate the VCS and the build tools, collect the logs from them and present everything in a nice web UI.

This way, every tool can stay simple.

[EDIT] Added value of a CI server:

  1. It can analyze the output of your build scripts and present an overview in a mail or a web page.

  2. It makes sure that all tests are run after a commit. No more "but it runs for me".

  3. Some of them support deferred commit (it will only commit changes to the VCS when all tests run)

  4. It can run builds on several projects which depend on each other.

like image 154
Aaron Digulla Avatar answered Sep 17 '22 21:09

Aaron Digulla


This is absolutely incorrect. Any modern version control tool supports both pre and post commit hooks, at which point you can run any code you want.

In subversion, we use the post-commit hook to deploy a copy of the app to the dev server every time a developer checks in code.

In our actual production servers, we have code that verifies and then deploys stable minor version tags as they are committed to the repo by the release managers.

like image 21
Paul McMillan Avatar answered Sep 18 '22 21:09

Paul McMillan