Thanks for the interest and responses, everyone!
When it comes to errors I think it is a matter of minutes or hours before someone discover that there is a compiler error in the trunk. So far the responsible person has fixed it as soon it is surfaced.
People are great at fixing errors once someone notices the breakage, but in fact certain categories of breakage have stuck around on the tree for a while: one recent example was COLOUR_DEPTH=0 not compiling and another was the mac build crashing on startup. It'll be nice to get as many of these secondary configurations (after linux+SDL and windows+GDI) as possible built automatically.
When it comes to warnings there have always been about 100 warnings or so, during the time I have been here, and no one has fixed them.
So now if you do fix some warnings, you'll have the satisfaction of seeing the warnings graph go down =p.
Could it be extended in such a way that it can be used to produce patched builds? I.e. submit patch based on some revision and get the complete zoo of builds generated?
That would be super nice. Two ways to set that up come to mind:
allows you to upload a patch to apply before building
- The git integration allows you to specify a set of branches to monitor, so one can imagine pushing to a new branch in a shared github repo
Either way, this would be a separate scratch build so that the main build continues to reflect the main repo. Ters is right that this is not so straightforward with Jenkins... I think the more formal way to solve this is to use Jenkins along with a git-based code review system like Gerrit, but I'm not going to try to convince everyone to adopt that. (Though I will give a +1 for code reviews, regardless of the interface used to do them.)
Getting the build to post to the forum would be neat. http://wiki.simplemachines.org/smf/SMF_API
To really be effective, it should build GDI, SDL Windows, SDL Linux and SDL Mac with graphics, and Posix without graphics. Perhaps also Makeobj. The first two should be built by both GCC and Microsofts compiler.
Makeobj should be straightforward. SDL Linux and Posix without graphics are covered. I've got Windows building on my Linux laptop using Mingw (which reminds me, I have a patch to send to fix that), so I probably can get that working on Jenkins. Mac is a little more challenging, as cross-compiling to darwin seems to be something of a dark art. I see two likely ways to make that work:
- The https://wiki.jenkins-ci.org/display/JENKINS/Build+Publisher+Plugin
allows someone to use a physical Windows or Mac computer to upload build results to the server.
- The Lilypond project has written a crazy powerful cross compilation system, http://lilypond.org/gub/
, which might work for us. It looks sufficiently generic.
And yes, getting warnings for the scenario api should be straightforward. (I agree with Ters that a separate binary to do this would be the cleanest solution.) I'll create an account for you and PM you its temporary password in case you want to try to set that up. (And if anyone else wants an account, let me know!)
it should build from the Subversion repository, as it is the most up to date.
Eh. The advantage of building from the Git repository is that Jenkins will link files and commits to Github, whereas I don't think the Simutrans svn server has a source browser. Plus I'd imagine a fair number of people use the Github repository as a basis for their work.