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

The Basics
What’s a Build Radiator
Raspberry PI
PART II

Getting 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.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
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 you
You can checkout the code at: https://github.com/akshaykarle/
simple_build_radiator

More Related Content

PPTX
Automated Deployment with Fabric
PDF
AWSインフラのコード化にトライしてみて
PPTX
A Fabric/Puppet Build/Deploy System
PDF
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
PPTX
Journey to Microservice architecture via Amazon Lambda
PDF
Ansible Crash Course
ODP
Fabric: A Capistrano Alternative
PDF
Fabric-让部署变得简单
Automated Deployment with Fabric
AWSインフラのコード化にトライしてみて
A Fabric/Puppet Build/Deploy System
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
Journey to Microservice architecture via Amazon Lambda
Ansible Crash Course
Fabric: A Capistrano Alternative
Fabric-让部署变得简单

What's hot (20)

PDF
AtlasCamp 2015 Docker continuous integration training
PPTX
Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...
PPT
Python Deployment with Fabric
PDF
Designing net-aws-glacier
PDF
DevOps - Infrastructure as Code by Andre Marcelo-Tanner
KEY
Capistrano, Puppet, and Chef
PPTX
CoreOS in a Nutshell
PDF
Docker puppetcamp london 2013
PDF
"Building a Production-Grade Serverless Deployment" - Eoin Shanaghy, CTO, fo...
PDF
Automate with Ansible basic (2/e, English)
PDF
Building and Testing from Scratch a Puppet Environment with Docker - PuppetCo...
PPTX
AWS 기반 Docker, Kubernetes
PPTX
Building a Docker v1.12 Swarm cluster on ARM
PPTX
Aegir presentation
PDF
Fun with containers: Use Ansible to build Docker images
PDF
Fabric - a server management tool from Instagram
PDF
Deploying PHP Applications with Ansible
PDF
Code reviews vs Pull requests
PDF
빈스톡 첫인상 with Git
PDF
Pythonic Deployment with Fabric 0.9
AtlasCamp 2015 Docker continuous integration training
Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...
Python Deployment with Fabric
Designing net-aws-glacier
DevOps - Infrastructure as Code by Andre Marcelo-Tanner
Capistrano, Puppet, and Chef
CoreOS in a Nutshell
Docker puppetcamp london 2013
"Building a Production-Grade Serverless Deployment" - Eoin Shanaghy, CTO, fo...
Automate with Ansible basic (2/e, English)
Building and Testing from Scratch a Puppet Environment with Docker - PuppetCo...
AWS 기반 Docker, Kubernetes
Building a Docker v1.12 Swarm cluster on ARM
Aegir presentation
Fun with containers: Use Ansible to build Docker images
Fabric - a server management tool from Instagram
Deploying PHP Applications with Ansible
Code reviews vs Pull requests
빈스톡 첫인상 with Git
Pythonic Deployment with Fabric 0.9
Ad

Similar to DevOps Days India 2013: Build Radiator on Raspberry Pi (20)

