Release builds and continuous integration

2005-10-03 Thread David Jackman
I've just started to get my hands wet with Maven 2, and I must say I
like what I'm seeing.  Just about every headache we currently have with
Maven 1 is addressed to some extent by Maven 2.
 
One problem we were having around Maven 1 that I'm not too sure about
for the future is the issue of official release (non-snapshot) builds
and continuous build tools (like CruiseControl).  When releasing a Maven
project, the goal is to have as much confidence as possible (a
guarantee, hopefully) that the release build in the Maven repository
exactly matches the code that was tagged in source control for that
project.  The following is a list of potential risks we have in our
current Maven 1 process that I'm hoping Maven 2 can mitigate.  Can
anyone respond to these?
 
1. In Maven 1, we use the scm:prepare-release goal to start the release
process.  When it works (see the issues I've logged about it), this goal
changes the currentVersion to the release version, tags the code in
source control for the release, and adds a version element indicating
the release version and its corresponding SCM tag.  Sometimes, the
developer doing the release will want to build  deploy the official
release build himself to be sure it matches the tagged code.  When the
release build is complete, he will (should) change the currentVersion to
the next snapshot version.
However, since we use a continuous build tool, there is a risk that
between the time the developer deploys the release build and checks in
the project.xml with the next snapshot version, the automated build will
do its own build using the release version and deploy over the top of
the official release build.  There are steps the developer can take to
mitigate this, but it would be better if Maven helped out more.  For
this scenario, the easiest solution would be for Maven to fail the
deploy for a release (non-snapshot) version if there is already an
artifact in the destination repository of the same name.  Is this
possible?
 
2. Ideally, we'd prefer that the build machine (running the continuous
build tool) do the official release builds because it's more of a
controlled build environment.  However, there are two risks here.  First
is that the build tool will do more than one build of the release
version (before the currentVersion is changed to the next snapshot
version).  The solution in the previous paragraph would help here as
well.  The second risk is that someone else will check in a code change
before the build tool does the official release build, so the release
artifact does not match the code tagged for that release in source
control.  Any ideas on how to address this problem?
One approach would be to have some plugin on the continuous build
machine that checks the projects before starting the build (but after
the latest code is obtained from SCM) to see if any projects have a
release (non-snapshot) currentVersion value.  If so, this plugin would
use the version element for this version to make sure that the code
that will be built matches the tag for this release.  Then it lets the
build go on.  Would this be hard in Maven 2?  Even better would be to
have a plugin that, once the release build is finished and deployed,
would change the currentVersion to the next snapshot version.
 
What do you think?  Has anyone else had to deal with this risks?  Is
there a better approach to solve these problems that I'm not seeing?
 
Thanks,
..David..


RE: Release builds and continuous integration

2005-10-03 Thread Allison, Bob
I really dislike your suggestion for item 1, since that implies that if
I discover a problem with the release build and have to rebuild it, I
have to remember to manually remove the release build from the
repository first.

