Release Management in Visual Studio 2013

    If you are developing complex systems, then you probably thought about automating the steps associated with the release. Imagine that you are creating a complex multi-component website, the infrastructure of which is divided into several servers.
    A very tempting scenario is when your continuous integration and build process continues with the automatic deployment of this site. At the same time, certain conditions and criteria are met, for example, it is required that a build that is ready for deployment in an operational environment passes all tests and is approved by responsible people from the team. Inevitably, a number of points arise that complicate the assembly process; you have to create deployment scripts. If we also take into account the approval process, it becomes clear that such automation can be quite time-consuming. Fortunately, Team Foundation Server 2013 includes a number of tools that can greatly simplify release management.

    By the way, the ALM Summit Russia conference will be held on February 6in the framework of which we will talk in detail about the capabilities of Team Foundation Server 2013 in managing releases, and readers of habrahabr have the opportunity to take advantage of a 50% discount, for this it is enough to use the promo code alm14_VS .

    Release Management Architecture


    The new toolkit that came with Team Foundation Server 2013 was developed by InCycle. This product was previously known as InRelease and has proven itself to be excellent. The general architecture is presented below:

    • Release Management Server. A server component, which in turn consists of a database, an approval process controller, and a dispatcher that synchronizes activities with target servers.
    • Release Management Client. The client component, which is of two types, is a web client and a desktop (WPF) client. Testers interact with these clients, and the managers involved in the approval process.
    • Release Management Deployer . A deployment automation component that installs on target servers. It should be noted that Release Management Server does not require any access rights settings on clients, since the deployment process is based on pull requests from the client.

    Based on this architecture, a wide variety of deployment options can be built, including web applications, desktop applications, and multi-component complex systems.

    Manage Deployment Steps


    One of the most time-consuming parts of release automation is the deployment of assembled product components. Depending on the architecture of the system being developed, this process may consist of many steps that require fine-tuning, and the preparation of all kinds of scripts. Their further verification and debugging can be very time consuming. If you use release management components in TFS 2013, then you have ready-made scripts and components that can greatly facilitate this task.


    These components allow you to manage virtual machines without running scripts, start processes, copy files, and much more.
    In addition to this, these components have rollback mechanisms, in case something went wrong and failures occurred during the deployment process. Settings allow you to provide steps that will return the state of the systems to the original.
    Setting up the release preparation processes and deployment steps is carried out in a visual editor:


    In this case, you can configure the target deployment environment in more detail using Actions, for example, create a virtual site in IIS, create a new virtual machine in Azure, and much more:


    In addition to this, there are release configuration management components. For the test environment, one set of configuration files and parameters will be prepared, for the production environment another. This mechanism works through the tokenization of configuration files, and depending on the target environment, the necessary parameter values ​​will be substituted into the file.

    Release Approval Processes


    In the process of continuous integration of changes, many builds are created. Some of them may not satisfy the acceptance conditions, and some of them will eventually turn out to be those assemblies that have the right level of quality and are ready for deployment in an operational environment. Release management tools provide approval mechanisms. The release preparation process is formalized and divided into several stages. At the same time, at each stage, there may be an approval phase based on criteria, for example, passing unit tests, or by the responsible person.


    Such a mechanism can significantly reduce the risks of deploying a raw build in an operational environment, and you can always track the progress of each stage.

    Once again, I would like to note that at the ALM Summit Russia conferenceA special report on the topic of release management will be prepared, within the framework of which it will be described in more detail both about the capabilities of this toolkit and its configuration. If you want to attend this conference, be sure to take advantage of the current 50% discount on tickets with the alm14_VS promotional code . This will give you the opportunity not only to receive first-hand information but also to communicate with experts, ask additional questions. See you at the conference and more releases ready for operation!

    Also popular now: