continuum-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesse McConnell" <jesse.mcconn...@gmail.com>
Subject Re: Maven2 release process in Continuum
Date Thu, 19 Jul 2007 00:42:49 GMT
are you making good use of dependencyManagement?  This should let you
centralize the majority of actual version information and make it easy
to release.

as for speed of releasing I have released quite large multi module
builds in a phased approach where I had to resolve snapshots between
projects manually, 8-9 phases with 1-3 projects(sometimes maybe 10-20
subprojects involved) in each phase being released...in around 6 hours
depending on if some weird niggling little issue cropped up or not.

I am personally not a huge fan of using continuum for releases myself,
but it does work.

If your interested in improving that support and making your life
easier, then there isn't a reason you couldn't add a page into the
release process that scanned all releasing projects and prompts the
user to resolve dependency versions to resolved versions.  the page
would then use maven scm to commit that updated pom.  In fact you
could just add that kinda support as a project action in continuum,
add a button that pops out to a page that lets you resolve snapshot
dependencies without having put your fingers in the xml directly.

in my experience though, this is not an activity that you should be
leaving for release day.  depending on your release plan, as early as
several weeks before your actual release you should be resolving
external snapshot dependencies to released versions...otherwise how
are you sure you QA process is testing the right stuff for release?

internal snapshot dependencies are resolved currently by the release
process to be clear.

does that help?

