Don't update major, minor and patch version on pre-release

Fixes https://github.com/elgohr/Publish-Docker-Github-Action/issues/108
This commit is contained in:
Lars Gohr
2020-11-15 20:16:27 +01:00
parent e6b13fed50
commit 5e568ddac4
2 changed files with 12 additions and 5 deletions

View File

@@ -98,7 +98,11 @@ translateDockerTag() {
elif isOnDefaultBranch; then elif isOnDefaultBranch; then
TAGS="latest" TAGS="latest"
elif isGitTag && usesBoolean "${INPUT_TAG_SEMVER}" && isSemver "${GITHUB_REF}"; then elif isGitTag && usesBoolean "${INPUT_TAG_SEMVER}" && isSemver "${GITHUB_REF}"; then
TAGS=$(echo "${GITHUB_REF}" | sed -e "s/refs\/tags\///g" | sed -E "s/v?([0-9]+)\.([0-9]+)\.([0-9]+)(-[a-zA-Z]+(\.[0-9]+)?)?/\1.\2.\3\4 \1.\2\4 \1\4/g") if isPreRelease "${GITHUB_REF}"; then
TAGS=$(echo "${GITHUB_REF}" | sed -e "s/refs\/tags\///g" | sed -E "s/v?([0-9]+)\.([0-9]+)\.([0-9]+)(-[a-zA-Z]+(\.[0-9]+)?)?/\1.\2.\3\4/g")
else
TAGS=$(echo "${GITHUB_REF}" | sed -e "s/refs\/tags\///g" | sed -E "s/v?([0-9]+)\.([0-9]+)\.([0-9]+)/\1.\2.\3\4 \1.\2\4 \1\4/g")
fi
elif isGitTag && usesBoolean "${INPUT_TAG_NAMES}"; then elif isGitTag && usesBoolean "${INPUT_TAG_NAMES}"; then
TAGS=$(echo "${GITHUB_REF}" | sed -e "s/refs\/tags\///g") TAGS=$(echo "${GITHUB_REF}" | sed -e "s/refs\/tags\///g")
elif isGitTag; then elif isGitTag; then
@@ -163,6 +167,10 @@ isSemver() {
echo "${1}" | grep -Eq '^refs/tags/v?([0-9]+)\.([0-9]+)\.([0-9]+)(-[a-zA-Z]+(\.[0-9]+)?)?$' echo "${1}" | grep -Eq '^refs/tags/v?([0-9]+)\.([0-9]+)\.([0-9]+)(-[a-zA-Z]+(\.[0-9]+)?)?$'
} }
isPreRelease() {
echo "${1}" | grep -Eq '-'
}
useSnapshot() { useSnapshot() {
local TIMESTAMP=`date +%Y%m%d%H%M%S` local TIMESTAMP=`date +%Y%m%d%H%M%S`
local SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-6) local SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-6)

View File

@@ -147,7 +147,8 @@ teardown() {
/usr/local/bin/docker logout" /usr/local/bin/docker logout"
} }
@test "with tag semver it pushes tags using the pre-releases" { @test "with tag semver it pushes tags using the pre-release, but does not update the major, minor or patch version" {
# as pre-release versions tend to be unstable
# https://semver.org/#spec-item-11 # https://semver.org/#spec-item-11
SUFFIXES=('alpha.1' 'alpha' 'ALPHA' 'ALPHA.11' 'beta' 'rc.11') SUFFIXES=('alpha.1' 'alpha' 'ALPHA' 'ALPHA.11' 'beta' 'rc.11')
@@ -161,10 +162,8 @@ teardown() {
expectStdOutContains "::set-output name=tag::1.1.1-${SUFFIX}" expectStdOutContains "::set-output name=tag::1.1.1-${SUFFIX}"
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
/usr/local/bin/docker build -t my/repository:1.1.1-${SUFFIX} -t my/repository:1.1-${SUFFIX} -t my/repository:1-${SUFFIX} . /usr/local/bin/docker build -t my/repository:1.1.1-${SUFFIX} .
/usr/local/bin/docker push my/repository:1.1.1-${SUFFIX} /usr/local/bin/docker push my/repository:1.1.1-${SUFFIX}
/usr/local/bin/docker push my/repository:1.1-${SUFFIX}
/usr/local/bin/docker push my/repository:1-${SUFFIX}
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:1.1.1-${SUFFIX} /usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:1.1.1-${SUFFIX}
/usr/local/bin/docker logout" /usr/local/bin/docker logout"
done done