On 14/05/2009, Brian Fox <bri...@infinity.nu> wrote:
> On Thu, May 14, 2009 at 3:19 PM, Sahoo <sa...@sun.com> wrote:
>
>  > Brian,
>  >
>  > Thanks for the excellent write up. In approach #2, when a build is done by
>  > just replacing RC versions by actual versions, since new binaries are going
>  > to be produced, don't they have to be tested again?
>
>
>
> Absolutely. However in the maven use case we don't need dozens of people
>  testing every possible permutation like we try to do during the RCs.
>  Assuming no code changed, we're really making sure that the binaries are not
>  completely broken. Regardless, this is the build that we do the voting on so
>  it does tend to have plenty of people using it before casting a vote.
>
>
>
>  > I understand since no source code is changed(only version is changing in
>  > pom.xmls), the chances of side effects are very low, but an organisation
>  > with stricter quality control processes in place won't allow bits to be
>  > released without them being tested. Once you involve testing, we are back 
> to
>  > square one, where we are not sure if the bits are final. Or, am I missing
>  > anything?
>  >
>
>
> Nope, you are correct and I agree with that policy.
>
>  It's what we do at Sonatype as well as Maven.  When a release is staged to
>  Nexus, our QA thoroughly checks out that build. Those exact binaries are
>  what eventually get promoted assuming they pass.
>
>  I guess what I'm saying is that with the current maven release process, you
>  don't run RC's exactly the same way you do the final release. You need to
>  rebuild it when you move from the RC to the release unfortunately, but you
>  do still test the final binaries before promoting it. This is exactly what
>  the Nexus staging is about, it lets you test the binaries before you promote
>  it to your release repo, where it's too late to pull it back.
>

Thanks for answering my question so thoroughly.

>
>  >
>  > Thanks,
>  > Sahoo
>  >
>  >
>  > Brian Fox wrote:
>  >
>  >> First, I'll acknowledge that it's not easy/possible to "promote" an
>  >> artifact
>  >> from one version to another - say 1.0-RC-10 to 1.0. Lets just accept that
>  >> for now as it's a known issue that will be resolved down the road. Lets
>  >> instead discuss a few ways to work within those bounds, since discussing
>  >> what "could be" doesn't help the issue now (which i believe this thread
>  >> derived from the discussion on commons-dev regarding a pending release).
>  >> There are two approaches to this process, both are valid and I think you
>  >> could pick one based on your requirements:
>  >>
>  >> The first is to append a build number to your version that is always
>  >> incremented. So instead of 1.0 you have 1.0-1 or 1.0-b1. You increment
>  >> this
>  >> forever until you have a release that is good and that's the one that
>  >> stays,
>  >> it could be 1.0-b10 or 1.0-500. I've used this approach before and it's
>  >> similar to what many commercial orgs do (if you look under the hood at MS
>  >> versions for example, Vista SP1 is 6001.16659.070916-1443). In other
>  >> words,
>  >> the marketing for a release might be "1.0" but the actual version of the
>  >> files might be 1.0-xxxx. This may be ok for things where the end result is
>  >> a
>  >> war or ear but probably not as desirable for projects like commons that
>  >> release jars that are intended to be consumed.
>  >>
>  >>
>  >> The approach we use in the Maven project is slightly different. We used to
>  >> stage versions like 2.0.8 over and over until we got it right. The
>  >> problems
>  >> with this approach where: 1) you need to rollback the tag and versions
>  >> every
>  >> time and 2) someone may have an artifact called 2.0.8 that was actually
>  >> not
>  >> the final 2.0.8. This was a bigger problem when we wanted to start getting
>  >> maven-users involved to test the release candidates.
>  >>
>  >> We instead use the RC versions (eg 2.0.9-RC10) until we get to a release
>  >> that we decide is ready to do. The versions are all staged on Nexus and
>  >> the
>  >> binaries are ditched each time we rebuild, but the tags stay in place.
>  >> Since
>  >> each release is uniquely versioned, we no longer have to revert the
>  >> versions
>  >> and we don't have to worry about someone having an RC and thinking it's a
>  >> final release. Since it's not possible currently to promote an actual RC
>  >> to
>  >> the final release (eg 2.0.9-RC10 to 2.0.9), we simply rebuild and restage
>  >> one final time using the new release number (eg 2.0.9). The original RCs
>  >> were never called for formal votes as we know it's unlikely to pass, think
>  >> of them as tagged snapshots. Only the final release is voted upon and in
>  >> this fashion, by the time we reach the final release it's highly unlikely
>  >> we
>  >> will find any showstoppers, since the release process was followed for
>  >> each
>  >> RC (a practice run 10+ times if you will).
>  >>
>  >> Yes there are issues where someone _could_ make a change in between the
>  >> last
>  >> RC and the final release, but when we are in this cycle it is expected
>  >> that
>  >> only the RM is making changes to that branch (once the RC process starts,
>  >> it's moved to a separate branch) and it's watched very closely. In reality
>  >> it's not an issue.
>  >>
>  >> Hope that helps.
>  >> Brian
>  >>
>  >> On Thu, May 14, 2009 at 5:35 AM, Anders Hammar <and...@hammar.net> wrote:
>  >>
>  >>
>  >>
>  >>> Hi,
>  >>>
>  >>> I don't mean to hijack this thread, but my experience is that test
>  >>> people love traceability. Thus, I think they would expect a created
>  >>> tag/label to stay as they file bug reports on it. (I guess this is out
>  >>> of a larger non-agile organization's point of view.)
>  >>>
>  >>> Just my 2 cents,
>  >>> /Anders
>  >>>
>  >>> On Wed, May 13, 2009 at 16:41, sebb <seb...@gmail.com> wrote:
>  >>>
>  >>>
>  >>>> On 13/05/2009, Jason van Zyl <jvan...@sonatype.com> wrote:
>  >>>>
>  >>>>
>  >>>>>  On 13-May-09, at 10:11 AM, sebb wrote:
>  >>>>>
>  >>>>>
>  >>>>>
>  >>>>>
>  >>>>>> On 13/05/2009, nicolas de loof <nicolas.del...@gmail.com> wrote:
>  >>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>>>> With this approach, all RC tags (and the final one) point to a
>  >>>>>>>
>  >>>>>>>
>  >>>>>> source
>  >>>
>  >>>
>  >>>> code
>  >>>>>
>  >>>>>
>  >>>>>> that generate the finalName artifact.
>  >>>>>>> more complete sample
>  >>>>>>>
>  >>>>>>>
>  >>>>>>>
>  >>>>>> Yes, but AFAICS the tag 1.0 points to different code at different
>  >>>>>> times, so does not uniquely identify the code.
>  >>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>>  Tags should not contain different code at different points in time.
>  >>>>>
>  >>>>>
>  >>>> That's
>  >>>
>  >>>
>  >>>> just a bad practice. It happens by accident occasionally but to change
>  >>>>>
>  >>>>>
>  >>>> code
>  >>>
>  >>>
>  >>>> on tags consciously is just a bad practice.
>  >>>>>
>  >>>>>
>  >>>> I entirely agree.
>  >>>>
>  >>>> However AFAICT that is exactly what many Maven release procedures
>  >>>> involve, because the tag is deleted and recreated.
>  >>>>
>  >>>> To go back to my original question - how does one use Maven with release
>  >>>>
>  >>>>
>  >>> tags?
>  >>>
>  >>>
>  >>>> The restriction is that a tag, once created, is never changed (it may
>  >>>> be copied or deleted, but never updated or *re*created).
>  >>>>
>  >>>>
>  >>>>
>  >>>>> So if someone says that "the archives generated from tag 1.0" are OK -
>  >>>>>> or not OK - how do you know what code they are referring to?
>  >>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>>>> from trunk 1.0-SNAPSHOT
>  >>>>>>>
>  >>>>>>> release:prepare version = 1.0
>  >>>>>>> release:stage
>  >>>>>>> --> tag = 1.0
>  >>>>>>> --> artifact = foo-1.0.jar, deployed on staging repository
>  >>>>>>>
>  >>>>>>> test, test, test BUG !
>  >>>>>>>
>  >>>>>>> release:roolback
>  >>>>>>> --> trunk is back to 1.0-SNAPSHOT
>  >>>>>>> // rename the tag, as this one was a buggy RC
>  >>>>>>> svn mv tags\1.0 tags\1.0-RC1
>  >>>>>>>
>  >>>>>>> go back to step 1
>  >>>>>>>
>  >>>>>>>
>  >>>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>>>> No bug found ?
>  >>>>>>> well done, you've got your release
>  >>>>>>>
>  >>>>>>>
>  >>>>>>> 2009/5/13 sebb <seb...@gmail.com>
>  >>>>>>>
>  >>>>>>>
>  >>>>>>>
>  >>>>>>>
>  >>>>>>>
>  >>>>>>>> On 13/05/2009, nicolas de loof <nicolas.del...@gmail.com> wrote:
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>> 1. release:stage with the target version 0.9 (renaming a
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>> released
>  >>>
>  >>>
>  >>>> JAR may
>  >>>>>
>  >>>>>
>  >>>>>>  have some strange side-effects)
>  >>>>>>>>>
>  >>>>>>>>> test, test, test ..
>  >>>>>>>>> --> all fine ? you've got it
>  >>>>>>>>> --> some bugs : release:rollback , fix and back to step 1.
>  >>>>>>>>> You only have to rename (or remove) the tag created in SCM for
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>> the
>  >>>
>  >>>
>  >>>>  release
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>> (candidate)
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>> I don't follow this - how does this ensure that a given tag name
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>> (URL)
>  >>>
>  >>>
>  >>>>  only ever refers to a single code set?
>  >>>>>>>>
>  >>>>>>>> I may have misunderstood, but it seems to me that the tag is being
>  >>>>>>>> reused, and therefore does not uniquely identify the source.
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>> 2009/5/13 Todd Thiessen <thies...@nortel.com>
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>>>> So what is the extact work flow?
>  >>>>>>>>>>
>  >>>>>>>>>> 1. Run release:stage with a version like myproject-0.9-RC1
>  >>>>>>>>>> 2. When problems are found, rollback, fix the problem and run
>  >>>>>>>>>> release:stage again, incrementing RC2, 3, etc....
>  >>>>>>>>>> 3. When no more problems are found with the RC, perform a
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>> rollback
>  >>>
>  >>>
>  >>>> and
>  >>>>>
>  >>>>>
>  >>>>>>  then a release:perform using the actual release version. (in
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>> this
>  >>>
>  >>>
>  >>>> case
>  >>>>>
>  >>>>>
>  >>>>>>  myproject-0.9)
>  >>>>>>>>>>
>  >>>>>>>>>> ---
>  >>>>>>>>>> Todd Thiessen
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>>> -----Original Message-----
>  >>>>>>>>>>> From: nicolas de loof
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>> [mailto:nicolas.del...@gmail.com]
>  >>>>>
>  >>>>>
>  >>>>>>  Sent: Wednesday, May 13, 2009 9:13 AM
>  >>>>>>>>>>> To: Maven Users List
>  >>>>>>>>>>> Subject: Re: How can one handle release candidates in Maven?
>  >>>>>>>>>>>
>  >>>>>>>>>>> Use the release:stage goal to create your release
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>> candidates.
>  >>>
>  >>>
>  >>>>  If you find a bug, you just have to release:rollback and
>  >>>>>>>>>>> rename the tag from finalName to finalName_RCx
>  >>>>>>>>>>>
>  >>>>>>>>>>> 2009/5/13 Fabien KRUBA <fabien.kr...@gmail.com>
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>> I suppose you can use release:prepare and perform multiple
>  >>>>>>>>>>>>
>  >>>>>>>>>>>>
>  >>>>>>>>>>> times
>  >>>>>
>  >>>>>
>  >>>>>> if
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>>  you give the RC version number when asked ?
>  >>>>>>>>>>>>
>  >>>>>>>>>>>>
>  >>>>>>>>>>>>
>  >>>>>>>>>>>>
>  >>>>>>>>>>> http://maven.apache.org/guides/mini/guide-releasing.html
>  >>>>>
>  >>>>>
>  >>>>>>
>  >>>>>>>>>>>> On Wed, May 13, 2009 at 8:55 AM, sebb <seb...@gmail.com>
>  >>>>>>>>>>>>
>  >>>>>>>>>>>>
>  >>>>>>>>>>> wrote:
>  >>>>>
>  >>>>>
>  >>>>>>
>  >>>>>>>>>>>>
>  >>>>>>>>>>>>> What I would like to be able to do with Maven is:
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>> Create an SVN tag, e.g. myproject-0.9-RC1 from current
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> code in trunk
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>> (or perhaps a branch)
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>> Create and test the release candidate from the tag.
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>> Publish the release candidate somewhere temporarily so
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> others
>  >>>>>
>  >>>>>
>  >>>>>> can
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>>  check if the release candidate is OK.
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>> If there are problems, fix the trunk (or branch) and
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> create
>  >>>
>  >>>
>  >>>> a
>  >>>>>
>  >>>>>
>  >>>>>> new
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>>  tag, e.g. myproject-0.9-RC2. Repeat as needed.
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>> Suppose RC3 is OK, then the artifacts need to be renamed
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> (if
>  >>>
>  >>>
>  >>>>   necessary) to remove the -RC3 suffix, and published to
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> the release
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>> repository.
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>> The tag is also renamed, i.e. myproject-0.9-RC3 =>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> myproject-0.9
>  >>>>>
>  >>>>>
>  >>>>>>  The end result is a published release (without RC
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> suffix).
>  >>>
>  >>>
>  >>>>   The idea behind this is to ensure that the tag URL alone
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> is
>  >>>
>  >>>
>  >>>>   sufficient to identify the exact contents used to create
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> the
>  >>>
>  >>>
>  >>>>   release, and that the artifacts that are published are
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> identical to
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>> the ones that were checked (apart perhaps from the file
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> names).
>  >>>>>
>  >>>>>
>  >>>>>>  Is this possible using Maven?
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>
>  >>>>> --------------------------------------------------------------------
>  >>>>>
>  >>>>>
>  >>>>>>  - To unsubscribe, e-mail:
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> users-unsubscr...@maven.apache.org
>  >>>>>
>  >>>>>
>  >>>>>>  For additional commands, e-mail:
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>> users-h...@maven.apache.org
>  >>>
>  >>>
>  >>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>>
>  >>>>>>>>>>>>
>  >>>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>
>  >>>>> ---------------------------------------------------------------------
>  >>>>>
>  >>>>>
>  >>>>>>  To unsubscribe, e-mail:
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>> users-unsubscr...@maven.apache.org
>  >>>>>
>  >>>>>
>  >>>>>>  For additional commands, e-mail: users-h...@maven.apache.org
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>
>  >>>>>>>
>  >>>>>> ---------------------------------------------------------------------
>  >>>>>
>  >>>>>
>  >>>>>>
>  >>>>>>>
>  >>>>>>>> To unsubscribe, e-mail:
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>> users-unsubscr...@maven.apache.org
>  >>>>>
>  >>>>>
>  >>>>>> For additional commands, e-mail: users-h...@maven.apache.org
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>>
>  >>>>>>>
>  >>>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>> ---------------------------------------------------------------------
>  >>>>>
>  >>>>>
>  >>>>>> To unsubscribe, e-mail:
>  >>>>>>
>  >>>>>>
>  >>>>> users-unsubscr...@maven.apache.org
>  >>>>>
>  >>>>>
>  >>>>>> For additional commands, e-mail: users-h...@maven.apache.org
>  >>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>>>
>  >>>>>  Thanks,
>  >>>>>
>  >>>>>  Jason
>  >>>>>
>  >>>>>  ----------------------------------------------------------
>  >>>>>  Jason van Zyl
>  >>>>>  Founder,  Apache Maven
>  >>>>>  http://twitter.com/jvanzyl
>  >>>>>  http://twitter.com/SonatypeNexus
>  >>>>>  http://twitter.com/SonatypeM2E
>  >>>>>  ----------------------------------------------------------
>  >>>>>
>  >>>>>  believe nothing, no matter where you read it,
>  >>>>>  or who has said it,
>  >>>>>  not even if i have said it,
>  >>>>>  unless it agrees with your own reason
>  >>>>>  and your own common sense.
>  >>>>>
>  >>>>>  -- Buddha
>  >>>>>
>  >>>>>
>  >>>>> ---------------------------------------------------------------------
>  >>>>>
>  >>>>>  To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>  >>>>>  For additional commands, e-mail: users-h...@maven.apache.org
>  >>>>>
>  >>>>>
>  >>>>>
>  >>>>>
>  >>>> ---------------------------------------------------------------------
>  >>>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>  >>>> For additional commands, e-mail: users-h...@maven.apache.org
>  >>>>
>  >>>>
>  >>>>
>  >>>>
>  >>> ---------------------------------------------------------------------
>  >>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>  >>> For additional commands, e-mail: users-h...@maven.apache.org
>  >>>
>  >>>
>  >>>
>  >>>
>  >>
>  >>
>  >>
>  >
>  > ---------------------------------------------------------------------
>  >
>  > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>  > For additional commands, e-mail: users-h...@maven.apache.org
>  >
>  >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to