Wednesday, February 1, 2012

Dependency Graph Viewer for Jenkins

In Jenkins, jobs are the smallest unit of computation. For simple use of Jenkins, one job (and its checkout/build/report cycle) can suffice, but more sophisticated automation almost always involves multiple jobs that are working together.

The Dependency Graph Viewer plugin for Jenkins, by Stefan Wolf, makes it easy to deal with such multi-job workflow/activity by visualizing the relationship, as you can see below:




Setting Up

This plugin uses GraphViz, a C++ application that performs the actual layout of nodes and edges in the graph. This tool does a pretty good job of figuring out the "intuitive" layout most of the time.

Because this is a native application, GraphViz needs to be installed separately. Windows, Mac, and OS X users can do so from the GraphViz website. Linux users should be able to install this from their package manager, since it's a very popular tool. Other than GraphViz, this plugin requires no configuration. A plugin not requiring any configuration also means it can be removed side-effect free, so you can try this plugin out in your production environment without worrying about possible data loss.

How to Use It

Once installed, you'll see a "dependency graph" action link on the left in every job and view, which displays the relevant upstream/downstream jobs for the current job in question (or jobs in the current view in question). The graph is clickable, and if you do click on it, you can jump to the top page of that job. This makes it easy to navigate around in a complex job setup.

Upcoming Features

The upcoming version 0.3 expands this plugin to recognize other kind of inter-job relationships that go beyond upstream/downstream relationships, such as the "subroutine" relationship induced by the parameterized build trigger plugin, or the "producer/consumer" relationship induced by the copy artifact plugin.

Eventually, I think it should be turned into an extension point to enable other plugins to add all kinds of interesting relationships here.

- Kohsuke Kawaguchi
Jenkins Founder
Elite Developer & Architect
CloudBees
www.cloudbees.com
 
Follow CloudBees:
Facebook Twitter

2 comments:

  1. This is not really a "dependency graph." I apologize for being pedantic but technically a dependency graph describes software dependencies, i.e. required software libraries needed to build, compile, or run software.

    This seems more like a workflow chart.

    ReplyDelete
  2. I believe these are /job/ dependencies (you need output from a previous job to build the next job), not /project/ dependencies.

    ReplyDelete