@@ -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