Bait

executable is bait, standing for Build And Integration Tester

The most important thing to know about this project is this:

You are the only one that knows how your software "integrates" and the truth is that this is about people and process as much as about code.

If some of your developers test, and some don't, those that don't are kind of a liability so the best way to push them to grow is to give them the benefit of all these tools in the awesome open source culture

As you write scripts that make this program useful in different contexts please contribute them to the Wiki.

After you gem install, you setup your projects this way:

Step 1. cd into your project Step 2. bait init Step 3. bait test

Commit the new directory and scripts and you will be able to use the project with bait.

See examples/ for scripts for various types of projects.

Usage

Install the gem and then run bait

A sinatra server will start up. YAML files and temp repos will be stored in ~/.bait

Go to 0.0.0.0:8417

You can set your Github to notify the server on that port.

You may also test manually by inputting a clone URL within the UI

Caution

  • There is no security setup at this time
  • Bait is currently a WIP and should be considered experimental software

Architectural Overview

           Github POST bait:8417/--------+
                                         |
+----------------------------------------|------+
|    +------------+                  +--\|/--+  | +-------------+
|    | new Build  <------------------|  API  <------  GET /     |
|    +-----+------+                  |       |  | |             |
|          |                         |       |  | |             |
|          |                         |/build------> Build.all() |
|          |        +-------------+  |       |  | |             |
|     +---\|/----+  |Subscription <------+   |  | |             |
|     |Queue Job |  |  to Build   |  |   |   |  | | UI Changes  |
|     +----+-----+  |   Event     |  |   |   |  | |     |       |
|          |        | Broadcasts  |  |   |   |  | |     |       |
|          |        +--+------+---+  |/events----->[EventSource]|
|    +----\|/-----+    |      |      +---+---+  | +-------------+
|    |  Workers   |    |      |          |      |
|    |[subprocess]+----+      +----------+      |
|    +------------+                             |
|                                               |
+-----------------------------------------------+

Created with JavE

Datastore

You can use any datastore you want that is supported in Moneta

By default, bait will store the data as YAML files in ~/.bait

Features

List-Of-Scripts Configuration

After you bait init you will see how this works

Github Webhook Support

bait provides a Sinatra endpoint for the github push event webhook.

It will clone and run the list of scripts automatically

SimpleCov Support

If your test suite builds the path coverage/index.html such as SimpleCov does then bait will detect it and provide access to it from a link in the UI.

This feature was introduced in bait v0.5.4

Please send pull requests with script examples if you use bait.