Mach5 / supersonic

Open-source web-based media streamer and jukebox fork of Subsonic. Supports MP3, OGG, AAC and other streamable audio and video formats. Runs on Windows, GNU/Linux and Mac using Java.
241 stars 60 forks source link

Implement project website with artifact deployment to ease adoption #11

Open porkcharsui opened 12 years ago

porkcharsui commented 12 years ago

Inspired by Andy Lester's presentation at GitHub CodeConf 2011 http://www.slideshare.net/petdance/community-and-github-7272011

porkcharsui commented 12 years ago

Thanks to Travis CI we now have builds fired on evey push (except upstream branch) :) http://travis-ci.org/#!/Mach5/supersonic

Although this does not provide us with automated WAR or APK snapshots from the code, we can use the data to monitor the health of the application.

Possible TODO:

timoreimann commented 12 years ago

A really interesting service which I didn't know about before. Thanks for attaching the project to it!

I noticed though that pushes to the repo triggered by an upstream change always lead to a failed build on Travis CI (e.g., build #7). The reason being that the wrong language is used for building (Ruby instead of Java).

Any idea why upstream pushes break on Travis CI? My understanding is that the .travis.yml configuration file specifies the build language being used. This shouldn't change no matter where the push originates from -- or should it?

timoreimann commented 12 years ago

With regards to the possible TODO of mavenizing the Android project: I think it should be considered particularly if it helps running unit tests automatically. Not sure if and how the current ant setup can handle that.

porkcharsui commented 12 years ago

I fixed the upstream failures by just blacklisting that branch for automated builds. I don't mind handling merging the upstream to our master branch since I'm running Jenkins CI locally on every one of the upstream commits. This way I can make sure to hold out merging a broken upstream commit.

My goal is to have all passing commits to our master branch automatically upload project artifacts for public download. This would give us a page like Subsonic download where precompiled snapshots can be downloaded quickly. Android APKs could also be distributed via our Github project using this technique, however we would completely bypass the Android Market which would make user adoption more difficult. For development purposes I'm OK with this compromise, however eventually it makes sense to make this a Market app.

timoreimann commented 12 years ago

In the long run we'll have to think about how to deal with upstream updates that break the master branch. You being the only person responsible for merging in conflicts is just fine as of now because the number of conflicts is still small. If we start to diverge more from Subsonic, however, the merging effort will increase, which is when a collaborative merging effort may need to come into play. I'm sure you'll have an eye on this point since conflicts are thrown at you exclusively (assuming that you don't let any commits breaking your local Jenkins instance reach the master branch) for the moment.

Having artifacts be created automatically per commit (or nightly build?) sounds good as well. I have no sound idea as to how to implement this nicely using Github and Travis CI only, guess we'll have to work with a dedicated Jenkins instance (like yours) instead. Also, if I had to prioritize things I'd try to bring out stable Supersonic releases on a regular basis (involving manual work) first because that's what users are going to head for initially. And yeah, publishing an Android Market (or Amazon or whatever) app would be the ultimately goal but requires even more care and thoroughness -- we all want to receive better ratings than Subsonic gets, right? :)

porkcharsui commented 12 years ago

I fixed the upstream failures by just blacklisting that branch for automated builds.

On second take I'm not sure 1beb8affd was able to correct the issue. The upstream branch builds should not be happening in Travis CI. I'll keep a close watch on this.

porkcharsui commented 12 years ago

Completed: enhanced project readme using markdown, added Android wiki, and automated Github download artifact upload.

porkcharsui commented 12 years ago

Looks like the pom.xml is throwing some errors in our CI now so I will need to make the Github artifact upload an optional life cycle.

porkcharsui commented 12 years ago

I have a daily build + WAR being deployed to github now from my local Jenkins server. I was thinking it would be nice to have some sort of build number but I think the ability to update via git would be very efficent.

@midgetspy/Sick-Beard - has a git based auto update system Jenkins - uses WAR release with builld numbers