http://build.myrobotlab.org:8888/ 

Ahoy !
In order to provide a stable platform and continuously build the new Nixie release of MyRobotLab I made a new Nodejs application called the "deployer".  The source code is posted on github.  

Official "latest" builds require a public location to download.  Since our resources and budget is tight we usually use micro instances of Amazon servers.  These do not have the necessary memory or resources to build and fully test myrobotlab.  

Kwatters sensibly suggested, "Just get a bigger public machine".   But I was very interested in the idea of a collection of home build servers working together.  My computer(s) at home could help build the latest release.
This could also provide a wider range of testing on different platforms (e.g. 64bit 32bit Linux Windows Mac)  If we only had a system where you could add a computer to a "collection" of build computers.

Enter the "deployer"

To coordinate all this is the "deployer".  Its installed on a public amazon micro instance.  The deployer will sit and scan the directories looking for builds from remote computers.  When it finds a new build it parses the data it finds and updates "latest build" links.  It has a web page which shows the history of changes and builds from 2 different machines (soon to be a third).  The testing of our builds on Linux machines has errors - while windows is passing.  The status symbols link to detailed test reports.  

lappy & work-e are two computers at my house and part of the "build collective".  They are running Jenkins and look for any code changes checked into GitHub.  When they are running and find changes they will build and fully test myrobotlab - then post the results to the public "deployer"

The deployer is responsible for maintaining the global build number.  The current strategy is to increment only on the first successful build of a new git commit.  Since the build number needs to be "baked" into a myrobotlab build the building servers ask the deployer for the next build number.

This is done with a curl request :

curl http://build.myrobotlab.org:8888/getBuildNumber > build.properties

The build number is then compiled in and the build artifacts are sftp'd to the deployer to be scanned and published.  The Oven is Baking ! :D

Currently to be part of the "collective" you'll need the following :

  • Jenkins running as a service - https://jenkins.io/ 
  • Publish over ssh plugin
  • a public ssh key installed on the deployer