Skip to content

cburgmer/buildviz

Repository files navigation

buildviz

Transparency for your build pipeline's results and runtime.

The most important things cannot be measured.

Your build pipeline can.

  • Anonymous

The What

Buildviz provides graphs detailing runtime behaviour, failures and stability of the pipeline, answering a multitude of questions in the hopes of improving your pipeline.

All it needs is your build history including test results.

Live example: https://buildviz.cburgmer.space/

Screenshot

Usage

$ curl -OL https://github.com/cburgmer/buildviz/releases/download/0.15.1/buildviz-0.15.1-standalone.jar
$ java -jar buildviz-0.15.1-standalone.jar

Now, buildviz takes in build data via POST to /builds. Some suggestions how to set it up:

Sync from supported build servers

Buildviz understands build data extracted by build-facts. Currently the following CI/CD systems are supported:

  • Concourse
  • GoCD
  • Jenkins
  • TeamCity

Example:

# After starting up Buildviz locally, do:
$ curl -LO https://github.com/cburgmer/build-facts/releases/download/0.5.4/build-facts-0.5.4-standalone.jar
$ java -jar build-facts-0.5.4-standalone.jar jenkins http://localhost:8080 --state state.json \
    | curl -v -H "Content-type: text/plain" -d@- 'http://localhost:3000/builds'

DIY

You can also roll your own. For every build POST JSON data to http://localhost:3000/builds/, for example:

{
  "jobName": "my job",
  "buildId": "42"
  "start": 1451449853542,
  "end": 1451449870555,
  "outcome": "pass",
  "inputs": [{
    "revision": "1eadcdd4d35f9a",
    "sourceId": "git@github.com:cburgmer/buildviz.git"
  }],
  "triggeredBy": [{
    "jobName": "Test",
    "buildId": "42"
  }],
  "testResults": [{
    "name": "Test Suite",
    "children": [{
      "classname": "some.class",
      "name": "A Test",
      "runtime": 2,
      "status": "pass"
    }]
  }]
}

The build's jobName, buildId, and start are required, all other values are optional. Buildviz follows this JSON schema.

JUnit XML (or JSON) formatted test results can be PUT to http://localhost:3000/builds/$JOB_NAME/$BUILD_ID/testresults

More

FAQ

You might also like:

  • Polaris, automated tracking of engineering excellence fitness metrics.
  • Metrik, calculates the four key metrics based on CI/CD build data.
  • Four Keys, measures the four key metrics.
  • HeartBeat, calculates delivery metrics from CI/CD build data, revision control and project planning tools.
  • Kuona project for IT Analytics, provides a dashboard on data from various sources.
  • Test Trend Analyzer, consumes test results for test trends.
  • TRT, consumes test results for test trends.
  • GoCD's analytics extension, collects and displays build metrics for GoCD.
  • pulse, support the continuous improvement of your engineering teams with data-driven insights.
  • Jellyfish, translate and maximize the business impact of engineering.
  • BuildPulse, automatically detects flaky tests.

Reach out to @cburgmer for feedback and ideas.