Blog

The latest expert opinions, articles, and guides for the Java professional.

Release Management for Enterprises

Part II: Automating Your Release Pipeline

Why automate? As we discussed earlier, change usually contributes to instability and this causes the custodians of production systems to resist it. With automation, we seek to streamline processes, make them fast, consistent and reliable.

One Continuous Delivery pipeline, coming right up

A unified and automated release pipeline with all the necessary checks can ensure quality, eliminate most errors and help push changes quickly and easily. It aims to make change a constant, rather than an exception, so that deployment tasks become habits and habits become skills. This level of automation requires team-wide collaboration from Dev, QA, and Ops. A well thought out pipeline can help deliver changes continuously. Ironically, small and frequent releases result in better software quality because there are no big bang updates that drastically alter application behavior.

Enough talk. Let’s get to business and attempt to build an automated release pipeline that takes code from developers, right through QA and operations, to real end users. This is also known as a Continuous Delivery pipeline.

But when is a good time to try this all out?

Well, as you can imagine, automating the entire release pipeline for an existing, mammoth enterprise software product or system is complex and sometimes unachievable.

However, freshly minted projects and applications do not share this burden. Grab the opportunity to start anew, and bring in cutting-edge practices around processes and automation to increase agility to the max.

Prerequisites

  • Work hand-in-hand with Dev, QA and Ops to achieve goals

  • Leave geriatric processes at the door; its time to start with a clean slate

  • Choose processes, platforms and tools using the team’s collective knowledge

  • Focus on continuous improvement; take risks; allow mistakes to happen and blame to remain unassigned individually for team efforts

  • Work hard; have fun; and celebrate small successes

Baking Your Own Continuous Delivery Pipeline

That’s right. You are going to set forth to cook up your own automated release pipeline. At the end of this exercise, you will have a sequence of mostly automated steps that will take your application through the release process, and to your end users. You will:

  1. Identify your artifacts
  2. Create a source code repository

  3. Create artifact repositories

  4. Automate artifact creation

  5. Control quality

  6. Automate deployment

  7. Orchestrate everything

We’ll go over them one by one shortly, but before that we should look at the toolset we’ve chosen for this exercise. One of RebelLabs’ early reports was titled “Pragmatic Continuous Delivery with Jenkins, Nexus and LiveRebel”, which looked into popular free and open source tools.

This time, we’ve chosen a different toolset consisting of GitHub, Artifactory (JFrog), Bamboo (Atlassian), Selenium, Arquillian and JBoss AS 7 (Red Hat). As long as we are starting a new project, why not give some of the latest tools and technologies out their a chance to prove what they say they are–essentially, better than your legacy solution ;-)



DOWNLOAD THE PDF

Responses (2)

  1. Avatar  

    jennifer

    August 22, 2013 @ 1:58 pm

    Was there a reason behind using GitHub, instead of Atlassian’s Stash product?

  2. Avatar  

    Oliver White

    August 26, 2013 @ 7:02 am

    Not in particular, we just wanted to experiment with other tools out there and expose our readers to as many different technology companies as possible. We also produced a similar report last year with free or OSS tools entitled “Pragmatic Continuous Delivery with Jenkins, Nexus and LiveRebel” — check it out: http://zeroturnaround.com/rebellabs/zt-labs-tutorial-pragmatic-continuous-delivery-with-jenkins-nexus-and-liverebel/

RSS feed for comments on this post.

Leave a comment