Source code

The source code of BigTuna is available on Github. If you have any ideas for features and/or patches or would somehow like to contribute, go ahead, fork it, implement (write tests!) and send us a pull request. We will gladly merge it.

VCS

We now support Git and Mercurial VCSes out of the box, but it takes very little effort to write your own vcs support. Please see extras/big_tuna/vcs/A, write your own handler and send us a pull request on Github

  1. Provide a user—displayed VCS name
      NAME = "My VCS"
    
  2. Provide a database—safe vcs name
      VALUE = "my_vcs"
    
  3. When overriding the initializer, call super(source, branch) to set basic values
  4. Implement the #head_info instance method which should return an array of two elements [info, command]
    • info — Hash of fetched commit data:
      • :commit — commit hash
      • :author — commit author
      • :email — commit email
      • :committed_at — Time object indicating time commit was created
      • :commit_message — commit message
    • command — String with shell command used to get data
  5. Implement #clone(where_to) instance method which should clone the repository to a directory specified by where_to.
  6. The directory may have to be created

Hooks

Currently there is a Mailer and xmpp hook for you. If you want support for custom services please check extras/big_tuna/hooks/ and create a new hook based on existing hooks.

  1. Provide a unique database—safe hook name
      NAME = "mailer"
    
    If your hook requires configuration you can create hooks/NAME/_form.html.haml partial with various config fields. Those fields should have their names set to configuration[field_name]. They will be stored as Hash in hook config.
  2. Define methods you need
    • build_passed(build, config)
    • build_fixed(build, config)
    • build_still_fails(build, config)
    • build_finished(build, config)
    • build_failed(build, config)