@@ -16,46 +16,7 @@ if [ $# -eq 1 ]; then
1616 echo " 📌 Manual version specified: $NEW_TAG "
1717fi
1818
19- # Step 1: Push to main branch
20- echo " 🚀 Pushing to main branch..."
21- git push origin main
22-
23- # Step 2: Monitor CI workflow with optimized polling
24- echo " ⏳ Waiting for CI to start..."
25- sleep 10
26-
27- # Get the latest workflow run
28- RUN_ID=$( gh run list --limit 1 --json databaseId --jq ' .[0].databaseId' )
29- echo " 📊 Monitoring CI run $RUN_ID ..."
30-
31- # Poll CI status every 15 seconds (optimized for ~2m20s runtime)
32- MAX_WAIT=160 # seconds
33- ELAPSED=0
34- while [ $ELAPSED -lt $MAX_WAIT ]; do
35- STATUS=$( gh run view $RUN_ID --json status --jq ' .status' )
36- CONCLUSION=$( gh run view $RUN_ID --json conclusion --jq ' .conclusion // "pending"' )
37-
38- if [ " $STATUS " = " completed" ]; then
39- if [ " $CONCLUSION " = " success" ]; then
40- echo " ✅ CI passed successfully!"
41- break
42- else
43- echo " ❌ CI failed with conclusion: $CONCLUSION "
44- exit 1
45- fi
46- fi
47-
48- echo " ⏳ CI status: $STATUS (${ELAPSED} s elapsed)..."
49- sleep 15
50- ELAPSED=$(( ELAPSED + 15 ))
51- done
52-
53- if [ $ELAPSED -ge $MAX_WAIT ]; then
54- echo " ⚠️ CI is taking longer than expected. Check manually: gh run view $RUN_ID "
55- exit 1
56- fi
57-
58- # Step 3: Determine version tag
19+ # Step 1: Determine version tag first (before pushing)
5920if [ -z " $NEW_TAG " ]; then
6021 # No manual version provided, auto-increment
6122 echo " 🏷️ Finding latest stdio2sse version tag..."
@@ -75,7 +36,7 @@ if [ -z "$NEW_TAG" ]; then
7536 NEW_PATCH=$(( PATCH + 1 ))
7637 NEW_TAG=" stdio2sse-v${MAJOR} .${MINOR} .${NEW_PATCH} "
7738
78- echo " 📈 Auto-incrementing to version: $NEW_TAG "
39+ echo " 📈 Will auto-increment to version: $NEW_TAG "
7940else
8041 # Manual version provided, check if it already exists
8142 if git tag -l " $NEW_TAG " | grep -q " $NEW_TAG " ; then
8445 fi
8546fi
8647
87- # Step 4: Create and push new tag
48+ # Step 2: Check if there are any changes to push
49+ echo " 🔍 Checking for changes to push..."
50+ git fetch origin main
51+ if [ -z " $( git log origin/main..HEAD) " ]; then
52+ echo " ⚠️ No new commits to push. Skipping to tag creation."
53+ SKIP_CI=true
54+ else
55+ # Step 3: Push to main branch
56+ echo " 🚀 Pushing to main branch..."
57+ git push origin main
58+ SKIP_CI=false
59+ fi
60+
61+ # Step 4: Monitor CI workflow with optimized polling (if we pushed)
62+ if [ " $SKIP_CI " != " true" ]; then
63+ echo " ⏳ Waiting for CI to start..."
64+ sleep 10
65+
66+ # Get the latest workflow run
67+ RUN_ID=$( gh run list --limit 1 --json databaseId --jq ' .[0].databaseId' )
68+ echo " 📊 Monitoring CI run $RUN_ID ..."
69+
70+ # Poll CI status every 15 seconds (optimized for ~2m20s runtime)
71+ MAX_WAIT=160 # seconds
72+ ELAPSED=0
73+ while [ $ELAPSED -lt $MAX_WAIT ]; do
74+ STATUS=$( gh run view $RUN_ID --json status --jq ' .status' )
75+ CONCLUSION=$( gh run view $RUN_ID --json conclusion --jq ' .conclusion // "pending"' )
76+
77+ if [ " $STATUS " = " completed" ]; then
78+ if [ " $CONCLUSION " = " success" ]; then
79+ echo " ✅ CI passed successfully!"
80+ break
81+ else
82+ echo " ❌ CI failed with conclusion: $CONCLUSION "
83+ exit 1
84+ fi
85+ fi
86+
87+ echo " ⏳ CI status: $STATUS (${ELAPSED} s elapsed)..."
88+ sleep 15
89+ ELAPSED=$(( ELAPSED + 15 ))
90+ done
91+
92+ if [ $ELAPSED -ge $MAX_WAIT ]; then
93+ echo " ⚠️ CI is taking longer than expected. Check manually: gh run view $RUN_ID "
94+ exit 1
95+ fi
96+ fi
97+
98+ # Step 5: Create and push new tag
8899echo " 🏷️ Creating tag $NEW_TAG ..."
89100git tag $NEW_TAG -m " Release $NEW_TAG "
90101git push origin $NEW_TAG
91102
92- # Step 5 : Monitor release workflow with optimized polling
103+ # Step 6 : Monitor release workflow with optimized polling
93104echo " ⏳ Waiting for stdio2sse release workflow to start..."
94105sleep 10
95106
0 commit comments