Auto-tools/Projects/EC2Builder: Difference between revisions

no edit summary
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
= EC2 Build Server  =
= EC2 Build Server  ==


The EC2 Build server seeks to allow building mozilla-central's different changesets quickly with the help of Amazon's Elastic Cloud service. The tools that will use EC2's build server potentially include '''mozregression''' and '''mozremotebuilder'''<br><br>  
The EC2 Build server seeks to allow building mozilla-central's different changesets quickly with the help of Amazon's Elastic Cloud service. The tools that will use EC2's build server potentially include '''mozregression''' and '''mozremotebuilder'''<br><br>  
Line 13: Line 13:
  EC2 Small Windows Instance / Windows Firefox Build:&nbsp;??? hrs
  EC2 Small Windows Instance / Windows Firefox Build:&nbsp;??? hrs
   
   
  EC2 Medium High-CPU Instance / Linux Firefox Build (1 Core): 2 hrs
  EC2 Medium High-CPU Instance / Linux Firefox Build (1 Core): 1.2 hrs
  EC2 Medium High-CPU Instance / Windows Firefox Build (1 Core):&nbsp; 2.75 hrs
  EC2 Medium High-CPU Instance / Windows Firefox Build (1 Core):&nbsp; 2.75 hrs
   
   
Line 27: Line 27:
  Medium High-CPU Linux: $0.17 / hr
  Medium High-CPU Linux: $0.17 / hr
  Medium High-CPU Windows: $0.29 / hr
  Medium High-CPU Windows: $0.29 / hr
Worst-case (24-hour always-on) cost assuming limit of 5 instances running at once: $1162.35 / month
Storage and bandwidth costs haven't yet been calculated.
'''The cost of EC2 has been found to be untenable at this current time and this project has been discontinued. Please see mozremotebuilder for the alternative that is being worked on right now.'''


== About EC2  ==
== About EC2  ==
Line 51: Line 57:
One server remains always-on (probably an in-house box of some sort). It contains the keypair necessary to access Amazon. A python script listens to mozilla pulse messages and simultaneously listens to requests on a socket port. A client program will send a changeset # to the socket server, and the server will in turn spin up an instance (using synchronization primitives to keep track of how many resources are in use), or it will queue the job if too many instances are already running. When a job completes, the server downloads the built binary from the EC2 instance, shuts down the instance (freeing the resource unless another queued job exists in which case it gets the job and executes it), and serves the binary via HTTP. It provides the download URL via a pulse message. The client program knows its build is complete when the pulse message comes through. Binaries older than 3 days are deleted via a cron job.&nbsp;<br>
One server remains always-on (probably an in-house box of some sort). It contains the keypair necessary to access Amazon. A python script listens to mozilla pulse messages and simultaneously listens to requests on a socket port. A client program will send a changeset # to the socket server, and the server will in turn spin up an instance (using synchronization primitives to keep track of how many resources are in use), or it will queue the job if too many instances are already running. When a job completes, the server downloads the built binary from the EC2 instance, shuts down the instance (freeing the resource unless another queued job exists in which case it gets the job and executes it), and serves the binary via HTTP. It provides the download URL via a pulse message. The client program knows its build is complete when the pulse message comes through. Binaries older than 3 days are deleted via a cron job.&nbsp;<br>


http://i.imgur.com/xXLp3.gif
http://i.imgur.com/fg0zN.gif


== Side Project  ==
== Side Project  ==
48

edits