At work we use git, and have an extensive suite of tests for our code, and a set of scripts we use to kick them off manually. Unfortunately, we don't have a nice way to run them automatically.
Here's what I want, described here so I don't forget it. Tomorrow, I'll start looking for something that meets these needs, or can be hacked to do so. Maybe I'll have to implement it all, maybe not.
Here's the sort of workflow I'm looking for.
- Developer pushes something to git repository
- A post-receive hook pushes that commit on to a stack of commits to check for that tree.
- Build bot pops next testable sha1 from the stack
- Build bot checks out the code and runs a test script
- If the test script succeeds, logs that the SHA1 passed tests. Test results are pushed to a webserver for later viewing.
- If the test script fails, logs the failure. Test results get pushed. Developers get notified.
- After a failure, build bot uses
git bisect
to find a new commit between the last known good and the current. This becomes the next testable commit.
From that I get these requirements
Speaks git. Able to listen for a post-receive hook, check out code, run git bisect, etc.
Can run a test script and check its exit status.
Can retrieve test results in a configurable way.
Can run arbitrary code to log results, notify devs, etc, after a success or failure result.
For extra niceness, should have the ability to run the tests in a VM environment in snapshot mode, so tests are always run clean.