GlassFish V3 build and packaging team meetingJune 20, 2008 Here are Kohsuke's build issues, and Ken's notes (the bulleted items) from the discussion in the Kohsuke's slides are available on this page as an attachment (click on the attachments link on the bottom Maven repository managerOne of the painpoints we have today is the # of Maven repositories that we have to hit for a build. Because Maven doesn't remember which artifacts are in which repositories, it often has to hit several repositories just to get 404. We also suffer slow network bandwidth with some of the remote repositories. The usual solution to this problem is to use a Maven repository, and my recommendation is Nexus. This allows a single repository manager to act as a Maven-aware HTTP proxy to all our upstream Maven repositories. In this way, our builds would only have to hit our Nexus and it should reduce the build time. For this to work, we need one mirror inside firewall and one mirror outside firewall. That means the actual deployment of this would have to wait for the commission of new http://glassfishbuildtools.sun.com/
Distribution assembly just by MavenThe distribution assembly process has evolved to the point that it can probably do without Ant build script. To make this part of the system easier to understand, it might be a good idea to rewrite this into a pure Maven plugin (or into a Groovy script with GMaven).
svnmerge and personal buildsSeveral people has been using svnmerge in the development of the Hudson project successfully, and this seems like a good way to emulate a hierarchical workspace in Subversion. Being able to commit changes to a repository without qualifying it first has a number of benefits, such as offloading QL and integration to Hudson.
JVM problem in jar handlingWe are experiencing an elusive JVM bug, which manifest itself as various form of jar corruption. We've seen it in many places, and this really needs to be tackled.
Public Hudson serverWe need to keep pushing the lab guys to set up the new http://glassfishbuildtools.sun.com/ We should also get a better host name alias like http://hudson.glassfish.org/ and http://maven.glassfish.org/ since we should be running multiple things here.
Remove cyclic dependenciesSome part of GFv3 builds contain cyclic dependencies in a subtle way. At module level, there's no cycle (or else Maven wouldn't even let us build), but at the build level, there are a cycle between the main GFv3 build and the admin GUI build. This inflicts a number of pains — in particular it makes it impossible to use the maven-release-plugin on GFv3. This needs to be fixed.
Regular non-SNAPSHOT releasesWe push our artifacts to the Maven repository, and that's good, but most of them are pushed as SNAPSHOTs today (even TP2 was pushed like that), so people outside GF cannot rely on them. We need to start pushing weeklies and milestones in non-SNAPSHOT version numbers. We've never run maven-release-plugin on GFv3 code base as a whole, so this is mainly an exercise to iron out all the kinks in doing so. Another aspect in this problem is the transition of the build from SNAPSHOT dependencies to non-SNAPSHOT dependencies. I've heard from Jerome that he's been making some progress on this front, but this needs a careful design and experiments.
|