|
Project Information
|
If your GWT compiles are getting really slow and your computer doesn't have as many CPUs as you have permutations, a distributed compiler can share the load with other computers. This project provides an AppEngine based server and java clients that distribute GWT permutation compiles automatically over participating computers. Symmetric keys are used to protect the privacy of your build. How it works: - The team agrees on the queue ID and symmetric key for their builds
- They select or deploy the server
- They run any number of build slaves and configure them to watch that queue on that server
- When building, they use the DistCompile class to compile instead of the Compile class
- DistCompile does a pre-compile (non-permutation specific), then uploads the results to the central server on AppEngine
- Build Slaves who are polling the server download the precompiled file and perform a permutation compile, then upload the results to the server again
- The compile client downloads build results until it has all the permutations
- Then it runs Link with the results
- All is good.
Project StatusCurrently the system "works" in that you can run a build slave, run the server, and run a test compile that is ditributed to the build slaves. For an example look in the build.xml, there's an ant target for running a slave and an ant target for running a build. You can use the "public" server for the project at http://gwtdistcc.appspot.com/ for building this test app for now. If it gets too much use (i.e. I pass the free limits) then I'll probably shut it down, so be conservative in your usage there. Things that still need doing: - integrate the tanuki service wrapper so its easy to set up build slave
- Set it up to be easy to run in maven, ant, ivy
- peer-to-peer transfer instead of using google storage, esp. for slaves on the LAN
- make it easy to run a build server standalone instead of on appengine
- build windows installer, linux rpm, mac pkg to set up a build slave
- management/debugging tools to help manually fix any issues that come up
- and so on...
|