diff --git a/.travis.yml b/.travis.yml index a138ba9..8173929 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,4 +20,5 @@ deploy: script: - "./src/main/scripts/cd/release.sh" on: + tags: true branch: master diff --git a/src/main/scripts/cd/release.sh b/src/main/scripts/cd/release.sh index 7a8e3fd..f3711f2 100755 --- a/src/main/scripts/cd/release.sh +++ b/src/main/scripts/cd/release.sh @@ -10,15 +10,45 @@ commit_to_develop() { git fetch git branch -r git checkout -B develop - git rebase master + git rebase $TRAVIS_BRANCH git commit --amend -m "++++ Prepare for next development iteration build: $TRAVIS_BUILD_NUMBER ++++" git push origin develop } -mvn -P release -Darguments=-DskipTests release:prepare release:perform -DautoVersionSubmodules=true -DscmCommentPrefix="$TRAVIS_COMMIT_MESSAGE [skip ci] " -B -V -s travis-settings.xml +check_next_version() { + export NEXT_VERSION=$(echo $TRAVIS_COMMIT_MESSAGE | grep -E -o '[0-9]+\.[0-9]+\.[0-9]+-SNAPSHOT') + if [ -n "$NEXT_VERSION" ] ; then + export MVN_NEXT_VERSION=-DdevelopmentVersion=$NEXT_VERSION + fi +} + +check_tag_for_rc() { + export VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + if [ -n "$TRAVIS_TAG" ] ; then + RC_VER=$(echo $TRAVIS_TAG | grep -E -o 'RC-?[0-9]+') + RC_PREPARE=$(echo $TRAVIS_TAG | grep -o -i 'prepare') + if [ -n "$RC_VER" -a -n "$RC_PREPARE" ] ; then + export NEW_RC_VERSION=$(echo $VERSION | sed "s/SNAPSHOT/$RC_VER/g") + echo Release candidate: $NEW_RC_VERSION + echo *-*-*-*-*-*-*-*-*-*-*-* + export MVN_RELEASE_VERSION=-DreleaseVersion=$NEW_RC_VERSION + if [ -n "$MVN_NEXT_VERSION" ] ; then + export MVN_NEXT_VERSION=-DdevelopmentVersion=$VERSION; + fi + fi + fi +} + +check_next_version +check_tag_for_rc + +mvn -P release -Darguments=-DskipTests release:prepare release:perform $MVN_RELEASE_VERSION $MVN_NEXT_VERSION -DautoVersionSubmodules=true -DscmCommentPrefix="$TRAVIS_COMMIT_MESSAGE [skip ci] " -B -V -s travis-settings.xml mvn clean -commit_to_develop + +if [ -z "$NEW_RC_VERSION" ]; then + commit_to_develop +fi # extends release.sh for script_file in $RELEASE_EXEC_FILES; do