Skip to content

Commit 7cf9710

Browse files
committed
fix: exit pre-release mode
1 parent be9601c commit 7cf9710

File tree

1 file changed

+54
-24
lines changed

1 file changed

+54
-24
lines changed

.github/workflows/release.yaml

Lines changed: 54 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ jobs:
113113
114114
# Extract version from branch name if it's a release branch
115115
if [[ "$CURRENT_BRANCH" =~ ^release/([0-9]+\.[0-9]+) ]]; then
116-
echo "prerelease_tag=${BASH_REMATCH[1]}-rc" >> $GITHUB_OUTPUT
116+
echo "prerelease_tag=rc" >> $GITHUB_OUTPUT
117117
else
118118
# Use branch name as prerelease tag (sanitized)
119119
SANITIZED_BRANCH=$(echo "$CURRENT_BRANCH" | sed 's/[^a-zA-Z0-9-]/-/g')
@@ -140,16 +140,59 @@ jobs:
140140
- name: Install dependencies
141141
run: pnpm install
142142

143-
- name: Enter prerelease mode if needed
144-
if: steps.release-strategy.outputs.use_prerelease == 'true'
143+
- name: Check current prerelease state
144+
id: check-prerelease
145145
run: |
146-
PRERELEASE_TAG="${{ steps.release-strategy.outputs.prerelease_tag }}"
147-
echo "Entering prerelease mode with tag: $PRERELEASE_TAG"
146+
if [ -f .changeset/pre.json ]; then
147+
echo "Currently in prerelease mode"
148+
echo "in_prerelease=true" >> $GITHUB_OUTPUT
149+
# Extract the current prerelease tag from pre.json
150+
CURRENT_TAG=$(node -e "console.log(JSON.parse(require('fs').readFileSync('.changeset/pre.json', 'utf8')).tag)")
151+
echo "current_tag=$CURRENT_TAG" >> $GITHUB_OUTPUT
152+
else
153+
echo "Not in prerelease mode"
154+
echo "in_prerelease=false" >> $GITHUB_OUTPUT
155+
fi
148156
157+
- name: Exit prerelease mode if transitioning to normal release
158+
if: steps.check-prerelease.outputs.in_prerelease == 'true' && steps.release-strategy.outputs.use_prerelease == 'false'
159+
run: |
160+
echo "Exiting prerelease mode to perform normal release"
149161
if [ "${{ github.event.inputs.dry_run }}" != "true" ]; then
150-
pnpm changeset pre enter "$PRERELEASE_TAG"
162+
pnpm changeset pre exit
163+
# Commit the pre.json removal
164+
git add .
165+
git commit -m "chore: exit prerelease mode" || true
166+
else
167+
echo "DRY RUN: Would exit prerelease mode"
168+
fi
169+
170+
- name: Enter or update prerelease mode if needed
171+
if: steps.release-strategy.outputs.use_prerelease == 'true'
172+
run: |
173+
PRERELEASE_TAG="${{ steps.release-strategy.outputs.prerelease_tag }}"
174+
175+
# Check if we're already in prerelease mode with the same tag
176+
if [ "${{ steps.check-prerelease.outputs.in_prerelease }}" == "true" ]; then
177+
if [ "${{ steps.check-prerelease.outputs.current_tag }}" == "$PRERELEASE_TAG" ]; then
178+
echo "Already in prerelease mode with tag: $PRERELEASE_TAG"
179+
else
180+
echo "Switching prerelease tag from ${{ steps.check-prerelease.outputs.current_tag }} to $PRERELEASE_TAG"
181+
if [ "${{ github.event.inputs.dry_run }}" != "true" ]; then
182+
# Exit current prerelease mode and enter new one
183+
pnpm changeset pre exit
184+
pnpm changeset pre enter "$PRERELEASE_TAG"
185+
else
186+
echo "DRY RUN: Would switch prerelease tag to $PRERELEASE_TAG"
187+
fi
188+
fi
151189
else
152-
echo "DRY RUN: Would enter prerelease mode with tag $PRERELEASE_TAG"
190+
echo "Entering prerelease mode with tag: $PRERELEASE_TAG"
191+
if [ "${{ github.event.inputs.dry_run }}" != "true" ]; then
192+
pnpm changeset pre enter "$PRERELEASE_TAG"
193+
else
194+
echo "DRY RUN: Would enter prerelease mode with tag $PRERELEASE_TAG"
195+
fi
153196
fi
154197
155198
- name: Check for changesets
@@ -223,18 +266,6 @@ jobs:
223266
pnpm changeset tag
224267
git push --tags
225268
226-
- name: Exit prerelease mode if needed
227-
if: steps.release-strategy.outputs.use_prerelease == 'true' && github.event.inputs.dry_run != 'true' && steps.check-changesets.outputs.has_changesets == 'true'
228-
run: |
229-
echo "Exiting prerelease mode"
230-
pnpm changeset pre exit || true
231-
# Commit the pre.json removal if it exists
232-
if [ -f .changeset/pre.json ]; then
233-
git add .changeset/pre.json
234-
git commit -m "chore: exit prerelease mode" || true
235-
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
236-
git push origin "refs/heads/$CURRENT_BRANCH:refs/heads/$CURRENT_BRANCH" || true
237-
fi
238269
239270
- name: Trigger release creation
240271
if: ${{ github.event.inputs.dry_run != 'true' && steps.check-changesets.outputs.has_changesets == 'true' }}
@@ -258,17 +289,16 @@ jobs:
258289
run: |
259290
echo "DRY RUN SUMMARY:"
260291
echo "================"
261-
if [ "${{ steps.release-strategy.outputs.use_prerelease }}" == "true" ]; then
292+
if [ "${{ steps.check-prerelease.outputs.in_prerelease }}" == "true" ] && [ "${{ steps.release-strategy.outputs.use_prerelease }}" == "false" ]; then
293+
echo "Would exit prerelease mode before versioning"
294+
fi
295+
if [ "${{ steps.release-strategy.outputs.use_prerelease }}" == "true" ] && [ "${{ steps.check-prerelease.outputs.in_prerelease }}" == "false" ]; then
262296
echo "Would enter prerelease mode: ${{ steps.release-strategy.outputs.prerelease_tag }}"
263297
fi
264298
echo "Would version packages according to changesets"
265299
echo "Would commit with message: chore: release"
266300
echo "Would create and push tags"
267301
echo "Would publish packages to npm"
268-
269-
if [ "${{ steps.release-strategy.outputs.use_prerelease }}" == "true" ]; then
270-
echo "Would exit prerelease mode after publishing"
271-
fi
272302
echo ""
273303
echo "Current git status:"
274304
git status

0 commit comments

Comments
 (0)