6161 echo "UV version: $(uv --version)"
6262 echo "UV path: $(which uv)"
6363
64+ # Start background job to continuously poll AgentEx container logs
65+ echo "🔍 Starting AgentEx container log polling in background..."
66+ (
67+ echo "Log polling started at $(date)"
68+
69+ # Function to get container logs
70+ get_logs() {
71+ echo "=== AgentEx Container Logs $(date) ==="
72+ if docker logs $(docker ps --filter "name=agentex" --format "{{.ID}}" 2>/dev/null) --tail=20 2>/dev/null; then
73+ echo "✅ Retrieved logs via container ID"
74+ elif docker logs $(docker ps --filter "name=scale-agentex" --format "{{.ID}}" 2>/dev/null) --tail=20 2>/dev/null; then
75+ echo "✅ Retrieved logs via scale-agentex filter"
76+ else
77+ echo "⚠️ No agentex container logs available"
78+ echo "Available containers:"
79+ docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}" 2>/dev/null || echo "Docker ps failed"
80+ fi
81+ echo "=== End Logs ==="
82+ echo ""
83+ }
84+
85+ # Poll logs every 30 seconds
86+ while true; do
87+ get_logs
88+ sleep 30
89+ done
90+ ) &
91+
92+ LOG_POLLER_PID=$!
93+ echo "📋 Log poller started with PID: $LOG_POLLER_PID"
94+
6495 # Find all tutorial directories
6596 tutorial_paths=()
6697 for dir in $(find . -name "manifest.yaml" -exec dirname {} \; | sort); do
@@ -121,6 +152,39 @@ jobs:
121152 wait "$pid"
122153 done
123154
155+ # Always show AgentEx server container logs immediately after tests complete
156+ echo ""
157+ echo "========================================="
158+ echo "AGENTEX SERVER CONTAINER LOGS"
159+ echo "========================================="
160+
161+ # Show AgentEx server container logs
162+ echo "📋 AgentEx server container logs:"
163+ echo "----------------------------------------"
164+
165+ echo "Available containers:"
166+ docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"
167+
168+ echo ""
169+ echo "AgentEx container logs (last 100 lines):"
170+ if docker logs $(docker ps --filter "name=agentex" --format "{{.ID}}" 2>/dev/null) --tail=100 2>/dev/null; then
171+ echo "✅ Retrieved logs via agentex filter"
172+ elif docker logs $(docker ps --filter "name=scale-agentex" --format "{{.ID}}" 2>/dev/null) --tail=100 2>/dev/null; then
173+ echo "✅ Retrieved logs via scale-agentex filter"
174+ else
175+ echo "❌ No agentex container found, showing all container logs:"
176+ for container in $(docker ps --format "{{.ID}}"); do
177+ container_name=$(docker ps --filter "id=$container" --format "{{.Names}}")
178+ echo "--- Container $container_name logs ---"
179+ docker logs "$container" --tail=20
180+ done
181+ fi
182+ echo "----------------------------------------"
183+
184+ # Stop the log poller
185+ echo "🛑 Stopping log poller (PID: $LOG_POLLER_PID)"
186+ kill $LOG_POLLER_PID 2>/dev/null || echo "Log poller already stopped"
187+
124188 # Restore all original manifests
125189 echo ""
126190 echo "Restoring original manifest files..."
@@ -140,6 +204,7 @@ jobs:
140204 fi
141205 done
142206
207+
143208 # Print summary
144209 echo ""
145210 echo "========================================="
@@ -155,6 +220,33 @@ jobs:
155220 for test in "${failed_tests[@]}"; do
156221 echo " ❌ $test"
157222 done
223+
224+ echo ""
225+ echo "========================================="
226+ echo "TUTORIAL AGENT LOGS FOR FAILED TESTS"
227+ echo "========================================="
228+
229+ # Show logs for failed tests
230+ for test in "${failed_tests[@]}"; do
231+ test_name=$(basename "$test")
232+ logfile="/tmp/agentex-${test_name}.log"
233+
234+ echo ""
235+ echo "📋 Tutorial agent logs for $test ($logfile):"
236+ echo "----------------------------------------"
237+
238+ if [ -f "$logfile" ]; then
239+ echo "Last 100 lines of tutorial agent logs:"
240+ tail -100 "$logfile"
241+ else
242+ echo "⚠️ No log file found at: $logfile"
243+ echo "Available log files:"
244+ ls -la /tmp/agentex-*.log 2>/dev/null || echo " (none)"
245+ fi
246+
247+ echo "----------------------------------------"
248+ done
249+
158250 exit 1
159251 else
160252 echo ""
0 commit comments