Overview

Continuous Delivery in the Cloud – Part 6: Create a Dashboard of your System

5 Comments

In this last article of the Continuous Delivery in the Cloud series I will show you how I build a dashboard inside Jenkins that combines all crucial information of your system in one place. The dashboard displays the current state of all environments (running, stopped), the software versions deployed on the individual production and test systems and the latest release notes. It also allows you to deploy specific versions of your application to specific environments.

 

How everything started

It all started with two user stories from the product owner:

  • User Story 1: As a user I want to deploy a specific application version to a specific test system, so I can test that version of the application.
  • User Story 2: As a user I want to see the deployed versions of all systems in one place, to know the current system status.

After reading the user stories and giving them a little thought it was clear that I needed to create a dashboard to fulfill the requirements. And here is the result.

Dashboard

The dashboard consists of three sections.

Section one

The first sections polls Artifactory via its REST API and finds all software versions that are available for deployment. By selecting a version and an environment I trigger a Jenkins Job that will deploy the specified version to the server. I am not just deploying a WAR file but also running the correct liquibase database scripts to match the application version.

Section two

The second section shows all AWS environments. Here we have four AWS instances: Test, UAT, Production Green and Production Blue. For each environment we can see the software version that is currently deployed, a link to the web application, further AWS information and the overall status if the instance is up and running or stopped.

Section three

The third section shows the last changesets to the application on Github. This allows the product owner and test user to see the features that were added to the application and in which application version they were added.

Here is a screenshot of the dashboard:

 

Screencast

The screencast shows the dashboard in action.

Right-click on the video to get it started or click on the link below to view the video in fullscreen mode. I suggest clicking the link and running it in fullscreen mode since the embedded video stops half-way through in some browsers.. View video fullscreen

Summary

I hope the article series has given you a good background on how to create your own continuous delivery pipeline using open source tools and cloud services like AWS. If you interested in more information or need help setting up something similar for your projects feel free to write an email or post your comments.

Update 2: Official Jenkins EC2 Deployment Dashboard Plugin (released 2015)

We released the EC2 Deployment Dashboard as an official Jenkins plugin in 2015. Check out https://blog.codecentric.de/en/2015/02/jenkins-deployment-dashboard-ec2-environments/ for more details.

Update 1: How to generate a HTML Page via Shell Script

I received a couple of requests, how to generate HTML pages from command line. Here is a simple example.

#!/bin/bash

title="This is a title"

# gather information from EC2 nodes via EC2 api tools

cat << _EOF_
<html> 
<head>
  <title>$title</title>
</head>
<body>
  <h1>Parameter passed to shell script: $1</h1>
</body>
</html>
_EOF_

Kommentare

  • Jonas Bang Christensen

    5. March 2013 von Jonas Bang Christensen

    Thanks for a great article series. We might just adopt some (or all) parts of it.

    A few questions:

    1. The UAT server is automatically updated with each new version? Or only updated manually?
    2. Manually deploying a specific version to UAT is primarily used to test older versions? (if the newest version is always deployed automatically?)
    3. When will a new version be available to deploy in production? I.e. is passing UAT tests a criteria, or can a version be deployed to production without UAT test?
    4. The Dashboard, is that a Jenkins plugin? What is it called? Is it open source?

    Br,
    Jonas

    • Marcel Birkner

      6. March 2013 von Marcel Birkner

      Hi Jonas,

      I am glad you like the article.

      1. The UAT server is automatically updated with the latest version. Using the dashboard, you can deploy a specific version to the UAT environment.
      2. Yes. This can be used to test a bug in a specific version of the software.
      3. Its up to you how strict you want to be. For applications that have a lot of UI, I would consider manual UAT tests a critical testing criteria that need to be passed. Automatically testing all parts of a UI can be difficult and error prone. Applications that provide web services on the other hand, do not need manual UAT tests since they should be fully covered in your automated integration tests.
      If you are running Nexus Professional in your company you can also leverage the Nexus Metadata Plugin as described in this blog article.
      Using the Metadata Plugin you can enrich each artifact with additional information, like: “passed manual UAT testing”, …
      4. The dashboard you see here is are multiple HTML pages that are automatically created/updated after each Job is passed. The HTML pages are generated in the Jenkins userContent folder. Files in this directory will be served under the following URL http://server/userContent/.

      Greetings,
      Marcel

  • Raju

    can you tell exactly, what you did to generate html pages after each job?

    • Marcel Birkner

      31. March 2014 von Marcel Birkner

      Hi Raju,

      I simply wrote a shell script, to generate the HTML page. I added an example to the bottow of the article. Before I generate the HTML page I use the EC2 api tools from within the shell script to get all information from the EC2 nodes. After that I generate the HTML page from within the shell script. The shell script is executed as a separate build step at the end of the deployment job.

      I hope that answers your question.
      Marcel

    • Marcel Birkner

      6. February 2015 von Marcel Birkner

      Update: We just released the EC2 Deployment Dashboard as an official Jenkins plugin. Check out the blog article

Comment

Your email address will not be published. Required fields are marked *