A couple of days ago, there was a tweet about the nighty builds starting to take to long, and that there would soon need to be a solution for this.
My suggestion (at the time) was to put an artifact repository behind the build system so that components could be shared.
Recently, a second idea occurred to me: I'd like to put together a publicly accessible continuous integration (CI) system to further my career. I've worked with such in the past, but they are all proprietary, so I can't show them off. Worse yet, they used proprietary software, so I can't even claim experience with any of the publicly available CI systems. Putting up a CI system for cyanogenmod would help with both problems.
Ok, about me: I'm an experienced tools developer, most recently working on horizontally scalable distributed system ("cloud" is the marketing buzzword), including, as mentioned, CI systems. I've dabbled with Android application programming, but nothing really serious. I've never tried building a ROM image at all. While I have done some Unix kernel programming, those days are long behind me, and I'm happy with that, so don't see building ROM images as a primary goal in my future.
However, building a CI system that built ROM images, on the other hand, is an interesting prospect. At least if there's a reasonable chance that it would actually get used by the CM community.
A quick overview of CI systems for those not familiar with them. The idea is to potentially kick off builds of *everything* at regular - and frequent - intervals. When you build something, for each component you check to see if it's already in the repository, and if so just check out the build results. Otherwise, you build the component from a clean checkout, and then at the end build everything. Nighlies
Developers don't have to change anything - their stuff will get built when it gets to the source repository the CI system is checking. On the other hand, if they're willing to hook into the build system, they can quit checking out source they don't change and just check out build results from the artifact repository. In some cases, they may not even need to do that - the build would happen in the build cluster, and all they'd have locally is the results of building their source and the final ROM image. Again, this isn't required, just possible if you want to.
Based on searching the forums, there's some interest in this. Is the current system close enough that it's not wanted? Or would the people who could switch things to it be interested in seeing what it's like?
Thanks for reading this far,
Welcome to CyanogenMod
|Welcome to our forum. Like most online communities you must register to post, but don't worry this is a simple free process that requires minimal information for you to signup. Be a part of the CyanogenMod Forum by signing in or creating an account. You can even sign in with your Facebook or Twitter account.
Guest Message by DevFuse
2 replies to this topic
Posted 06 November 2011 - 10:40 PM
We use BuildBot (www.buildbot.net), which fits our needs well enough. We just need more compute power for ICS, nothing a "custom" CI system will fix, as we have to do complete clean builds every night, as some changes require a clobber.