I see these discussions often, and I wanted to jump in and mention how we
handle continuous deploys, because I feel that it avoids many of the
downsides mentioned here, albeit with some (IMO) minor costs:

- all of our internal dependencies are SNAPSHOT.  we do not do releases,
ever, or ever depend on a fixed version

- we attach to the package phase of our builds an assembly which packages
the artifact and all of the  dependencies it tested against into a tar.gz

- we deploy the tar.gz to our artifact server with a snapshot version (ex,
MY_PROJECT-1.0-deploy.tar.gz)

- when deploying we simply take the last snapshot deploy artifact and unzip
it in production (+ some  config files etc).

so while you use SNAPSHOT versions, you are guaranteed that you are
deploying against tested dependencies.  and you never have to commit
updated dependency versions, do releases, etc.  the only real cost is a bit
of artifact server disk space… but disk space is incredibly cheap.

On Thu, May 5, 2016 at 2:13 AM, Stephen Connolly <
[email protected]> wrote:

> On 5 May 2016 at 10:00, Robert Scholte <[email protected]> wrote:
>
> > Hi Stephen, nice blog.
> >
> > There are a few things I'd like to share:
> > - The maven-release-plugin does several checks which ensures that you
> have
> > a reproducible artifact, where checking on SNAPSHOT dependencies is one
> of
> > the most important ones. (you can find a lot patterns based on the
> > versions-maven-plugin on the web, but they forget these checks)
> >
>
> This is one of the reasons why my suggestion is to actually cut a release
> for every commit (just only push the tag - and just the tag - if the
> release goes anywhere)
>
>
> > - I still have this wish to have support a couple of strategies within
> the
> > maven-release-plugin, this could be one as well.
> >
>
> Yes, I think it would be a valuable one to have in the default plugin, for
> sure... and it may need some assistance from the scm plugin too
>
>
> >
> > In a continuous environment is becomes more and more important to be able
> > to reproduce issues, which can be hard when things keep changing. This
> > might even work with SNAPSHOT dependencies if your can get the
> > distributable (either the deployable or executable artifact, assuming
> they
> > contain all the required dependencies) and have a testing setup which can
> > test with this artifact. If you can reproduce it here, you can (re)write
> it
> > as an appropriate test and fix it.
> > So next to all the current tests you need to do regression tests on the
> > distributable as well.
> > As long as this is not possible or secured in your pipeline, you should
> > NEVER EVER want to depend on SNAPSHOT-dependencies.
> >
>
> +1
>
> One that we gain with the approach I suggest is that we can actually use
> versions:resolve-ranges as we know that the pom will not be pushed back to
> master.
>
> Thus developers can keep version ranges in the pom and the CI build will
> resolve the ranges for each "release"
>
> I'd like to find a way to allow resolve-ranges to work with the current
> release plugin flow... my working idea has been to inject e.g. XML PI
> entities into the pom so that we know what range to restore, e.g.
> pre-release pom has
>
> <dependency>
>   ...
>   <version>[1.2,2.0)</version>
> </dependency>
>
> which would get resolved into the release pom as
>
> <dependency>
>   ...
>   <version>1.5<?versions-maven-plugin original="[1.2,2.0)"?></version>
> </dependency>
>
> so that when we want to un-pin we can then see the original range and
> up-lift it so that the development pom becomes
>
> <dependency>
>   ...
>   <version>[1.5,2.0)</version>
> </dependency>
>
>
>
> >
> > thanks,
> > Robert
> >
> >
> > On Wed, 04 May 2016 21:20:01 +0200, Stephen Connolly <
> > [email protected]> wrote:
> >
> > Here's an embryonic idea I had for doing Continuous Delivery with Maven
> >>
> >>
> >>
> https://www.cloudbees.com/blog/new-way-do-continuous-delivery-maven-and-jenkins-pipeline
> >>
> >> Probably needs a little fleshing out.
> >>
> >> -Stephen
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
>

Reply via email to