PDF
Advanced View of Projects Raspberry Pi List - Raspberry PI Projects.pdf
PPTX
Installing a Cluster of Raspberry Pis with Stacki Ace
PDF
Travel with your mock server
PDF
Retro Gaming with Raspberry PI
PPTX
IoT for data science Module 5 - Raspberry Pi.pptx
PDF
Raspberry pi: Aspectos básicos del servidor Raspberry pi 2 de piotr j. kula.
PDF
Embedded Web Server based Home Automation using Raspberry PI
PPTX
Raspberry pi home automation idea
PDF
Advanced View of Projects Raspberry Pi List - Raspberry PI Projects.pdf
PDF
Embedded Systems: Lecture 8: The Raspberry Pi as a Linux Box
PDF
Advanced View of Projects Raspberry Pi List - Raspberry PI Projects.pdf
PDF
Projects list raspberry pi projects-1230 - projects
PPTX
Coffee & Pi - Fall into Pi
PDF
Home Automation Using RPI
PDF
Raspberry pi Board Hardware & Software Setup
DOCX
Abstract of raspberry pi
PDF
Projects list raspberry pi projects complete 1480 projects
PDF
Raspberry pi Update - Encourage your IOT
PDF
Advanced View of Projects Raspberry Pi List - Raspberry PI Projects.pdf
PPTX
IOT notes ....,.........
Advanced View of Projects Raspberry Pi List - Raspberry PI Projects.pdf
Installing a Cluster of Raspberry Pis with Stacki Ace
Travel with your mock server
Retro Gaming with Raspberry PI
IoT for data science Module 5 - Raspberry Pi.pptx
Raspberry pi: Aspectos básicos del servidor Raspberry pi 2 de piotr j. kula.
Embedded Web Server based Home Automation using Raspberry PI
Raspberry pi home automation idea
Advanced View of Projects Raspberry Pi List - Raspberry PI Projects.pdf
Embedded Systems: Lecture 8: The Raspberry Pi as a Linux Box
Advanced View of Projects Raspberry Pi List - Raspberry PI Projects.pdf
Projects list raspberry pi projects-1230 - projects
Coffee & Pi - Fall into Pi
Home Automation Using RPI
Raspberry pi Board Hardware & Software Setup
Abstract of raspberry pi
Projects list raspberry pi projects complete 1480 projects
Raspberry pi Update - Encourage your IOT
Advanced View of Projects Raspberry Pi List - Raspberry PI Projects.pdf
IOT notes ....,.........
Ad

Recently uploaded (20)

PPTX
The various Industrial Revolutions .pptx
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PPT
What is a Computer? Input Devices /output devices
PPTX
Chapter 5: Probability Theory and Statistics
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
Hybrid model detection and classification of lung cancer
PDF
Five Habits of High-Impact Board Members
PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
PPTX
Benefits of Physical activity for teenagers.pptx
PPT
Geologic Time for studying geology for geologist
PDF
Hindi spoken digit analysis for native and non-native speakers
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Modernising the Digital Integration Hub
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
The various Industrial Revolutions .pptx
Taming the Chaos: How to Turn Unstructured Data into Decisions
What is a Computer? Input Devices /output devices
Chapter 5: Probability Theory and Statistics
sustainability-14-14877-v2.pddhzftheheeeee
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
O2C Customer Invoices to Receipt V15A.pptx
Hybrid model detection and classification of lung cancer
Five Habits of High-Impact Board Members
A review of recent deep learning applications in wood surface defect identifi...
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
Benefits of Physical activity for teenagers.pptx
Geologic Time for studying geology for geologist
Hindi spoken digit analysis for native and non-native speakers
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
observCloud-Native Containerability and monitoring.pptx
Assigned Numbers - 2025 - Bluetooth® Document
Modernising the Digital Integration Hub
A contest of sentiment analysis: k-nearest neighbor versus neural network

DevOps Days India 2013: Build Radiator on Raspberry Pi

  • 1. Build Radiator on Raspberry Pi Akshay Karle Snap CI ThoughtWorks, Pune
  • 3. What’s a Build Radiator
  • 7. Installing Linux on your PI $ wget http://downloads.raspberrypi.org/pidora_latest $ unzip pidora.zip $ dd if=pidora.img of=/dev/disk1s2 bs=4M
  • 8. Input - servers.yml - type: Snap url: https://snap-ci.com/secret/cctray.xml
  • 9. 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
  • 10. Controller – application.rb ! ! require 'yaml’ ! def ci_servers @ci_servers ||= YAML::load(File.read('config/servers.yml')) end
  • 11. 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
  • 12. 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
  • 13. 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>
  • 14. 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>
  • 15. Deploy to your pi $ git clone your-build-radiator-repo.git $ bundle install $ bundle exec rackup
  • 16. 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
  • 18. Advantages • Get fast feedback for your builds • Save money • Save electricity • Its cool! ☺
  • 19. Thank you You can checkout the code at: https://github.com/akshaykarle/ simple_build_radiator