I've been a big fan of
Continuous Integration /
Continuous Deployment (CI/CD) for some time now, and we've been using it with great success in my day job building
something awesome. But that setup is team-focussed, uses a build server, is triggered from revision code checkin, with promotion between development, test, staging and production environments gated by passing all the regression suite tests. We even spam the team over Jabber when tests fail.
At the other end of the scale is personal software development on my laptop. Here I want something more lightweight that the excellent
Jenkins, and I want builds triggered not on revision control checkins, but on
every save. In essence, something
compatible with the team-focussed environment, but something
even more agile and lightweight.
My personal development is more likely to be in Python than anything else, and I like to write my code
test-first. Normally I have three windows open - one editor for code, one editor for test code, and one shell with
onchange.pl running to automatically run tests every time a change is made to tests or code. This is all well and good, but it still requires me to take my focus off the editors and check that tests succeeded in the shell window. This can be improved upon.
Enter my latest toy,
blink(1). It's a USB multi-coloured RGB LED, that's
easily programmable with code available. But they provide a command-line tool which is sufficient for many use cases.
With a small script that checks the result of the test run, it's very easy to get blink(1) to give me a quick visual indication of the result of my development efforts. It's as simple as...
#!/bin/bash
nosetests
if [ "$?" -eq "1" ]
then
blink1-tool --red --blink 5 2>&1 >/dev/null
else
blink1-tool --green 2>&1 >/dev/null
sleep 5
fi
blink1-tool --off 2>&1 >/dev/null
Maybe it's a bit gimmicky, but so far I'm
loving it!