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