Historical information about your build, on a webpage!
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
.gitignore
HISTORY
README.rdoc
buildhawk.gemspec

README.rdoc

Buildhawk

Historical information about your build, on a webpage! Currently only graphs time taken, as stored in git notes.

See how it looks: rhnh.net/2010/09/18/build-time-graph-with-buildhawk

Status

Pretty raw: hackish script, no error checking, no test suite. I am adding to it as I use on one of my projects. Only checked on ruby 1.9.2. Depends on an unreleased experimental branch of TufteGraph (github.com/xaviershay/tufte-graph/tree/line).

Usage

gem install buildhawk

buildhawk --title "My App Name" # In your project directory, output HTML to stdout
buildhawk | browser             # Using http://gist.github.com/318247

You need to store the build time in git notes. This should be a single float: the build time in seconds. The following rake task should work for a standard ruby project with rvm. See rhnh.net/2010/09/06/storing-build-time-in-git-notes-with-zsh for more explanation. Note that `time` does not appear to output consistent enough spacing to be used reliably with cut, you may need to tweak the `cut -f 11 -d` command to pull out the right field.

namespace :build do
  desc "Run specs and store the time taken in a git note on HEAD"
  task :time do
    # ruby/rake are not aliased by rvm in the new zsh environment, so
    # have to explicitly call it using the rvm command stored in .rvmrc:
    #   rvm 1.9.2@myapp rake
    #
    # "2> >( )" construct redirects STDERR (where @time@ prints to) to the
    # bracketed commands. ZSH allows us to redirect it twice, once to git,
    # once to cat (back to STDOUT).
    formatter = "tail -n 1 | cut -f 11 -d ' ' - "
    exec((%{zsh -c "(time `cat .rvmrc` rake) } + 
          %{2> >(#{formatter} | git notes --ref=buildtime add -F - -f ) } +
          %{2> >(#{formatter} | cat)"}))
  end
end