The best kittens, technology, and video games blog in the world.

Wednesday, May 04, 2016

Continuous Integration for personal projects

The Cat by marcinlachowicz.com from flickr (CC-NC-ND)
This seems really obvious in retrospect (so I blame you guys for not telling me earlier), but somehow I never connected the dots before yesterday.

CI is really useful, but it's a massive pain in the ass to set it up for personal projects on own servers. Fortunately it turns out pretty much every CI service website offers CI for free for any software that's open source.

Somehow I have 51 public repositories on github, not counting forks (as well as some private code, but much less of that). Some of them are fairly seriously maintained, a lot is just random stuff I wrote once and I probably will never use again, but I had no reason not to post online.

So I opened free account on Semaphore and setup CI for 4 of them. It mostly required specifying dependencies in Gemfiles (I'm not committing Gemfile.lock files to repositories, this causes more problems than it solves) in a bit more detail, but wasn't too difficult.

The only nontrivial problem was with z3 gem, which depends on z3 library which isn't available on two year old Ubuntu 14.04 LTS which semaphore uses as its only option, so I had to use build instructions like:

echo "deb http://archive.ubuntu.com/ubuntu/ xenial main" | sudo tee -a /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu/ xenial universe" | sudo tee -a /etc/apt/sources.list
sudo apt-get update

Followed by apt-get install libz3-dev; bundle install; bundle exec rake spec which do the actual job.

I plan to go through 51 public repositories and decide one by one which are worth getting CI and which probably aren't.

No comments: