On 21 January 2014 09:41, James Nord (jnord) <jn...@cisco.com> wrote:

> I wouldn't have normally chimed in here against Stephen (He knows what he
> is on about) however...
>
> IMHO Staging only works with very small teams with dedicated
> infrastructure (in which case QC generally are ok with a rebuild!).
> If you have larger teams and share infrastructure (repo manager, CI)
> across projects (and binaries across teams) then that way will lead to
> madness.
>
> Or to put it another way Staging with any human intervention is evil.
> Staging without human intervention is doing things too late - you should
> know before hand that your code is good to go (if you use releases) - and
> if you are doing things without human intervention then you should know up
> front that the code is good to go - which means you don't need staging
> (apart form for an atomic deployment of a multi module build; but there are
> other ways to do that now).
>
> Or to put a contrived (yet realistic) example on this -
> Consider a shared library Y.  You have no auto testing of it so its only
> tested inside products (otherwise you know its good to go - and wouldn't
> release RCs).
> Library Y is in a stage at version 1.2.3
> This library is picked up from the stage and placed into a product Z
> (inside say an RPM)
>

If you are doing this then you are using staging wrong IMHO. A stage should
*only* be used for either testing the staged release *or* for where there
is a synchronized deliverable that must be built from a different machine,
e.g. the windows .DLL and the linux .so's

The case of Z may be OK as Z may be an arch specific component... but you
are calling it a product, so if it is a product then you should have closed
and released the library Y stage *before* you consume from Z

Z is released into a stage
> The library is picked up in product X (inside say another RPM)
> QC start testing Z.
> QC test X and it reveals a bug in Y.  Both stages (Y and X) are dropped
> QC finish testing Z from the stage and then promote it as its good.
> The Y developers re-spin 1.2.3...
>

Well the issue here is that you should only stage the last layer. In this
example Y cannot be tested on its own, so there is no point spinning RCs,
etc. You just have to bite the bullet and cut a release. It doesn't matter
whether you call the release 1.5-RC-1 or 1.5.0 because if you need to
respin, you'll be bumping another version anyway.

Where staging matters is at the last, publically visible, layer... i.e. Z.

You use staging for Z and just spin version numbers and releases for
everything else.

If Y and Z are in the same release root... then they both get staged. If
they are in separate release roots, then Y just bangs out releases and Z
has staging.

More complex is when both Y and Z are public... i.e. Y is the API client
that Z uses... well in that case how is a broken 1.5-RC-1 being out there
any different from a broken 1.5.0... the solution is obvious... you need
tests that you can trust... get those tests and then apply staging on Y

