@@ -162,9 +162,8 @@ jobs:
162162 username : ${{ secrets.OVH_USER }}
163163 key : ${{ secrets.PROD_SSH_KEY }}
164164 script : |
165- set -e # Stop on error
165+ set -e
166166
167- # Navigate to project directory
168167 cd ~/microservices || { mkdir -p ~/microservices && cd ~/microservices; }
169168
170169 # Sync repository
@@ -180,67 +179,79 @@ jobs:
180179 git checkout main
181180 fi
182181
183- # Create required directories
182+ # Create directories
184183 echo "📁 Creating required directories..."
185184 mkdir -p logs/{discoveryserver,gateway,authorizationserver,userservice,ecreditservice,ebankingservice,notificationservice,frontend}
186185 mkdir -p keys
187186
188- # Check .env.prod exists
187+ # Check .env.prod
189188 if [ ! -f .env.prod ]; then
190189 echo "⚠️ .env.prod not found, using .env.docker as template..."
191190 cp .env.docker .env.prod || { echo "❌ No .env.docker found!"; exit 1; }
192191 fi
193192
194- # Load environment variables
193+ # Load environment
195194 export $(cat .env.prod | grep -v '^#' | xargs)
196195
197- # COMPLETE CLEANUP - This fixes the network issue
196+ # Complete cleanup
198197 echo "🛑 Complete Docker cleanup..."
199198 sudo docker compose --env-file .env.prod down --volumes --remove-orphans || true
200-
201- echo "🧹 Removing all project containers..."
202199 sudo docker ps -aq | xargs -r sudo docker rm -f 2>/dev/null || true
200+ sudo docker network prune -f
203201
204- echo "🔧 Removing and recreating network..."
205- sudo docker network rm microservices_spring 2>/dev/null || true
206- sudo docker network rm microservices_default 2>/dev/null || true
207-
208- # Pull latest images
202+ # Pull images
209203 echo "📥 Pulling all latest images..."
210204 sudo docker compose --env-file .env.prod pull
211205
212206 # Clean old images
213- echo "🧹 Cleaning up old images..."
214207 sudo docker image prune -f
215208
216- # Start PostgreSQL and Kafka
217- echo "🏗️ Starting infrastructure services..."
218- sudo docker compose --env-file .env.prod up -d postgresdb zookeeper kafka
209+ # Start PostgreSQL with better error handling
210+ echo "🏗️ Starting PostgreSQL..."
211+ sudo docker compose --env-file .env.prod up -d postgresdb
212+
213+ # Give PostgreSQL more time to initialize
214+ echo "⏳ Waiting for PostgreSQL to initialize (10 seconds)..."
215+ sleep 10
216+
217+ # Check if PostgreSQL container is running
218+ if ! sudo docker ps | grep -q postgrecontainer; then
219+ echo "❌ PostgreSQL container failed to start. Checking logs..."
220+ sudo docker logs postgrecontainer --tail=20
221+ echo "Attempting to restart PostgreSQL..."
222+ sudo docker compose --env-file .env.prod restart postgresdb
223+ sleep 10
224+ fi
219225
220- # Wait for PostgreSQL
221- echo "⏳ Waiting for PostgreSQL..."
226+ # Wait for PostgreSQL with better error handling
227+ echo "⏳ Waiting for PostgreSQL to be ready ..."
222228 count=0
223- until sudo docker exec postgrecontainer pg_isready -U ${POSTGRES_USER:-user2711} || [ $count -eq 30 ]; do
224- echo "Waiting for PostgreSQL... ($count/30)"
225- sleep 2
229+ until sudo docker exec postgrecontainer pg_isready -U ${POSTGRES_USER:-user2711} 2>/dev/null; do
230+ if [ $count -eq 40 ]; then
231+ echo "❌ PostgreSQL failed to become ready!"
232+ echo "Container status:"
233+ sudo docker ps -a | grep postgres
234+ echo "Last logs:"
235+ sudo docker logs postgrecontainer --tail=30
236+ exit 1
237+ fi
238+ echo "Waiting for PostgreSQL... ($count/40)"
239+ sleep 3
226240 count=$((count + 1))
227241 done
228-
229- if [ $count -eq 30 ]; then
230- echo "❌ PostgreSQL failed to start!"
231- exit 1
232- fi
233242 echo "✅ PostgreSQL is ready"
234243
244+ # Start Kafka and Zookeeper
245+ echo "🏗️ Starting Kafka and Zookeeper..."
246+ sudo docker compose --env-file .env.prod up -d zookeeper kafka
247+ sleep 10
248+
235249 # Run migrations
236250 echo "🗄️ Running database migrations..."
237251 MIGRATION_COUNT=$(ls micro-digiservices/database-migrations/src/main/resources/db/migration/*.sql 2>/dev/null | wc -l)
238- echo "📋 Found $MIGRATION_COUNT migration files"
239-
240- # Get the actual network name created by docker-compose
241- NETWORK_NAME=$(sudo docker network ls --filter name=microservices --format "{{.Name}}" | head -1)
242252
243253 if [ "$MIGRATION_COUNT" -gt 0 ]; then
254+ NETWORK_NAME=$(sudo docker network ls --filter name=microservices --format "{{.Name}}" | head -1)
244255 sudo docker run --rm \
245256 --network ${NETWORK_NAME:-bridge} \
246257 -v "$(pwd)/micro-digiservices/database-migrations/src/main/resources/db/migration:/flyway/sql:ro" \
@@ -249,29 +260,25 @@ jobs:
249260 -e FLYWAY_PASSWORD="${POSTGRES_PASSWORD:-admin2711}" \
250261 -e FLYWAY_BASELINE_ON_MIGRATE="true" \
251262 -e FLYWAY_OUT_OF_ORDER="true" \
252- -e FLYWAY_VALIDATE_ON_MIGRATE="false" \
253- flyway/flyway:11.3.0 migrate || echo "⚠️ Some migrations may have issues"
263+ flyway/flyway:11.3.0 migrate || echo "⚠️ Migration warnings"
254264 fi
255265
256- # Start Discovery Server
266+ # Start services in order
257267 echo "🔍 Starting Discovery Server..."
258268 sudo docker compose --env-file .env.prod up -d discoveryserver
259269 sleep 30
260270
261- # Start Gateway and Authorization Server
262271 echo "🔐 Starting Gateway and Authorization Server..."
263272 sudo docker compose --env-file .env.prod up -d gateway authorizationserver
264273 sleep 20
265274
266- # Start all remaining services
267- echo "🚀 Starting all microservices..."
275+ echo "🚀 Starting all remaining services..."
268276 sudo docker compose --env-file .env.prod up -d
269277
270- # Wait for services to start
271- echo "⏳ Waiting for all services to start..."
278+ echo "⏳ Waiting for services to stabilize..."
272279 sleep 60
273280
274- # Check services health
281+ # Check services
275282 echo "🏥 Checking services health..."
276283 services=("postgrecontainer" "kafka" "discoveryserver" "gateway" "authorizationserver" "userservice" "ecreditservice" "ebankingservice" "notificationservice")
277284 all_healthy=true
@@ -286,8 +293,13 @@ jobs:
286293 done
287294
288295 if [ "$all_healthy" = false ]; then
289- echo "⚠️ Some services failed. Recent logs:"
290- sudo docker compose --env-file .env.prod logs --tail=50
296+ echo "⚠️ Some services failed. Checking logs..."
297+ for service in "${services[@]}"; do
298+ if ! sudo docker ps | grep -q "$service"; then
299+ echo "Logs for $service:"
300+ sudo docker logs "$service" --tail=10 2>&1 || echo "No logs available"
301+ fi
302+ done
291303 exit 1
292304 fi
293305
@@ -296,8 +308,6 @@ jobs:
296308 echo "================================================"
297309 echo "Services available at:"
298310 echo " • Frontend: https://digi-creditrural-io.com"
299- echo " • Gateway: http://${{ secrets.OVH_HOST }}:8000"
300- echo " • Auth Server: http://${{ secrets.OVH_HOST }}:8080"
301311 echo "================================================"
302312
303313 - name : Final success notification
0 commit comments