devops days india 2013: build radiator on raspberry pi

Post on 12-Jan-2015

198 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Build Radiator on Raspberry Pi

Akshay Karle Snap CI

ThoughtWorks, Pune

PART IThe Basics

What’s a Build Radiator

Raspberry PI

PART IIGetting started

Installing Linux on your PI

Installing Linux on your PI

$ wget http://downloads.raspberrypi.org/pidora_latest $ unzip pidora.zip $ dd if=pidora.img of=/dev/disk1s2 bs=4M

Input - servers.yml - type: Snap url: https://snap-ci.com/secret/cctray.xml

Input - servers.yml - type: Snap url: https://snap-ci.com/secret/cctray.xml

!- type: Go username: user password: password url: https://example.com/cctray.xml

Controller – application.rb!!require 'yaml’

!def ci_servers @ci_servers ||= YAML::load(File.read('config/servers.yml')) end

Controller – application.rb!require 'ci_status' require 'yaml’

!def ci_servers @ci_servers ||= YAML::load(File.read('config/servers.yml')) end

!!! ci_servers.each do |ci_server| cc = CiStatus::CruiseControl.new(ci_server['url'], ci_server['username'], ci_server['password']) builds += cc.builds end

Controller – application.rbrequire 'sinatra' require 'ci_status' require 'yaml’

!def ci_servers @ci_servers ||= YAML::load(File.read('config/servers.yml')) end

!get '/' do builds = [] ci_servers.each do |ci_server| cc = CiStatus::CruiseControl.new(ci_server['url'], ci_server['username'], ci_server['password']) builds += cc.builds end @failed_builds, @success_builds = builds.partition { |build| build.failure? } erb ’builds.html'.to_sym end

View – builds.html.erb<html> <head> !!! </head> <ul class="builds"> <% @failed_builds.each do |build| %> <li class="build <%= build.status.downcase %>"> <span class="name"><%= build.name %></span> </li> <% end %> <% @success_builds.each do |build| %> <li class="build <%= build.status.downcase %>"> <span class="name"><%= build.name %></span> </li> <% end %> </ul> <html>

View – builds.html.erb<html> <head> <script> window.setTimeout(function() { window.location.reload(true); }, 10000); </script> </head> <ul class="builds"> <% @failed_builds.each do |build| %> <li class="build <%= build.status.downcase %>"> <span class="name"><%= build.name %></span> </li> <% end %> <% @success_builds.each do |build| %> <li class="build <%= build.status.downcase %>"> <span class="name"><%= build.name %></span> </li> <% end %> </ul> <html>

Deploy to your pi$ git clone your-build-radiator-repo.git $ bundle install $ bundle exec rackup

Deploy to your pi$ git clone your-build-radiator-repo.git $ bundle install $ bundle exec rackup

!Open your browser on the pi and navigate to localhost:9292

The result

Advantages

• Get fast feedback for your builds • Save money • Save electricity • Its cool! ☺

Thank youYou can checkout the code at: https://github.com/akshaykarle/simple_build_radiator

top related