Skip to content

Commit 37dfcb3

Browse files
authored
Merge pull request #5 from geoadmin/bug-duplicate-tag
PB-579: Fix pre-release tagging issue (duplicate tag)
2 parents 8f45dd3 + 76441de commit 37dfcb3

File tree

1 file changed

+44
-22
lines changed

1 file changed

+44
-22
lines changed

entrypoint.sh

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ tag_context=${TAG_CONTEXT:-repo}
1414
suffix=${PRERELEASE_SUFFIX:-beta}
1515
verbose=${VERBOSE:-true}
1616

17+
if [[ -z "${suffix}" ]]
18+
then
19+
echo "::error::PRERELEASE_SUFFIX is set to an empty string"
20+
exit 1
21+
fi
22+
1723
# since https://github.blog/2022-04-12-git-security-vulnerability-announced/ runner uses?
1824
if [[ "${source}" =~ ^\.$ ]]
1925
then
@@ -84,6 +90,9 @@ case "${tag_context}" in
8490
;;
8591
esac
8692

93+
echo "Last tag: ${tag}"
94+
echo "Last pre-release tag: ${pre_tag}"
95+
8796

8897
# if there are none, start tags at INITIAL_VERSION which defaults to 0.0.0
8998
if [[ -z "${tag}" ]]
@@ -114,45 +123,59 @@ fi
114123
# echo log if verbose is wanted
115124
if ${verbose}
116125
then
117-
echo "${log}"
126+
echo "Git logs"
127+
echo "---------------------------"
128+
echo "${log}"
129+
echo "---------------------------"
118130
fi
119131

120132
case "${log}" in
121-
*#major* ) new=$(semver -i major "${tag}"); part="major";;
122-
*#minor* ) new=$(semver -i minor "${tag}"); part="minor";;
123-
*#patch* ) new=$(semver -i patch "${tag}"); part="patch";;
124-
*#none* )
125-
echo "Default bump was set to none. Skipping..."
126-
echo "new_tag=${tag}" >> "${GITHUB_OUTPUT}"
127-
echo "tag=${tag}" >> "${GITHUB_OUTPUT}"
128-
exit 0
129-
;;
133+
*#major* ) part="major";;
134+
*#minor* ) part="minor";;
135+
*#patch* ) part="patch";;
136+
*#none* ) part="none" ;;
130137
* )
131138
if [[ "${default_semvar_bump}" == "none" ]]
132139
then
133-
echo "Default bump was set to none. Skipping..."
134-
echo "new_tag=${tag}" >> "${GITHUB_OUTPUT}"
135-
echo "tag=${tag}" >> "${GITHUB_OUTPUT}"
136-
exit 0
140+
part="none"
137141
else
138-
new=$(semver -i "${default_semvar_bump}" "${tag}"); part=${default_semvar_bump}
142+
part="${default_semvar_bump}"
139143
fi
140144
;;
141145
esac
146+
echo "Bumping type set to ${part}"
147+
echo "part=${part}" >> "${GITHUB_OUTPUT}"
148+
149+
if [[ "${part}" == "none" ]]
150+
then
151+
echo "Default bump was set to none. Skipping..."
152+
# shellcheck disable=SC2129
153+
echo "new_tag=${tag}" >> "${GITHUB_OUTPUT}"
154+
echo "tag=${tag}" >> "${GITHUB_OUTPUT}"
155+
exit 0
156+
fi
142157

143158
if ${pre_release}
144159
then
145-
# Already a prerelease available, bump it
146-
if [[ "${pre_tag}" == *"${new}"* ]]
160+
if [[ "${tag}" == "${pre_tag}" ]]
147161
then
148-
new=$(semver -i prerelease "${pre_tag}" --preid "${suffix}"); part="pre-${part}"
162+
echo "First pre-release tag detected, create initial pre-release tag using bump type ${part}"
163+
new=$(semver -i "pre${part}" "${pre_tag}" --preid "${suffix}")
149164
else
150-
new="${new}-${suffix}.1"; part="pre-${part}"
165+
echo "Pre-release tag already exists, increment it based on bump type ${part}"
166+
new=$(semver -i "prerelease" "${pre_tag}" --preid "${suffix}")
167+
next_release=$(semver -i "${part}" "${pre_tag}")
168+
if [[ "${new}" != ${next_release}* ]]
169+
then
170+
# the next release is different higher as the next pre-release, therefore bump a new pre
171+
# release part (e.g. from 1.1.1-beta.2 to 1.2.0-beta.0)
172+
new=$(semver -i "pre${part}" "${pre_tag}" --preid "${suffix}")
173+
fi
151174
fi
175+
else
176+
new=$(semver -i "${part}" "${tag}");
152177
fi
153178

154-
echo "${part}"
155-
156179
# prefix with 'v'
157180
if ${with_v}
158181
then
@@ -174,7 +197,6 @@ fi
174197

175198
# set outputs
176199
echo "new_tag=${new}" >> "${GITHUB_OUTPUT}"
177-
echo "part=${part}" >> "${GITHUB_OUTPUT}"
178200

179201
# use dry run to determine the next tag
180202
if ${dryrun}

0 commit comments

Comments
 (0)