Migrating Release Management 2013/2015 to Release Management Service

Posted by Daniel Mann - November 25, 2015


A lot of stuff has happened in the wonderful Microsoft world in the past few weeks. If you weren't aware, Visual Studio Online is now Visual Studio Team Services! And in VS Team Services, the next-gen Release Management Service is now in public preview!

If you're starting to look into the Release Management Service, you'll probably note that it's a bit different than the old agent-based release model. The fine-grained actions like "Configure Web Site" are gone, instead allowing you to choose a more coarse-grained deployment model (ex "Run PowerShell script" or "Run Chef cookbook"). So, how are you going to migrate your old-style agent-based releases into RM Service?

Well, I was thinking about exactly this problem earlier this year, and I thought to myself, "Fundamentally, all the agent-based model does is just invoke command-line utilities...". That led to the thought "We can extract the utilities and the commands from the RM2013 database and turn them into PowerShell scripts!". That led to a bunch of coding, which resulted in a rough proof of concept of a migration utility.

Around the time I was doing that, the ALM Rangers were kicking off a migration tooling and guidance project, so I donated my proof of concept code to the project and joined the team as a contributor. Since then, the team has done an awesome job writing guidance and turning the code into something production-worthy, and I'm pleased to say that the tooling and guidance have entered public preview... and it's all open source! You can grab the first "beta" release from https://github.com/ALM-Rangers/Migrate-assets-from-RM-server-to-VSTS
You can also read more about migration strategies in this excellent MSDN blog from Vijay Machiraju at Microsoft: http://blogs.msdn.com/b/visualstudioalm/archive/2015/11/19/moving-from-the-earlier-version-of-release-management-service-to-the-new-one-in-visual-studio-team-services.aspx

I'm super proud of this project, it's been a lot of fun and I think that you'll find it useful when mapping out your migration to RM Service.

What the tool does, at a very high level, is extract a Release Template from the RM database and translate it into a series of PowerShell scripts. You end up with a folder structure that maps to your "container" workflow blocks (Parallel, Server, Server Tag, etc), and for each Server or Server Tag, a unique script that runs all of the exact same actions you specified, even passing in the same arguments.

My design goal was "principle of least surprise" -- the script output behaves as closely to the behavior in the original agent-based workflow as possible. That means it handles config file token replacement and rollback blocks! It even implements the weird, backwards execution order of rollbacks. The idea is that you can get up and running with the new Release Service without totally reimplementing your releases from scratch using a dedicated configuration management/deployment tool like Desired State Configuration or Chef.

Download it! Use it! Send feedback! Submit pull requests!

I'd like to also take a second to thank everyone involved in the project:
Sponsors Vijay Machiraju (Product Team) and Shashank Bansal (Product Team) and team members Daniel Mann (Tool Architect), Dave McKinstry, David Pitcher, Derrick Cawthon, Josh Garverick, Josh Sommer, Niel Zeeman, Richard Albrecht, Richard Fennell, Shaun Mullis, Stawinski Fabio, Vladimir Gusarov, William Salazar (Project Lead).

Topics: Blog, Microsoft Visual Studio, PowerShell, Visual Studio 2015, release management, VSO, RM, Consultants, Software, Microsoft

Recent Posts

Webinar: What is MLOps & Why is it Important?

read more

Webinar: Getting Started with Containers & Azure Kubernetes Service (AKS)

read more

InCycle Wins Two Microsoft Awards - Extends Win Streak to Five Years

read more