Planck CI

August 8, 2015

Planck is now under continuous integration using CircleCI.

I recently invited members of the community to join in on the fun of Planck dev. Wow! I'm happy with the response, and now things are progressing much more quickly! But, it created an extra challenge for me in accepting the additional PRs.

So far, I'd only been informally putting Planck through its paces. But, this clearly wasn't cutting it when it came to efficiently validating disparate PRs.

One challenge is that PRs are live, meaning it is possible for the PR to change between the time you look it over and the point at which you decide to accept it. I have no experience with this, but some members in #clojurescript IRC pointed out that the CI tools out there can help with validating PRs.

That's exactly what was needed, so I put together a test framework for Planck and hooked it into CircleCI. The result is pretty cool! Now, candidate PRs end up with annotations indicating whether they are passing or failing.

To be honest, a robust test framework like this really needs to be in place if Planck is going to evolve beyond being a novelty—and potentially mature into something that people would consider putting to practical use.

So far, Planck has integration tests (launching and exercising the REPL.) Next up will be ClojureScript unit tests for the Planck code—I plan on using Plank itself to run cljs.test in its own bootstrapped JavaScriptCore environment—more meta-circular fun! And finally, I'll hook in Xcode unit tests.

Speaking of Xcode, CircleCI is beta testing OS X test containers for iOS apps. While Planck isn't an iOS app, it can make good use of xcodebuild in that test environment. And: CircleCI's containers are set up with Homebrew. This makes it easy to add the needed Java and Leiningen deps.

The CircleCI interface is intuitive, but when it came to special requirements like the above, the CircleCI team was there to help with the needed configuration advice. A shoutout of “thanks” to them!

Hopefully, having this in place should lend confidence to anyone considering contributing. If you are interested, take a look and see if there are any issues you'd like to help with!

Tags: Planck ClojureScript