Travis – a distributed build system
Let us introduce us to Travis. What is Travis? As you can read on Github:
Travis is an attempt to create an open-source, distributed build system for the Ruby community that:
- allows open-source projects to register their repository and have their test-suites run on demand
- allows users to contribute build capacities by connecting a VM that runs a build agent somewhere on their underused servers
You can and should use travis for your open source projects as an continuos integration system. Travis is an incredible project and helps increase the quality of lots of Open Source projects. So please head over to travis and setup tests for your ruby, node.js, erlang, … projects. – you can also setup your own instance installing Travis and use it for your private projects.
For more information check out the github page and the getting started section.
We’re really happy to be able to support Travis by sponsoring one of the worker boxes.
btw. Sven, Josh, thanks for mentioning us on your talks at Ruby Lugdunum and Frozen Rails 2011 this year. ;)
Btw.: have you heard about the Awesome Bot Factory? With the Awesome Bot Factory you’re able to create bots for your campfire channel. There is a bot to integrate travis to your campfire chat: simply ask the bot for a given status, like:
Jan travis:status Nerds/NerdPursuit
Choco Bits Bot Nerds/NerdPursuit is stable
Or get notified about your project’s new travis builds.
- Thank you, Travis-CI!
Resources:
- Travis on Twitter: @travisci
- Travis on Github: travis-ci
- Homepage: travis-ci.org
Continious integration mit Hudson und Integrity
Continious Integration ist ein wichtiger Bestandteil von Software, vor allem wenn mehrere Beteiligte am Projekt Teilnehmen. Nach jedem Push wird dann der aktuelle Code vom CI-System ausgecheckt und die gewünschten rake-Tasks ausgeführt. Neben dem schon bekannten CrusieControll.rb gibt es noch zwei andere interesannte Cnotinious Integration Tools die ich kurz vorstellen möchte: Integrity und Hudson.
Integrity
Integrity ist sehr einfach gestrickt. Nach der relativ simplen installation kann man verschiedene Projekte hinzufügen. Der einzige “overhead” der noch ensteht, ist das zusammenstellen eines rake-tasks den Integrity nach jedem pull ausführt. Dieser einfacher rake-Task kann als Einstieg dienen:
Nach jedem Build können die Entwickler auch über die zu verfügung stehenden Notifier (Email, Campfire, IRC, …) über den Stand informiert werden. Weiterhin gibt es auch ein Growl-Plugin und Dashboard-Widget. Der Build der Applikation wird über Github via einem POST-Webhook zu Integrity angetriggert.
Der einzige Nachteil ist, dass bei lang-andauernden Builds der entsprechende Webserver einen Timeout erreicht. Der kann natürlich hochgesetzt werden.
Hudson
Hudson ist eine weitere Alternative. Es ist ein Java-Basiertes CI-System und wird out-of-the-box mit einem Webserver ausgeliefert. Entsprechende Debian-Packages gibt es hier. Hudson bietet gegenüber Integrity mehr Konfigurationsmöglichkeiten, daher dauert es ein bisschen länger bis man sein neues CI-System am laufen hat. Meet-Hudson bietet eine gute Übersicht über Hudson.
Der oben schon vorgestellte Rake-Task kann ebenfalls für Hudson verwendet werden. Allerdings müssen Plugins für eine Rake- und Githubunterstützung installiert werden (Git-Plugin und Rake-Plugin).
Bei Hudson ist der initiale Konfigurationsaufwand zwar geringer als bei Integrity, dafür müssen viele Plugins installiert und konfiguriert werden um seine “perfekte” CI-Umgebung ans laufen zu bekommen. Unschön an Hudson ist die fehlende unterstützung des triggern eines Builds über einen POST-Webhook. Stattdessen kann dies nur über ein GET getriggert, was aber seitens Github nicht unterstützt wird. Eine Alternative ist das periodische abprüfen von Änderungen in der Repository.