On 7/18/07, James Abley <james.abley@gmail.com> wrote:
> On 18/07/07, Jesse McConnell <jesse.mcconnell@gmail.com> wrote:
> > if you have one company pom...
> >
> > and 17 projects to release....and those 17 projects each use a
> > snapshot version of the company pom..
> >
> > you currently need to checkout all 17 poms, edit the parent pom to a
> > released version and check them in.  you have to do that using hte
> > maven-release-plugin and you have to do that for continuum release as
> > well.
>
> That's the simplified version. Of course, there are dependencies
> between the 17 in various forms.
>
> What you have described is pretty much what I did for our last
> release, using the maven-release plugin. It took me about a day. It
> had one unexpected benefit, since it allowed me to get a clear sense
> of the DAG in terms of dependencies in all of our modules. But I still
> have the following concerns with a release taking that long:
>
> 1) There is potential for me to check in the release version, start
> preparing the release and then someone else checks out the release
> version and starts doing stuff to it, when they should really be
> waiting until the next SNAPSHOT version has been checked in. I guess I
> can use locking for that, but it's been a while since I used locking
> with a SCM (been on CVS, SVN and Bazaar for a while - not used
> SourceSafe in four years or so).
> 2) Kind of related to that - the need for some sort of development
> freeze during that day. We don't want that.
>
> Should it really be taking me a day to do a release of this scale or
> am I doing something fundamentally wrong?
>
> Cheers,
>
> James
>
> >
> > if you have one company pom, and a project with 17 submodules (and
> > this subprojects have no snapshot versions that are not in those 17/18
> > modules being released) then you only need to update the one parent
> > project pom to resolve the company pom to a released version and the
> > release process will take care of resolving all internal snapshot
> > version to the (soon to be released) version.
> >
> > does that help?
> >
> > On 7/18/07, James Abley <james.abley@gmail.com> wrote:
> > > On 18/07/07, Jesse McConnell <jesse.mcconnell@gmail.com> wrote:
> > > > at the moment I think you need to make sure the underlying project
> > > > that you are going to try and release is 'clean' for the release.
> > > > that means that all dependencies that you are going to release ave
> > > > been resolved into released and available artifacts.
> > >
> > > Continuum is pulling stuff from our SCM prior to building it; your
> > > suggestion implies to me that I need to check out POMs, alter them to
> > > build a release form and check them back in. Then Continuum can be
> > > used to prepare and perform a release, after which I need to checkout
> > > the POMs and change any reference versions that I altered to the new
> > > SNAPSHOT versions.
> > >
> > > Have I understood you correctly? It just feels more painful than it
> > > ought to, when trying to release 17 top-level POMs. Surely other
> > > people are doing this and can point out where I'm going wrong.
> > >
> > > >
> > > > the continuum release mechanism makes use of the same release
> > > > mechanism as the maven-release-plugin so if you interested in playing
> > > > around with it I am a fan of just using the maven-release-plugin
> > > > directly, personally.
> > > >
> > > > in your example to release your project and the core and webapp
> > > > subprojects at once,  will basically need to release the company pom
> > > > initially and then edit the project pom by hand and set the company
> > > > parent pom to the released version.  Then check through your pom.xml's
> > > > of the project and the two subprojects to locate and resolve any
> > > > SNAPSHOT dependencies that are not the three you are immediately
> > > > releasing.
> > > >
> > > > its really pretty straight forward once you get into the swing of it.
> > >
> > > Thanks for your response,
> > >
> > > James
> > >
> > > >
> > > > jesse
> > > >
> > > > On 7/17/07, James Abley <james.abley@gmail.com> wrote:
> > > > > Hi,
> > > > >
> > > > > We have a Continuum instance and would like to cut a release of a
> > > > > product which uses a Maven2  as the build system. Currently, it takes
> > > > > around a day to release a product, which feels like longer than it
> > > > > should.
> > > > >
> > > > > We were hoping that using Continuum would save a lot of time versus
> > > > > the current release process, which involves mvn release:prepare
> > > > > -D..... and mvn releaes:perform -D... for a lot of modules.
> > > > >
> > > > > I haven't found much documentation about the release feature, so
would
> > > > > appreciate any pointers.
> > > > >
> > > > > First time through, I just followed it to try to see how intuitive
it was.
> > > > >
> > > > > Release is only available at a Project Group level (unless the user
> > > > > account that I am using is missing some roles?). I created and
> > > > > selected a small project group, that only contains a parent module
and
> > > > > two sub-modules. The parent pom inherits from our general company-wide
> > > > > POM (common profiles, repositories, scm, etc.) The two sub-module
poms
> > > > > both inherit from the parent pom, for dependency management
> > > > > reasons.One sub-module depends on the other one. The dependency flow
> > > > > is illustrated below
> > > > >
> > > > >           Common Company POM
> > > > >                          |
> > > > >                         V
> > > > >              Project Group POM
> > > > >               |                         |
> > > > >              V                        V
> > > > > Core module POM        Web app module (depends on Core)
> > > > >
> > > > >
> > > > > 1) I clicked on Release from the project group page.
> > > > > 2) Select the prepare release option.
> > > > > 3) Submit the form.
> > > > >
> > > > > org.apache.maven.shared.release.versions.VersionParseException: Unable
> > > > > to parse the version string: "${project.parent.version}"
> > > > >         at org.apache.maven.shared.release.versions.DefaultVersionInfo.<init>(DefaultVersionInfo.java:156)
> > > > >         at org.apache.maven.continuum.web.action.ReleasePrepareAction.setProperties(ReleasePrepareAction.java:294)
> > > > >         at org.apache.maven.continuum.web.action.ReleasePrepareAction.processProject(ReleasePrepareAction.java:273)
> > > > >         at org.apache.maven.continuum.web.action.ReleasePrepareAction.processProject(ReleasePrepareAction.java:277)
>
> <snip big stack trace/>
>
> > > > >
> > > > >
> > > > > The Web App module POM contains a reference to the Core module POM
like this.
> > > > >
> > > > > <dependency>
> > > > >     <groupId>${pom.groupId}</groupId>
> > > > >     <artifactId>sampleapp-core</artifactId>
> > > > >     <version>${project.parent.version}</version>
> > > > > </dependency>
> > > > >
> > > > > So my questions are these:
> > > > >
> > > > > 1. Do I have something wrong with the POM setup / dependencies? It
> > > > > feels like I would hav to checkout the POM and make it reference
an
> > > > > explicit version, which doesn't feel right.
> > > > > 2. Is anyone else using the release button that would care to share
> > > > > their experiences?
>


-- 
jesse mcconnell
jesse.mcconnell@gmail.com

Mime
View raw message