Skip to content

Commit e0ba875

Browse files
committed
🔧 Refactor deploy scripts to streamline CI monitoring and version tagging process
1 parent 89fe61f commit e0ba875

File tree

2 files changed

+108
-86
lines changed

2 files changed

+108
-86
lines changed

scripts/deploy-sidekick.sh

Lines changed: 54 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,46 +16,7 @@ if [ $# -eq 1 ]; then
1616
echo "📌 Manual version specified: $NEW_TAG"
1717
fi
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)
5920
if [ -z "$NEW_TAG" ]; then
6021
# No manual version provided, auto-increment
6122
echo "🏷️ Finding latest sidekick version tag..."
@@ -75,7 +36,7 @@ if [ -z "$NEW_TAG" ]; then
7536
NEW_PATCH=$((PATCH + 1))
7637
NEW_TAG="sidekick-v${MAJOR}.${MINOR}.${NEW_PATCH}"
7738

78-
echo "📈 Auto-incrementing to version: $NEW_TAG"
39+
echo "📈 Will auto-increment to version: $NEW_TAG"
7940
else
8041
# Manual version provided, check if it already exists
8142
if git tag -l "$NEW_TAG" | grep -q "$NEW_TAG"; then
@@ -84,12 +45,62 @@ else
8445
fi
8546
fi
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
8899
echo "🏷️ Creating tag $NEW_TAG..."
89100
git tag $NEW_TAG -m "Release $NEW_TAG"
90101
git push origin $NEW_TAG
91102

92-
# Step 5: Monitor release workflow with optimized polling
103+
# Step 6: Monitor release workflow with optimized polling
93104
echo "⏳ Waiting for sidekick release workflow to start..."
94105
sleep 10
95106

scripts/deploy-stdio2sse.sh

Lines changed: 54 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,46 +16,7 @@ if [ $# -eq 1 ]; then
1616
echo "📌 Manual version specified: $NEW_TAG"
1717
fi
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)
5920
if [ -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"
7940
else
8041
# Manual version provided, check if it already exists
8142
if git tag -l "$NEW_TAG" | grep -q "$NEW_TAG"; then
@@ -84,12 +45,62 @@ else
8445
fi
8546
fi
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
8899
echo "🏷️ Creating tag $NEW_TAG..."
89100
git tag $NEW_TAG -m "Release $NEW_TAG"
90101
git push origin $NEW_TAG
91102

92-
# Step 5: Monitor release workflow with optimized polling
103+
# Step 6: Monitor release workflow with optimized polling
93104
echo "⏳ Waiting for stdio2sse release workflow to start..."
94105
sleep 10
95106

0 commit comments

Comments
 (0)