>
> Z is released into the field with a verison of Y that doesn't match what's
> at some point going to be in the repo.
> The build Z is unreproducible - this is the worst possible situation to be
> in,
>
> Now there are those that say - your staging rules on your MRM should check
> the dependencies - but now you are at the behest of your MRM.
> Nexus certainly can't do this without custom effort on your side - and
> then you will have to intimately have full knowledge of the inside of the
> build that produced this artifact - what groups on your MRM use, what
> version of maven.. You can't just unpack and look at the use the
> dependencies - what about shaded deps.  To do all this work post build is
> IMHO nigh on impossible.
>
>
> /James
>
> > -----Original Message-----
> > From: Stephen Connolly [mailto:stephen.alan.conno...@gmail.com]
> > Sent: 20 January 2014 19:40
> > To: Maven Users List
> > Subject: Re: versions maven plugin
> >
> > Consider staging support on your repo manager
> >
> > On Monday, 20 January 2014, <alejandro.e...@miranda.com> wrote:
> >
> > > I didn't. QA is not happy about rebuilding the system once it's been
> > > approved so we have to release the RC as approved.
> > >
> > > So all our versions are always RC-X-SNAPSHOT or RC-X
> > >
> > > Alejandro Endo | Software Designer/Concepteur de logiciels
> > >
> > >
> > >
> > >
> > > From:   Stephen Connolly <stephen.alan.conno...@gmail.com
> > <javascript:;>>
> > > To:     Maven Users List <users@maven.apache.org <javascript:;>>,
> > > Date:   2014-01-20 13:50
> > > Subject:        Re: versions maven plugin
> > >
> > >
> > >
> > > How did you turn your RC into a released version? (I would do it with
> > > the release plugin and just verify the SCM changelog is unchanged)
> > >
> > > On Monday, 20 January 2014, <alejandro.e...@miranda.com
> > > <javascript:;>>
> > > wrote:
> > >
> > > > Thank you Stephen. Are there any other ways to stabilize my
> > > > dependencies then?
> > > >
> > > > i have > 300 poms all depending on the released+1 development
> version.
> > > > This must be a common use-case when using RCs, no? you increase all
> > > > your versions to your next RC-2-SNAPSHOT as soon as you create your
> > > > RC-1, but if that RC-1 happens to be released, then all your poms
> > > > will be
> > > depending
> > > > on the SNAPSHOT of an RC-2 that will never be made so you have to
> > > > "downgrade" your dependency versions
> > > >
> > > > Am I doing something out of the ordinary here?
> > > >
> > > >
> > > >
> > > >
> > > > Alejandro Endo | Software Designer/Concepteur de logiciels
> > > >
> > > >
> > > >
> > > > From:   Stephen Connolly <stephen.alan.conno...@gmail.com
> > <javascript:;><javascript:
> > > ;>>
> > > > To:     Maven Users List <users@maven.apache.org
> > <javascript:;><javascript:;>>,
> > > > Date:   2014-01-20 12:34
> > > > Subject:        Re: versions maven plugin
> > > >
> > > >
> > > >
> > > > v-m-p does not roll back version numbers
> > > >
> > > >
> > > > On 20 January 2014 16:59, <alejandro.e...@miranda.com
> > > > <javascript:;><javascript:;>>
> > > > wrote:
> > > >
> > > > > Not sure if this is the right list for codehaus plugins. If not I
> > > > > apologize
> > > > >
> > > > > I have a pom with this
> > > > >
> > > > >         <dependencies>
> > > > >                 <dependency>
> > > > >                         <groupId>foo.blah</groupId>
> > > > >                         <artifactId>bar</artifactId>
> > > > >                         <version>1.2.0-RC-7-SNAPSHOT</version>
> > > > >                 </dependency>
> > > > >         </dependencies>
> > > > >
> > > > > I want to run the versions plugin to replace 1.2.0-RC-7-SNAPSHOT
> > > > > with
> > > > the
> > > > > version we actually released of the code, which is 1.2.0-RC-6.
> > > > > Looking
> > > > at
> > > > > the available mojos, it seems like versions:use-latest-releases is
> > > > > the right one to use. In the matrix here it says that this goal
> > > > > will
> > > modify
> > > > > -SNAPSHOT dependencies. Well, it doesn't. If i instead set the
> > > > > version
> > > > to
> > > > > 1.2.0-RC-3 (no snapshot), the mojo does update the dependency to
> > > > > 1.2.0-RC-6 so I don't know if this is just the documentation being
> > > > wrong.
> > > > > I also tried use-latest-versions without success
> > > > >
> > > > > Any idea how to do this? I just want to change the dependencies
> > > > > (which
> > > > are
> > > > > currently SNAPSHOT due to the m-release-p) to the latest released
> > > > versions
> > > > >
> > > > > Thank you,
> > > > > Alejandro Endo | Software Designer/Concepteur de logiciels
> > > > >
> > > > > DISCLAIMER:
> > > > > Privileged and/or Confidential information may be contained in
> > > > > this message. If you are not the addressee of this message, you
> > > > > may not copy, use or deliver this message to anyone. In such
> > > > > event, you should destroy the message and kindly notify the sender
> > > > > by reply e-mail. It is understood that opinions or conclusions
> > > > > that do not relate to the official business of the company are
> > > > > neither given nor endorsed by the company.
> > > > > Thank You.
> > > > >
> > > >
> > > >
> > > > DISCLAIMER:
> > > > Privileged and/or Confidential information may be contained in this
> > > > message. If you are not the addressee of this message, you may not
> > > > copy, use or deliver this message to anyone. In such event, you
> > > > should destroy the message and kindly notify the sender by reply
> > > > e-mail. It is understood that opinions or conclusions that do not
> > > > relate to the official business of the company are neither given nor
> > > > endorsed by the company.
> > > > Thank You.
> > > >
> > >
> > >
> > > --
> > > Sent from my phone
> > >
> > >
> > > DISCLAIMER:
> > > Privileged and/or Confidential information may be contained in this
> > > message. If you are not the addressee of this message, you may not
> > > copy, use or deliver this message to anyone. In such event, you should
> > > destroy the message and kindly notify the sender by reply e-mail. It
> > > is understood that opinions or conclusions that do not relate to the
> > > official business of the company are neither given nor endorsed by the
> > > company.
> > > Thank You.
> > >
> >
> >
> > --
> > Sent from my phone
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
>
>

Reply via email to