Automation Culture

Thursday, August 10, 2017 by Rainer Stropek

The calm summer months are the perfect time to work on some long intended, internal projects. This month, we finally found the time to fully automate our web deployment using VSTS Release Management. In this blog post we share our release process and its technical implementation using VSTS and Azure.

Background

Following the DevOps principles, we try to automate as many routine processes as possible. Automation has lots of advantages. Here are some examples:

  • It frees resources because nobody has to waste time with boring routine tasks.
  • It raises quality because human errors are large ruled out.
  • It makes processes consistently repeatable.
  • It enables doing important things (e.g. tests) more often.
  • With proper logging, processes become traceable.
  • It makes processes more independent of certain people. Vacations or sick leaves don't stop processes to function.

We have been doing build and test automation for years. Yet, our release processes still needed some manual work - until this month. This month, we used a relatively calm summer month to work on fully automating our release pipeline.

Business Process

At the beginning of this year, we changed our release schedule. You can read more details in our blog post Change to Our Release Cycle. To make a long story short: We maintain three public environments:

  • Dev: Latest bits coming from continuous integration process.
  • Preview: Release candidate beween 1st and 10th of each month.
  • Production

The following image from the previously mentioned blog post illustrates our release cycle:

Input for Release Management

Most of our important components are built in the cloud using Visual Studio Continuous Integration (CI). The result of the automated build is the input for release management.

We use cloud-based PaaS and SaaS for our internal systems wherever possible to free our team from having to install and maintain base components like operating systems, databases, build servers, etc.

As a result, we decided to run our builds on Microsoft's hosted build agents. Here is a screenshot showing a build history from a typical time cockpit component:

Input for Release Management

Whenever a CI (=build + tests) process finishes, it creates a new release. The release is automatically deployed to our Dev environment. Deployments to Preview and Production require confirmation by an employee.

Releases

The following screenshot shows the release status of the last few days. Note the selected version 2017.08. This is the new production version we deployed today. The older releases were releases we created for testing purposes during the month. They have just been deployed to Dev and Preview. You might wonder what the forth environment is. It is related to our nuget Feed on myget.org. I will not go into details on this in this blog post.

Here is the history of the latest version that we pushed to Production:

Deployment

What does it take to deploy a version to different stages? As mentioned before, Dev is published automatically after a success CI. The push of new releases to other environments is just one click away:

Conclusion, Next Steps

Our new automation of releasing time cockpit has already proven to be a great time saver. Our goal for the next months is to get rid of the last on-premise, TFS-based pieces in our CI/CD infrastructure. Given the small size of our team (we are just five technical people) and the level of professionalism (SLAs, data security, redundancy, etc.) that we aim for, cloud-based PaaS is the only feasible option for us. It frees us from boring routine tasks and lets us focus on delivering value to our customers.

comments powered by Disqus

Rainer Stropek

Rainer Stropek

Co-founder, architect, developer

Bio

I am co-founder and CEO of the company software architects and have been serving this role since 2008. At software architects my team and I are developing the award-winning SaaS solution time cockpit. Previously, I founded and led IT consulting firms that worked in the area of developing software solutions based on the Microsoft technology stack.

In my work I focus on .NET development and software architecture. I have written some books and articles on C#, database development, Windows Azure, Windows 8 development, WPF, and Silverlight. Regularly I speak at conferences, do workshops and conduct trainings in Europe and the US. Since 2010 I have been MVP for Windows Azure.

I graduated the Higher Technical School Leonding (AT) for MIS with honors and hold a BSc (Hons) Computer Studies of the University of Derby (UK).

Contact

Twitter: @rstropek
Facebook
Google+
Xing
LinkedIn

Authors