diff --git a/.travis.yml b/.travis.yml index a1499f80b..6e9997ec1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,12 +7,18 @@ script: - npm run eslint - npm run abaplint deploy: - provider: script - script: ./ci/deploy-merged-build.sh - skip_cleanup: true - on: - branch: master - tags: false + - provider: script + script: ./ci/deploy-merged-build.sh + skip_cleanup: true + on: + branch: master + tags: false + - provider: script + script: ./ci/deploy-release-tag.sh + skip_cleanup: true + on: + branch: master + tags: false env: global: secure: "JEKitZ+1to7pt4/lLcWJ0mtWuCRFxEBbps9hEFtHrenxBZR0dSekrLkhXBm9qRLJ6b0QLdYV0855/BiZlvOWuecB5kujbYLoCClx7+DWFszLQKgLf9UPbBoqkoLhvAtpGbAx7aMuBrqFnAD4ZBjybjEDJ5SHnxsWfu7AA2YrtPOUZvFZLqdP4muhwfVuYv+1CRZNJMZHtR4lw1R7kVQggaQmD04iMP/NKQuqNyjEC13zUxDLv5tskDAvl3OrPA3Ybx7Z0GM6piA+EkUoXtc3qnpe7e7j0IHBWpLwOjBOju4n1gMdZ13q1UzoLLsJV17jrg8tSoWw/F/Yqlo50qdRAsg6RCX4k5UpIP7mttStb9iT2pZlfwIAWHQF6aN67ic8F/AuPquMHKEgu/qfj1NK+6lfX0OHM6ovtAnNOozkSUikf7JxMeTlZLLOk+ZSTIYbxDsojMra8jeYmLtOLeFRu485fooXPt0n0aAzHDNuq7xQejvWZ0TGgxytc+A5b5y9YTsLSTZrQZmnxPweSgDSfLPY5HXK51nzEYGSP0tP4BlPAxysAsFoeLgr4oiham1ZxKfCNs7g5Cjc6Zbo1Zuq4Iza4HFl57I96QgyjFLgyFTdzfK6HJvUyIb/+fLK2RfCy0QbYboHej2Ki111I5UjkYITd+nyzmYiX9clJqSBeww=" diff --git a/ci/deploy-release-tag.sh b/ci/deploy-release-tag.sh new file mode 100755 index 000000000..8349104e6 --- /dev/null +++ b/ci/deploy-release-tag.sh @@ -0,0 +1,48 @@ +#!/bin/bash +echo "Detecting version change ..." + +VERSION_FILE=src/zif_abapgit_version.intf.abap +VERSION_CONSTANT=gc_abap_version + +git diff-tree --no-commit-id --name-only -r HEAD | grep $VERSION_FILE > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "no version change detected, skipping tag creation" + exit 0 +fi + +VERSION_DIFF=$(git diff HEAD^:$VERSION_FILE HEAD:$VERSION_FILE) + +echo "$VERSION_DIFF" | grep $VERSION_CONSTANT > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "no version change detected, skipping tag creation" + exit 0 +fi + +VERSION_BEFORE=$(echo "$VERSION_DIFF" | grep "^-.\+\b$VERSION_CONSTANT\b" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+") +VERSION_AFTER=$(echo "$VERSION_DIFF" | grep "^+.\+\b$VERSION_CONSTANT\b" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+") + +if [ -z $VERSION_BEFORE ] || [ -z $VERSION_AFTER ]; then + echo "unexpected version parsing error" + echo "$VERSION_DIFF" | grep $VERSION_CONSTANT + exit 1 +fi + +if [ $VERSION_BEFORE = $VERSION_AFTER ]; then + echo "no version change detected, skipping tag creation" + exit 0 +fi + +TAG="v$VERSION_AFTER" +echo "version change detected [$VERSION_BEFORE > $VERSION_AFTER], creating a new tag ..." + +# DEPLOY + +git config user.email "builds@travis-ci.com" +git config user.name "Travis CI" + +REPO_URL=$(git remote -v | grep -m1 '^origin' | sed -Ene 's#.*(https://[^[:space:]]+).*#\1#p') +PUSH_URL=$(echo "$REPO_URL" | sed -Ene "s#(https://)#\1$GITHUB_API_KEY@#p") +# e.g. https://$GITHUB_API_KEY@github.com/larshp/abapGit.git + +git tag $TAG || exit 1 +git push $PUSH_URL $TAG || exit 1