continuum-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Johan Iskandar" <Johan.Iskan...@ag-it.com>
Subject RE: Maven2 release process in Continuum
Date Wed, 18 Jul 2007 09:04:22 GMT
I dunno how continuum does version releasing but as far as I know about
version releasing is that once you're happy with say build w.x.y.z You
then: (assuming that all pom has its current version explicitly stated
in the file, and it's formatted as p.q.r.s)
-tag all current source &/ pom with an w.x.y tag(branch)
-increment the w &/ x &/ y &/ z for the next build &/ bug-fix &/
minor-release &/ major-release

The question is, whether continuum holds such counters for w, x, y and
z(not the current version of the poms cuz it's already explicitly
stated)? if yes where? Can we control the states in case we need some
adjustments?

So when we trigger one of the release button(there should be 4 buttons
to choose from build, bug-fix, minor-release, major-release) , it should
be obvious for continuum to just increase z if it's a build, increase y
and reset z if it's bug-fix, and the third and fourth should be obvious.

For automatic builds, it would function just like triggering a build
button, only automatically triggered by a developer committing a source
or by scheduler. 
Then in a separate view/form/panel you could choose from a number of
successful builds which one to be the next bug-fix, minor-release,
major-release). (I'd prefer a 0.0.0.0 release as the initial value of
w.x.y.z)

Best regards,
Johan
Just my 2 cents

> -----Original Message-----
> From: James Abley [mailto:james.abley@gmail.com]
> Sent: Wednesday, July 18, 2007 2:54 PM
> To: continuum-users@maven.apache.org
> Subject: Re: Maven2 release process in Continuum
> 
> 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>(Defau
lt
> VersionInfo.java:156)
> > >         at
>
org.apache.maven.continuum.web.action.ReleasePrepareAction.setProperties
(R
> eleasePrepareAction.java:294)
> > >         at
>
org.apache.maven.continuum.web.action.ReleasePrepareAction.processProjec
t(
> ReleasePrepareAction.java:273)
> > >         at
>
org.apache.maven.continuum.web.action.ReleasePrepareAction.processProjec
t(
> ReleasePrepareAction.java:277)
> > >         at
>
org.apache.maven.continuum.web.action.ReleasePrepareAction.input(Release
Pr
> epareAction.java:119)
> > >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
> > >         at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:
> 39)
> > >         at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Im
> pl.java:25)
> > >         at java.lang.reflect.Method.invoke(Method.java:585)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActio
nI
> nvocation.java:364)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultA
ct
> ionInvocation.java:216)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:190)
> > >         at
>
com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met
ho
> dFilterInterceptor.java:88)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met
ho
> dFilterInterceptor.java:88)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
org.apache.maven.continuum.web.interceptor.ForceContinuumConfigurationIn
te
> rceptor.intercept(ForceContinuumConfigurationInterceptor.java:73)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
org.codehaus.plexus.redback.xwork.interceptor.PolicyEnforcementIntercept
or
> .intercept(PolicyEnforcementInterceptor.java:103)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
org.codehaus.plexus.redback.xwork.interceptor.SecureActionInterceptor.in
te
> rcept(SecureActionInterceptor.java:178)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
org.codehaus.plexus.xwork.interceptor.ExceptionMappingInterceptor.interc
ep
> t(ExceptionMappingInterceptor.java:58)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met
ho
> dFilterInterceptor.java:88)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met
ho
> dFilterInterceptor.java:88)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt
er
> ceptor.java:31)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt
er
> ceptor.java:31)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt
er
> ceptor.java:31)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(Fil
eU
> ploadInterceptor.java:171)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt
er
> ceptor.java:31)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.webwork.interceptor.debugging.DebuggingInterceptor.inte
rc
> ept(DebuggingInterceptor.java:147)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt
er
> ceptor.java:31)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterce
pt
> or.java:151)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt
er
> ceptor.java:31)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt
er
> ceptor.java:31)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt
er
> ceptor.java:31)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept
(E
> xceptionMappingInterceptor.java:186)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
org.codehaus.plexus.redback.xwork.interceptor.AutoLoginInterceptor.inter
ce
> pt(AutoLoginInterceptor.java:156)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
org.codehaus.plexus.redback.xwork.interceptor.ForceAdminUserInterceptor.
in
> tercept(ForceAdminUserInterceptor.java:63)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
org.codehaus.plexus.redback.xwork.interceptor.EnvironmentCheckIntercepto
r.
> intercept(EnvironmentCheckInterceptor.java:122)
> > >         at
>
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc
at
> ion.java:188)
> > >         at
>
com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.jav
a:
> 113)
> > >         at
>
com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(Dispat
ch
> erUtils.java:225)
> > >         at
>
com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDisp
at
> cher.java:202)
> > >         at
>
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(Web
Ap
> plicationHandler.java:821)
> > >         at
>
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.
ja
> va:118)
> > >         at
>
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.j
av
> a:52)
> > >         at
>
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(Web
Ap
> plicationHandler.java:821)
> > >         at
>
com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(Action
Co
> ntextCleanUp.java:88)
> > >         at
>
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(Web
Ap
> plicationHandler.java:821)
> > >         at
>
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationH
an
> dler.java:471)
> > >         at
>
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
> > >         at
org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
> > >         at
>
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationCon
te
> xt.java:633)
> > >         at
org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
> > >         at
org.mortbay.http.HttpServer.service(HttpServer.java:909)
> > >         at
> org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
> > >         at
> org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
> > >         at
> org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
> > >         at
>
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244
)
> > >         at
> org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> > >         at
> org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
> > >
> > >
> > > 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?
> > >
> > > Cheers,
> > >
> > > James
> > >
> >
> >
> > --
> > jesse mcconnell
> > jesse.mcconnell@gmail.com
> >



Mime
View raw message