Slide 1

Slide 1 text

Build Radiator on Raspberry Pi Akshay Karle Snap CI ThoughtWorks, Pune

Slide 2

Slide 2 text

PART I The Basics

Slide 3

Slide 3 text

What’s a Build Radiator

Slide 4

Slide 4 text

Raspberry PI

Slide 5

Slide 5 text

PART II Getting started

Slide 6

Slide 6 text

Installing Linux on your PI

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Controller – application.rb require 'yaml’ def ci_servers @ci_servers ||= YAML::load(File.read('config/servers.yml')) end

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Controller – application.rb require '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

Slide 13

Slide 13 text

View – builds.html.erb
    <% @failed_builds.each do |build| %>
  • <%= build.name %>
  • <% end %> <% @success_builds.each do |build| %>
  • <%= build.name %>
  • <% end %>

Slide 14

Slide 14 text

View – builds.html.erb window.setTimeout(function() { window.location.reload(true); }, 10000);
    <% @failed_builds.each do |build| %>
  • <%= build.name %>
  • <% end %> <% @success_builds.each do |build| %>
  • <%= build.name %>
  • <% end %>

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

The result

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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