From b2f63259b466ca5a4be395c392546de447450334 Mon Sep 17 00:00:00 2001 From: Lars Gohr Date: Tue, 24 Mar 2020 19:48:01 +0100 Subject: [PATCH] Support semver pre-releases (https://semver.org/#spec-item-11) --- entrypoint.sh | 4 ++-- test.bats | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 1cf468ca..7a35ed7c 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -74,7 +74,7 @@ function translateDockerTag() { elif isOnMaster; then TAGS="latest" 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]+)/\1.\2.\3 \1.\2 \1/g") + 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") elif isGitTag && usesBoolean "${INPUT_TAG_NAMES}"; then TAGS=$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g") elif isGitTag; then @@ -132,7 +132,7 @@ function usesBoolean() { } function isSemver() { - echo "${1}" | grep -Eq '^refs/tags/v?([0-9]+)\.([0-9+])\.([0-9]+)$' + echo "${1}" | grep -Eq '^refs/tags/v?([0-9]+)\.([0-9+])\.([0-9]+)(-[a-zA-Z]+(\.[0-9]+)?)?$' } function useSnapshot() { diff --git a/test.bats b/test.bats index 01a6b8fe..273d5dfa 100755 --- a/test.bats +++ b/test.bats @@ -115,6 +115,29 @@ teardown() { /usr/local/bin/docker logout" } +@test "with tag semver it pushes tags using the pre-releases" { + # https://semver.org/#spec-item-11 + + SUFFIXES=('alpha.1' 'alpha' 'ALPHA' 'ALPHA.11' 'beta' 'rc.11') + for SUFFIX in "${SUFFIXES[@]}" + do + export GITHUB_REF="refs/tags/v1.1.1-${SUFFIX}" + export INPUT_TAG_SEMVER="true" + + run /entrypoint.sh + + expectStdOutContains "::set-output name=tag::1.1.1-${SUFFIX}" + + expectMockCalled "/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 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 logout" + done +} + @test "with tag semver it pushes tags without 'v' prefix" { export GITHUB_REF='refs/tags/1.2.34' export INPUT_TAG_SEMVER="true"