On Sun 5 Nov 2017 at 11:31, Stephen Connolly <
stephen.alan.conno...@gmail.com> wrote:

>
> On Fri 27 Oct 2017 at 23:28, Laird Nelson <ljnel...@gmail.com> wrote:
>
>> On Fri, Oct 27, 2017 at 1:58 AM ahardy42 <adam.ha...@cyberspaceroad.com>
>> wrote:
>>
>> > How can I tell maven to increment the version and commit the edited pom
>> > without the CI platform seeing the commit and kicking off again in an
>> > infinite loop?
>>
>>
>> Indeed.  If you just use the maven-release-plugin, as you should, on
>> something like Gitlab CI, for example, then indeed you'll get an infinite
>> loop.  I've been burned by this several times.
>
>
> I suggest that for CD you use a slightly different pattern
>
> Do not tag the deployment branch, rather tag off-branch
>
> (Approx) Commands are probably easier to see
>
> $ git fetch origin
> $ git checkout master
> $ git reset —hard origin/master
> $ git clean -f
> $ mvn -DpushChanges=false release:prepare -B
> -DreleaseVersion=$RELEASE_VERSION
> $ git push —tags
> $ mvn -B release:perform
> $ git reset —hard origin/master
>
> The key bit here is that we do not publish the pom changes *on the branch
> being released* (-DpushChanges=false) but we publish the tags to provide
> the traceability of what is released
>
> This means that the developer does not have pom merge conflicts and does
> not see commit noise... but at the same time we have complete traceability
> of releases
>
> The version in the pom in master branch would probably be 1.x.x-SNAPSHOT
> or x-SNAPSHOT *always* and you’d need to not deploy SNAPSHOTs to
> repositories used by users
>
> The hard part here is determining what to set the $RELEASE_VERSION
> environment variable to.
>
> This also has the advantage that the CI server will not have to try and
> ignore commits.
>

Here is an early blog post I wrote on this topic

https://t.co/Kuat0Dejut


>
>>
>> Some of these CI systems have a way to specify skipping CI on a given
>> checkin.  For example, in Gitlab, you can use "[skip ci]" in your commit
>> message, and any configured pipelines won't run:
>> https://docs.gitlab.com/ee/ci/yaml/#skipping-jobs  This is true of Travis
>> CI as well:
>> https://docs.travis-ci.com/user/customizing-the-build/#Skipping-a-build
>>
>> So if you set the <scmCommentPrefix> property either on the command line
>> or
>> in your pom.xml to contain "[skip ci]" (in Gitlab's or Travis CI's case),
>> you will be good (
>>
>> http://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html#scmCommentPrefix
>> ).
>> The commits that the maven-release-plugin will have this string in their
>> commit message, and that will break the infinite loop.
>>
>> Best,
>> Laird
>> --
>> https://about.me/lairdnelson
>>
> --
> Sent from my phone
>
-- 
Sent from my phone

Reply via email to