Skip to content

Commit 15cec69

Browse files
committed
Add public address retrieval and deployment summary output to workflow
1 parent c8bdd15 commit 15cec69

1 file changed

Lines changed: 110 additions & 1 deletion

File tree

.github/workflows/deploy-app.yml

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,113 @@ jobs:
105105
echo "Response: $(cat /tmp/create_response.json)"
106106
exit 1
107107
fi
108-
fi
108+
fi
109+
110+
- name: Wait and get app public address
111+
id: get-public-address
112+
run: |
113+
TOKEN=$(cat /tmp/token.txt)
114+
APP_NAME="${{ steps.app-config.outputs.app_name }}"
115+
116+
echo "Waiting for app to be ready and getting public address..."
117+
118+
# Wait for app to be provisioned (retry up to 10 times, 30 seconds each)
119+
for i in {1..10}; do
120+
echo "Attempt $i: Getting app status..."
121+
122+
RESPONSE=$(curl -s -w "%{http_code}" -o /tmp/app_status.json \
123+
-H "Authorization: ${TOKEN}" \
124+
-H "Content-Type: application/json" \
125+
"${API_URL}/${APP_NAME}")
126+
127+
HTTP_STATUS="${RESPONSE: -3}"
128+
129+
if [ "$HTTP_STATUS" = "200" ]; then
130+
echo "App status retrieved successfully"
131+
132+
# Extract public address and custom domain
133+
PUBLIC_ADDR=$(jq -r '.ports[0].publicAddress // empty' /tmp/app_status.json 2>/dev/null || echo "")
134+
CUSTOM_DOMAIN=$(jq -r '.ports[0].customDomain // empty' /tmp/app_status.json 2>/dev/null || echo "")
135+
APP_STATUS=$(jq -r '.status // empty' /tmp/app_status.json 2>/dev/null || echo "")
136+
137+
echo "App status: $APP_STATUS"
138+
echo "Public address: $PUBLIC_ADDR"
139+
echo "Custom domain: $CUSTOM_DOMAIN"
140+
141+
# Use custom domain if available, otherwise use public address
142+
if [ -n "$CUSTOM_DOMAIN" ] && [ "$CUSTOM_DOMAIN" != "null" ]; then
143+
FINAL_ADDR="$CUSTOM_DOMAIN"
144+
echo "Using custom domain: $FINAL_ADDR"
145+
break
146+
elif [ -n "$PUBLIC_ADDR" ] && [ "$PUBLIC_ADDR" != "null" ]; then
147+
FINAL_ADDR="$PUBLIC_ADDR"
148+
echo "Using public address: $FINAL_ADDR"
149+
break
150+
elif [ "$APP_STATUS" = "ready" ]; then
151+
echo "App is ready but no public address found"
152+
FINAL_ADDR="Not Available"
153+
break
154+
else
155+
echo "App not ready yet, waiting..."
156+
sleep 30
157+
fi
158+
else
159+
echo "Error getting app status: HTTP $HTTP_STATUS"
160+
if [ $i -eq 10 ]; then
161+
echo "Final attempt failed, exiting..."
162+
exit 1
163+
fi
164+
sleep 30
165+
fi
166+
done
167+
168+
if [ -z "$FINAL_ADDR" ]; then
169+
FINAL_ADDR="Provisioning..."
170+
fi
171+
172+
echo "final_address=$FINAL_ADDR" >> $GITHUB_OUTPUT
173+
174+
- name: Output deployment summary
175+
run: |
176+
APP_NAME="${{ steps.app-config.outputs.app_name }}"
177+
FINAL_ADDR="${{ steps.get-public-address.outputs.final_address }}"
178+
APP_EXISTS="${{ steps.check-app.outputs.app_exists }}"
179+
180+
echo "## 🚀 App Launchpad Deployment Summary" >> $GITHUB_STEP_SUMMARY
181+
echo "" >> $GITHUB_STEP_SUMMARY
182+
echo "| Component | Status | Details |" >> $GITHUB_STEP_SUMMARY
183+
echo "|-----------|--------|---------|" >> $GITHUB_STEP_SUMMARY
184+
echo "| App Name | ✅ $APP_NAME | Successfully deployed |" >> $GITHUB_STEP_SUMMARY
185+
echo "| Deployment Type | ✅ $([ "$APP_EXISTS" = "true" ] && echo "Updated" || echo "Created") | App $([ "$APP_EXISTS" = "true" ] && echo "updated" || echo "created") successfully |" >> $GITHUB_STEP_SUMMARY
186+
187+
if [ "$FINAL_ADDR" != "Not Available" ] && [ "$FINAL_ADDR" != "Provisioning..." ] && [ -n "$FINAL_ADDR" ]; then
188+
echo "| Public Access | ✅ Available | [https://$FINAL_ADDR](https://$FINAL_ADDR) |" >> $GITHUB_STEP_SUMMARY
189+
echo "" >> $GITHUB_STEP_SUMMARY
190+
echo "### 🌐 Access Your Application" >> $GITHUB_STEP_SUMMARY
191+
echo "" >> $GITHUB_STEP_SUMMARY
192+
echo "**Public URL:** https://$FINAL_ADDR" >> $GITHUB_STEP_SUMMARY
193+
echo "" >> $GITHUB_STEP_SUMMARY
194+
echo "You can access your application by clicking the link above." >> $GITHUB_STEP_SUMMARY
195+
elif [ "$FINAL_ADDR" = "Provisioning..." ]; then
196+
echo "| Public Access | ⏳ Provisioning | Service is still being provisioned... |" >> $GITHUB_STEP_SUMMARY
197+
echo "" >> $GITHUB_STEP_SUMMARY
198+
echo "### ⏳ Provisioning in Progress" >> $GITHUB_STEP_SUMMARY
199+
echo "" >> $GITHUB_STEP_SUMMARY
200+
echo "Your application is still being provisioned. Public access will be available shortly." >> $GITHUB_STEP_SUMMARY
201+
echo "" >> $GITHUB_STEP_SUMMARY
202+
echo "You can check the status later using the App Launchpad interface." >> $GITHUB_STEP_SUMMARY
203+
else
204+
echo "| Public Access | ❌ Not Available | No public address assigned |" >> $GITHUB_STEP_SUMMARY
205+
echo "" >> $GITHUB_STEP_SUMMARY
206+
echo "### ❌ Public Access Unavailable" >> $GITHUB_STEP_SUMMARY
207+
echo "" >> $GITHUB_STEP_SUMMARY
208+
echo "The application was deployed but no public address was assigned." >> $GITHUB_STEP_SUMMARY
209+
echo "Please check the App Launchpad interface for more details." >> $GITHUB_STEP_SUMMARY
210+
fi
211+
212+
echo "" >> $GITHUB_STEP_SUMMARY
213+
echo "### 📋 Deployment Information" >> $GITHUB_STEP_SUMMARY
214+
echo "" >> $GITHUB_STEP_SUMMARY
215+
echo "**API Endpoint:** ${{ env.API_URL }}" >> $GITHUB_STEP_SUMMARY
216+
echo "**App Name:** $APP_NAME" >> $GITHUB_STEP_SUMMARY
217+
echo "**Deployment Time:** $(date -u '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY

0 commit comments

Comments
 (0)