-Original Message-
From: David Jackman [mailto:[EMAIL PROTECTED] 
Sent: Monday, October 03, 2005 10:54
To: Maven Users List
Subject: Release builds and continuous integration


I've just started to get my hands wet with Maven 2, and I must say I
like what I'm seeing.  Just about every headache we currently have with
Maven 1 is addressed to some extent by Maven 2.
 
One problem we were having around Maven 1 that I'm not too sure about
for the future is the issue of official release (non-snapshot) builds
and continuous build tools (like CruiseControl).  When releasing a Maven
project, the goal is to have as much confidence as possible (a
guarantee, hopefully) that the release build in the Maven repository
exactly matches the code that was tagged in source control for that
project.  The following is a list of potential risks we have in our
current Maven 1 process that I'm hoping Maven 2 can mitigate.  Can
anyone respond to these?
 
1. In Maven 1, we use the scm:prepare-release goal to start the release
process.  When it works (see the issues I've logged about it), this goal
changes the currentVersion to the release version, tags the code in
source control for the release, and adds a version element indicating
the release version and its corresponding SCM tag.  Sometimes, the
developer doing the release will want to build  deploy the official
release build himself to be sure it matches the tagged code.  When the
release build is complete, he will (should) change the currentVersion to
the next snapshot version.
However, since we use a continuous build tool, there is a risk that
between the time the developer deploys the release build and checks in
the project.xml with the next snapshot version, the automated build will
do its own build using the release version and deploy over the top of
the official release build.  There are steps the developer can take to
mitigate this, but it would be better if Maven helped out more.  For
this scenario, the easiest solution would be for Maven to fail the
deploy for a release (non-snapshot) version if there is already an
artifact in the destination repository of the same name.  Is this
possible?
 
2. Ideally, we'd prefer that the build machine (running the continuous
build tool) do the official release builds because it's more of a
controlled build environment.  However, there are two risks here.  First
is that the build tool will do more than one build of the release
version (before the currentVersion is changed to the next snapshot
version).  The solution in the previous paragraph would help here as
well.  The second risk is that someone else will check in a code change
before the build tool does the official release build, so the release
artifact does not match the code tagged for that release in source
control.  Any ideas on how to address this problem?
One approach would be to have some plugin on the continuous build
machine that checks the projects before starting the build (but after
the latest code is obtained from SCM) to see if any projects have a
release (non-snapshot) currentVersion value.  If so, this plugin would
use the version element for this version to make sure that the code
that will be built matches the tag for this release.  Then it lets the
build go on.  Would this be hard in Maven 2?  Even better would be to
have a plugin that, once the release build is finished and deployed,
would change the currentVersion to the next snapshot version.
 
What do you think?  Has anyone else had to deal with this risks?  Is
there a better approach to solve these problems that I'm not seeing?
 
Thanks,
..David..

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Release builds and continuous integration

2005-10-03 Thread Jeff Jensen
Consider that this is outside of the build tool.

I suggest branching to a release codeline for releasing from, when the product
is ready.  Your release process sounds formal enough for this (it is usually
easy to be formal enough).

You can also then take care of #2 by having it monitor the release codeline too.

Each codeline must have only one purpose, and at the time of your release, you
are overloading that codeline with two purposes - ongoing development and
releasing.

Hopefully you will find, as others do, this approach simplifies the release prep
process.


Quoting David Jackman [EMAIL PROTECTED]:

 I've just started to get my hands wet with Maven 2, and I must say I
 like what I'm seeing.  Just about every headache we currently have with
 Maven 1 is addressed to some extent by Maven 2.

 One problem we were having around Maven 1 that I'm not too sure about
 for the future is the issue of official release (non-snapshot) builds
 and continuous build tools (like CruiseControl).  When releasing a Maven
 project, the goal is to have as much confidence as possible (a
 guarantee, hopefully) that the release build in the Maven repository
 exactly matches the code that was tagged in source control for that
 project.  The following is a list of potential risks we have in our
 current Maven 1 process that I'm hoping Maven 2 can mitigate.  Can
 anyone respond to these?

 1. In Maven 1, we use the scm:prepare-release goal to start the release
 process.  When it works (see the issues I've logged about it), this goal
 changes the currentVersion to the release version, tags the code in
 source control for the release, and adds a version element indicating
 the release version and its corresponding SCM tag.  Sometimes, the
 developer doing the release will want to build  deploy the official
 release build himself to be sure it matches the tagged code.  When the
 release build is complete, he will (should) change the currentVersion to
 the next snapshot version.
 However, since we use a continuous build tool, there is a risk that
 between the time the developer deploys the release build and checks in
 the project.xml with the next snapshot version, the automated build will
 do its own build using the release version and deploy over the top of
 the official release build.  There are steps the developer can take to
 mitigate this, but it would be better if Maven helped out more.  For
 this scenario, the easiest solution would be for Maven to fail the
 deploy for a release (non-snapshot) version if there is already an
 artifact in the destination repository of the same name.  Is this
 possible?

 2. Ideally, we'd prefer that the build machine (running the continuous
 build tool) do the official release builds because it's more of a
 controlled build environment.  However, there are two risks here.  First
 is that the build tool will do more than one build of the release
 version (before the currentVersion is changed to the next snapshot
 version).  The solution in the previous paragraph would help here as
 well.  The second risk is that someone else will check in a code change
 before the build tool does the official release build, so the release
 artifact does not match the code tagged for that release in source
 control.  Any ideas on how to address this problem?
 One approach would be to have some plugin on the continuous build
 machine that checks the projects before starting the build (but after
 the latest code is obtained from SCM) to see if any projects have a
 release (non-snapshot) currentVersion value.  If so, this plugin would
 use the version element for this version to make sure that the code
 that will be built matches the tag for this release.  Then it lets the
 build go on.  Would this be hard in Maven 2?  Even better would be to
 have a plugin that, once the release build is finished and deployed,
 would change the currentVersion to the next snapshot version.

 What do you think?  Has anyone else had to deal with this risks?  Is
 there a better approach to solve these problems that I'm not seeing?

 Thanks,
 ..David..





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Release builds and continuous integration

2005-10-03 Thread Vitaliy Geraymovych
My understanding is that if you are making changes to official release
you really should increment the version (and tag it in CVS/SVN).

Vitaliy

On 10/3/05, Allison, Bob [EMAIL PROTECTED] wrote:
 I really dislike your suggestion for item 1, since that implies that if
 I discover a problem with the release build and have to rebuild it, I
 have to remember to manually remove the release build from the
 repository first.

 -Original Message-
 From: David Jackman [mailto:[EMAIL PROTECTED]
 Sent: Monday, October 03, 2005 10:54
 To: Maven Users List
 Subject: Release builds and continuous integration


 I've just started to get my hands wet with Maven 2, and I must say I
 like what I'm seeing.  Just about every headache we currently have with
 Maven 1 is addressed to some extent by Maven 2.

 One problem we were having around Maven 1 that I'm not too sure about
 for the future is the issue of official release (non-snapshot) builds
 and continuous build tools (like CruiseControl).  When releasing a Maven
 project, the goal is to have as much confidence as possible (a
 guarantee, hopefully) that the release build in the Maven repository
 exactly matches the code that was tagged in source control for that
 project.  The following is a list of potential risks we have in our
 current Maven 1 process that I'm hoping Maven 2 can mitigate.  Can
 anyone respond to these?

 1. In Maven 1, we use the scm:prepare-release goal to start the release
 process.  When it works (see the issues I've logged about it), this goal
 changes the currentVersion to the release version, tags the code in
 source control for the release, and adds a version element indicating
 the release version and its corresponding SCM tag.  Sometimes, the
 developer doing the release will want to build  deploy the official
 release build himself to be sure it matches the tagged code.  When the
 release build is complete, he will (should) change the currentVersion to
 the next snapshot version.
 However, since we use a continuous build tool, there is a risk that
 between the time the developer deploys the release build and checks in
 the project.xml with the next snapshot version, the automated build will
 do its own build using the release version and deploy over the top of
 the official release build.  There are steps the developer can take to
 mitigate this, but it would be better if Maven helped out more.  For
 this scenario, the easiest solution would be for Maven to fail the
 deploy for a release (non-snapshot) version if there is already an
 artifact in the destination repository of the same name.  Is this
 possible?

 2. Ideally, we'd prefer that the build machine (running the continuous
 build tool) do the official release builds because it's more of a
 controlled build environment.  However, there are two risks here.  First
 is that the build tool will do more than one build of the release
 version (before the currentVersion is changed to the next snapshot
 version).  The solution in the previous paragraph would help here as
 well.  The second risk is that someone else will check in a code change
 before the build tool does the official release build, so the release
 artifact does not match the code tagged for that release in source
 control.  Any ideas on how to address this problem?
 One approach would be to have some plugin on the continuous build
 machine that checks the projects before starting the build (but after
 the latest code is obtained from SCM) to see if any projects have a
 release (non-snapshot) currentVersion value.  If so, this plugin would
 use the version element for this version to make sure that the code
 that will be built matches the tag for this release.  Then it lets the
 build go on.  Would this be hard in Maven 2?  Even better would be to
 have a plugin that, once the release build is finished and deployed,
 would change the currentVersion to the next snapshot version.

 What do you think?  Has anyone else had to deal with this risks?  Is
 there a better approach to solve these problems that I'm not seeing?

 Thanks,
 ..David..

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: Release builds and continuous integration

2005-10-03 Thread Allison, Bob
Unless, of course, the problem wasn't the code but that it was packaged
incorrectly.  In this case, I am only correcting the packaging, not the
release.

-Original Message-
From: Vitaliy Geraymovych [mailto:[EMAIL PROTECTED] 
Sent: Monday, October 03, 2005 11:28
To: Maven Users List
Subject: Re: Release builds and continuous integration


My understanding is that if you are making changes to official release
you really should increment the version (and tag it in CVS/SVN).

Vitaliy

On 10/3/05, Allison, Bob [EMAIL PROTECTED] wrote:
 I really dislike your suggestion for item 1, since that implies that
if
 I discover a problem with the release build and have to rebuild it, I
 have to remember to manually remove the release build from the
 repository first.

 -Original Message-
 From: David Jackman [mailto:[EMAIL PROTECTED]
 Sent: Monday, October 03, 2005 10:54
 To: Maven Users List
 Subject: Release builds and continuous integration


 I've just started to get my hands wet with Maven 2, and I must say I
 like what I'm seeing.  Just about every headache we currently have
with
 Maven 1 is addressed to some extent by Maven 2.

 One problem we were having around Maven 1 that I'm not too sure about
 for the future is the issue of official release (non-snapshot)
builds
 and continuous build tools (like CruiseControl).  When releasing a
Maven
 project, the goal is to have as much confidence as possible (a
 guarantee, hopefully) that the release build in the Maven repository
 exactly matches the code that was tagged in source control for that
 project.  The following is a list of potential risks we have in our
 current Maven 1 process that I'm hoping Maven 2 can mitigate.  Can
 anyone respond to these?

 1. In Maven 1, we use the scm:prepare-release goal to start the
release
 process.  When it works (see the issues I've logged about it), this
goal
 changes the currentVersion to the release version, tags the code in
 source control for the release, and adds a version element
indicating
 the release version and its corresponding SCM tag.  Sometimes, the
 developer doing the release will want to build  deploy the official
 release build himself to be sure it matches the tagged code.  When the
 release build is complete, he will (should) change the currentVersion
to
 the next snapshot version.
 However, since we use a continuous build tool, there is a risk that
 between the time the developer deploys the release build and checks in
 the project.xml with the next snapshot version, the automated build
will
 do its own build using the release version and deploy over the top of
 the official release build.  There are steps the developer can take
to
 mitigate this, but it would be better if Maven helped out more.  For
 this scenario, the easiest solution would be for Maven to fail the
 deploy for a release (non-snapshot) version if there is already an
 artifact in the destination repository of the same name.  Is this
 possible?

 2. Ideally, we'd prefer that the build machine (running the continuous
 build tool) do the official release builds because it's more of a
 controlled build environment.  However, there are two risks here.
First
 is that the build tool will do more than one build of the release
 version (before the currentVersion is changed to the next snapshot
 version).  The solution in the previous paragraph would help here as
 well.  The second risk is that someone else will check in a code
change
 before the build tool does the official release build, so the release
 artifact does not match the code tagged for that release in source
 control.  Any ideas on how to address this problem?
 One approach would be to have some plugin on the continuous build
 machine that checks the projects before starting the build (but after
 the latest code is obtained from SCM) to see if any projects have a
 release (non-snapshot) currentVersion value.  If so, this plugin would
 use the version element for this version to make sure that the code
 that will be built matches the tag for this release.  Then it lets the
 build go on.  Would this be hard in Maven 2?  Even better would be to
 have a plugin that, once the release build is finished and deployed,
 would change the currentVersion to the next snapshot version.

 What do you think?  Has anyone else had to deal with this risks?  Is
 there a better approach to solve these problems that I'm not seeing?

 Thanks,
 ..David..

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: Release builds and continuous integration

2005-10-03 Thread David Jackman
That's correct (because if someone has already downloaded the bad
release they'll never get the good one).  The need to replace an
official release build should be happening so infrequently that having
to manually clear it out before building is not an undue burden.  It's
definitely worth that to prevent someone from accidentally replacing
the release build.

..David..


-Original Message-
From: Vitaliy Geraymovych [mailto:[EMAIL PROTECTED] 
Sent: Monday, October 03, 2005 9:28 AM
To: Maven Users List
Subject: Re: Release builds and continuous integration

My understanding is that if you are making changes to official release
you really should increment the version (and tag it in CVS/SVN).

Vitaliy

On 10/3/05, Allison, Bob [EMAIL PROTECTED] wrote:
 I really dislike your suggestion for item 1, since that implies that 
 if I discover a problem with the release build and have to rebuild it,

 I have to remember to manually remove the release build from the 
 repository first.

 -Original Message-
 From: David Jackman [mailto:[EMAIL PROTECTED]
 Sent: Monday, October 03, 2005 10:54
 To: Maven Users List
 Subject: Release builds and continuous integration


 I've just started to get my hands wet with Maven 2, and I must say I 
 like what I'm seeing.  Just about every headache we currently have 
 with Maven 1 is addressed to some extent by Maven 2.

 One problem we were having around Maven 1 that I'm not too sure about 
 for the future is the issue of official release (non-snapshot) 
 builds and continuous build tools (like CruiseControl).  When 
 releasing a Maven project, the goal is to have as much confidence as 
 possible (a guarantee, hopefully) that the release build in the Maven 
 repository exactly matches the code that was tagged in source control 
 for that project.  The following is a list of potential risks we have 
 in our current Maven 1 process that I'm hoping Maven 2 can mitigate.  
 Can anyone respond to these?

 1. In Maven 1, we use the scm:prepare-release goal to start the 
 release process.  When it works (see the issues I've logged about it),

 this goal changes the currentVersion to the release version, tags the 
 code in source control for the release, and adds a version element 
 indicating the release version and its corresponding SCM tag.  
 Sometimes, the developer doing the release will want to build  deploy

 the official release build himself to be sure it matches the tagged 
 code.  When the release build is complete, he will (should) change the

 currentVersion to the next snapshot version.
 However, since we use a continuous build tool, there is a risk that 
 between the time the developer deploys the release build and checks in

 the project.xml with the next snapshot version, the automated build 
 will do its own build using the release version and deploy over the 
 top of the official release build.  There are steps the developer 
 can take to mitigate this, but it would be better if Maven helped out 
 more.  For this scenario, the easiest solution would be for Maven to 
 fail the deploy for a release (non-snapshot) version if there is 
 already an artifact in the destination repository of the same name.  
 Is this possible?

 2. Ideally, we'd prefer that the build machine (running the continuous

 build tool) do the official release builds because it's more of a 
 controlled build environment.  However, there are two risks here.  
 First is that the build tool will do more than one build of the 
 release version (before the currentVersion is changed to the next 
 snapshot version).  The solution in the previous paragraph would help 
 here as well.  The second risk is that someone else will check in a 
 code change before the build tool does the official release build, so 
 the release artifact does not match the code tagged for that release 
 in source control.  Any ideas on how to address this problem?
 One approach would be to have some plugin on the continuous build 
 machine that checks the projects before starting the build (but after 
 the latest code is obtained from SCM) to see if any projects have a 
 release (non-snapshot) currentVersion value.  If so, this plugin would

 use the version element for this version to make sure that the code 
 that will be built matches the tag for this release.  Then it lets the

 build go on.  Would this be hard in Maven 2?  Even better would be to 
 have a plugin that, once the release build is finished and deployed, 
 would change the currentVersion to the next snapshot version.

 What do you think?  Has anyone else had to deal with this risks?  Is 
 there a better approach to solve these problems that I'm not seeing?

 Thanks,
 ..David..

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED

RE: Release builds and continuous integration

2005-10-03 Thread David Jackman
The release process is formal enough, but I really don't want to create
branches for every release.  The tagged code should be enough, allowing
branching only when patches need to be made for previous releases.

Creating a branch for the official release also makes it extremely
tedious for our goal of having the build machine do the official build.
Once the branch is created, we'd have to create a new project to build
the branch, and it would only get built once.

I don't see the codeline having more than one purpose at release time.
At certain points in the project's lifetime it's released for whatever
reason.  If there's ongoing development at the time, that's not a huge
problem (there isn't ongoing development for the major releases so these
can be more closely scrutinized).  We just want to make sure that the
tagged code matches the code that actually built the release artifact.

..David..


-Original Message-
From: Jeff Jensen [mailto:[EMAIL PROTECTED] 
Sent: Monday, October 03, 2005 9:27 AM
To: Maven Users List
Cc: Maven Users List
Subject: Re: Release builds and continuous integration

Consider that this is outside of the build tool.

I suggest branching to a release codeline for releasing from, when the
product is ready.  Your release process sounds formal enough for this
(it is usually easy to be formal enough).

You can also then take care of #2 by having it monitor the release
codeline too.

Each codeline must have only one purpose, and at the time of your
release, you are overloading that codeline with two purposes - ongoing
development and releasing.

Hopefully you will find, as others do, this approach simplifies the
release prep process.


Quoting David Jackman [EMAIL PROTECTED]:

 I've just started to get my hands wet with Maven 2, and I must say I 
 like what I'm seeing.  Just about every headache we currently have 
 with Maven 1 is addressed to some extent by Maven 2.

 One problem we were having around Maven 1 that I'm not too sure about 
 for the future is the issue of official release (non-snapshot) 
 builds and continuous build tools (like CruiseControl).  When 
 releasing a Maven project, the goal is to have as much confidence as 
 possible (a guarantee, hopefully) that the release build in the Maven 
 repository exactly matches the code that was tagged in source control 
 for that project.  The following is a list of potential risks we have 
 in our current Maven 1 process that I'm hoping Maven 2 can mitigate.  
 Can anyone respond to these?

 1. In Maven 1, we use the scm:prepare-release goal to start the 
 release process.  When it works (see the issues I've logged about it),

 this goal changes the currentVersion to the release version, tags the 
 code in source control for the release, and adds a version element 
 indicating the release version and its corresponding SCM tag.  
 Sometimes, the developer doing the release will want to build  deploy

 the official release build himself to be sure it matches the tagged 
 code.  When the release build is complete, he will (should) change the

 currentVersion to the next snapshot version.
 However, since we use a continuous build tool, there is a risk that 
 between the time the developer deploys the release build and checks in

 the project.xml with the next snapshot version, the automated build 
 will do its own build using the release version and deploy over the 
 top of the official release build.  There are steps the developer 
 can take to mitigate this, but it would be better if Maven helped out 
 more.  For this scenario, the easiest solution would be for Maven to 
 fail the deploy for a release (non-snapshot) version if there is 
 already an artifact in the destination repository of the same name.  
 Is this possible?

 2. Ideally, we'd prefer that the build machine (running the continuous

 build tool) do the official release builds because it's more of a 
 controlled build environment.  However, there are two risks here.  
 First is that the build tool will do more than one build of the 
 release version (before the currentVersion is changed to the next 
 snapshot version).  The solution in the previous paragraph would help 
 here as well.  The second risk is that someone else will check in a 
 code change before the build tool does the official release build, so 
 the release artifact does not match the code tagged for that release 
 in source control.  Any ideas on how to address this problem?
 One approach would be to have some plugin on the continuous build 
 machine that checks the projects before starting the build (but after 
 the latest code is obtained from SCM) to see if any projects have a 
 release (non-snapshot) currentVersion value.  If so, this plugin would

 use the version element for this version to make sure that the code 
 that will be built matches the tag for this release.  Then it lets the

 build go on.  Would this be hard in Maven 2?  Even better would be to 
 have a plugin that, once

RE: Release builds and continuous integration

2005-10-03 Thread Jeff Jensen
Sorry, I wasn't clear...
Don't create a new branch for _each_ release (you are very correct that that
would be very tedious and completely silly!).  Create them only for significant
releases, e.g. release 2.0, and merge into it at each release time - reuse it
for 2.0.1, and on.

Then you would only setup one time the significant release on the build machine
(the release build), and the CI monitors that codeline and automatically builds
when detecting the changes (merges).

Anyway, seems like you have a different solution in progress...


Quoting David Jackman [EMAIL PROTECTED]:

 The release process is formal enough, but I really don't want to create
 branches for every release.  The tagged code should be enough, allowing
 branching only when patches need to be made for previous releases.

 Creating a branch for the official release also makes it extremely
 tedious for our goal of having the build machine do the official build.
 Once the branch is created, we'd have to create a new project to build
 the branch, and it would only get built once.

 I don't see the codeline having more than one purpose at release time.
 At certain points in the project's lifetime it's released for whatever
 reason.  If there's ongoing development at the time, that's not a huge
 problem (there isn't ongoing development for the major releases so these
 can be more closely scrutinized).  We just want to make sure that the
 tagged code matches the code that actually built the release artifact.

 ..David..


 -Original Message-
 From: Jeff Jensen [mailto:[EMAIL PROTECTED]
 Sent: Monday, October 03, 2005 9:27 AM
 To: Maven Users List
 Cc: Maven Users List
 Subject: Re: Release builds and continuous integration

 Consider that this is outside of the build tool.

 I suggest branching to a release codeline for releasing from, when the
 product is ready.  Your release process sounds formal enough for this
 (it is usually easy to be formal enough).

 You can also then take care of #2 by having it monitor the release
 codeline too.

 Each codeline must have only one purpose, and at the time of your
 release, you are overloading that codeline with two purposes - ongoing
 development and releasing.

 Hopefully you will find, as others do, this approach simplifies the
 release prep process.


 Quoting David Jackman [EMAIL PROTECTED]:

  I've just started to get my hands wet with Maven 2, and I must say I
  like what I'm seeing.  Just about every headache we currently have
  with Maven 1 is addressed to some extent by Maven 2.
 
  One problem we were having around Maven 1 that I'm not too sure about
  for the future is the issue of official release (non-snapshot)
  builds and continuous build tools (like CruiseControl).  When
  releasing a Maven project, the goal is to have as much confidence as
  possible (a guarantee, hopefully) that the release build in the Maven
  repository exactly matches the code that was tagged in source control
  for that project.  The following is a list of potential risks we have
  in our current Maven 1 process that I'm hoping Maven 2 can mitigate.
  Can anyone respond to these?
 
  1. In Maven 1, we use the scm:prepare-release goal to start the
  release process.  When it works (see the issues I've logged about it),

  this goal changes the currentVersion to the release version, tags the
  code in source control for the release, and adds a version element
  indicating the release version and its corresponding SCM tag.
  Sometimes, the developer doing the release will want to build  deploy

  the official release build himself to be sure it matches the tagged
  code.  When the release build is complete, he will (should) change the

  currentVersion to the next snapshot version.
  However, since we use a continuous build tool, there is a risk that
  between the time the developer deploys the release build and checks in

  the project.xml with the next snapshot version, the automated build
  will do its own build using the release version and deploy over the
  top of the official release build.  There are steps the developer
  can take to mitigate this, but it would be better if Maven helped out
  more.  For this scenario, the easiest solution would be for Maven to
  fail the deploy for a release (non-snapshot) version if there is
  already an artifact in the destination repository of the same name.
  Is this possible?
 
  2. Ideally, we'd prefer that the build machine (running the continuous

  build tool) do the official release builds because it's more of a
  controlled build environment.  However, there are two risks here.
  First is that the build tool will do more than one build of the
  release version (before the currentVersion is changed to the next
  snapshot version).  The solution in the previous paragraph would help
  here as well.  The second risk is that someone else will check in a
  code change before the build tool does the official release build, so
  the release artifact does not match