You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
echo "Added semantic-release note to v1.0.0-beta.1 (local only for dry run)."
97
97
98
-
- name: Create initial tag if needed
98
+
# One-time migration: v1.0.0-beta.1 existed before semantic-release was configured
99
+
# with channel notes. Semantic-release prepares all other versions itself (tags + notes).
100
+
# This step only fixes that one tag so semantic-release can see it as "last release".
101
+
- name: Migrate v1.0.0-beta.1 tag for semantic-release (one-time)
99
102
if: github.event.inputs.dry_run != 'true'
100
103
run: |
104
+
set -e
105
+
echo "=== Migrating v1.0.0-beta.1 so semantic-release sees it as last release ==="
106
+
# semantic-release treats a tag as "last release" only if: 1) tag is in "git tag --merged main", 2) tag has note {"channels":["beta"]} in ref semantic-release-<tag>
101
107
if ! git rev-parse --verify "v1.0.0-beta.1" >/dev/null 2>&1; then
102
-
echo "Creating initial tag v1.0.0-beta.1"
103
-
COMMIT=$(git rev-parse HEAD)
104
-
git tag -a "v1.0.0-beta.1" "$COMMIT" -m "chore: initial beta release"
105
-
git push origin "v1.0.0-beta.1" || echo "Tag push failed (may not have permission or tag exists)"
106
-
# semantic-release treats a tag as "last release" for main (beta) only if it has this note
108
+
echo "Tag v1.0.0-beta.1 does not exist; creating at HEAD."
109
+
git tag -a "v1.0.0-beta.1" HEAD -m "chore: initial beta release"
echo "Tags merged into main: $(git tag --merged main | tr '\n' ' ')"
128
+
git notes --ref semantic-release-v1.0.0-beta.1 show v1.0.0-beta.1 2>/dev/null && echo "Note present for v1.0.0-beta.1" || echo "WARN: no note for v1.0.0-beta.1"
111
129
fi
130
+
echo "=== Done; semantic-release will see v1.0.0-beta.1 as last release ==="
112
131
113
132
- name: Dry run mode notice
114
133
if: github.event.inputs.dry_run == 'true'
@@ -150,26 +169,7 @@ jobs:
150
169
npx semantic-release --dry-run 2>&1 | tee semantic-release.log || true
151
170
grep -oE "The next release version is [^[:space:]]+" semantic-release.log 2>/dev/null | sed 's/The next release version is //' > next-version.txt || echo "" > next-version.txt
152
171
else
153
-
# Prepare v1.0.0-beta.1 so semantic-release sees it as last release (avoids "tag already exists").
154
-
# semantic-release uses "git tag --merged main" and git notes ref semantic-release-<tag>; tag must be in main and have {"channels":["beta"]}.
155
-
if git rev-parse --verify v1.0.0-beta.1 >/dev/null 2>&1; then
156
-
if ! git tag --merged main | grep -qx v1.0.0-beta.1; then
157
-
RELEASE_COMMIT=$(git log main -1 --format=%H --grep="chore(release): 1.0.0-beta.1" 2>/dev/null || true)
158
-
if [ -z "$RELEASE_COMMIT" ]; then
159
-
RELEASE_COMMIT=$(git merge-base main origin/master 2>/dev/null || git rev-parse HEAD~1)
160
-
fi
161
-
git tag -d v1.0.0-beta.1 2>/dev/null || true
162
-
git tag -a v1.0.0-beta.1 "$RELEASE_COMMIT" -m "chore: 1.0.0-beta.1"
163
-
git push origin v1.0.0-beta.1 --force
164
-
echo "Moved v1.0.0-beta.1 to $RELEASE_COMMIT (was not in main history)."
0 commit comments