@@ -45,14 +45,40 @@ jobs:
4545 runs-on : ubuntu-latest
4646 environment : protected branches
4747 steps :
48- - name : Verify branch
48+ - name : Verify release ref
4949 run : |
50- if [ "${GITHUB_REF }" != "refs/heads/main " ]; then
51- echo "❌ Error: Releases can only be triggered from main branch "
50+ if [ "${GITHUB_REF_TYPE }" != "branch " ]; then
51+ echo "❌ Error: Releases can only be triggered from branches "
5252 echo "Current ref: ${GITHUB_REF}"
5353 exit 1
5454 fi
5555
56+ if [ "${GITHUB_REF_NAME}" = "main" ]; then
57+ echo "✅ Official and pre-release releases are allowed from main"
58+ exit 0
59+ fi
60+
61+ case "${INPUTS_VERSION}" in
62+ prepatch|preminor|premajor)
63+ ;;
64+ *)
65+ echo "❌ Error: Official releases can only be triggered from main branch"
66+ echo "Current branch: ${GITHUB_REF_NAME}"
67+ echo "Requested version bump: ${INPUTS_VERSION}"
68+ exit 1
69+ ;;
70+ esac
71+
72+ if [ -z "${INPUTS_PRERELEASE_TYPE}" ]; then
73+ echo "❌ Error: Branch releases must specify prerelease_type as alpha, beta, or rc"
74+ exit 1
75+ fi
76+
77+ echo "✅ Pre-release branch release allowed from ${GITHUB_REF_NAME}"
78+ env :
79+ INPUTS_VERSION : ${{ inputs.version }}
80+ INPUTS_PRERELEASE_TYPE : ${{ inputs.prerelease_type }}
81+
5682 - name : Confirm major release
5783 if : ${{ inputs.version == 'major' || inputs.version == 'premajor' }}
5884 run : |
@@ -294,7 +320,7 @@ jobs:
294320 id : push-tag
295321 run : |
296322 git tag "v${STEPS_NEW_VERSION_OUTPUTS_VERSION}"
297- git push origin main
323+ git push origin "HEAD:${GITHUB_REF_NAME}"
298324 git push origin "v${STEPS_NEW_VERSION_OUTPUTS_VERSION}"
299325 env :
300326 STEPS_NEW_VERSION_OUTPUTS_VERSION : ${{ steps.new-version.outputs.version }}
0 commit comments