Как автоматически увеличивать теги на основе имени последней объединенной ветви? - PullRequest
0 голосов
/ 26 октября 2019

Мы пытаемся сделать автоматизацию, когда какая-то ветка объединяется в master и автоматически создает новую версию тега. Наше уникальное правило для этого: если ветвь, объединенная с мастером, исходит от функции, уровень MINOR будет увеличен, иначе уровень PATCH будет увеличен.

У меня уже есть этот скрипт:

#!/bin/bash

#latest version
VERSION=`git describe --abbrev=0 --tags`

# needs some if to determine if will increase minor or patch ...
VERSION_BITS=(${VERSION//./ })
VNUM1=${VERSION_BITS[0]}
VNUM2=${VERSION_BITS[1]}
VNUM3=${VERSION_BITS[2]}
VNUM3=$((VNUM3+1))

NEW_TAG="test$VNUM1.$VNUM2.$VNUM3"

echo "Updating $VERSION to $NEW_TAG"

GIT_COMMIT=`git rev-parse HEAD`
NEEDS_TAG=`git describe --contains $GIT_COMMIT 2>/dev/null`

if [ -z "$NEEDS_TAG" ]; then
    git tag $NEW_TAG
    echo "Tagged with $NEW_TAG"
    git push --tags
else
    echo "Already a tag on this commit"
fi

Но я не могу понять, как реализовать правило.

Например:

функциональный сценарий

last tag v1.0.0
last branch merged in master feature/my-amazing-feature
new tag v1.1.0

сценарий исправления

last tag v1.1.0
last branch merged in master hotfix/missing-some-element
new tag v1.1.1

1 Ответ

0 голосов
/ 11 ноября 2019

Попробуйте scm4j-releaser в качестве альтернативы. Автоматизирует весь git-поток

...