@@ -66,10 +66,78 @@ jobs:
6666 username : ${{ secrets.SSH_USERNAME }}
6767 key : ${{ secrets.SSH_PRIVATE_KEY }}
6868 script : |
69- # Infrastructure setup
69+ echo "=== Infrastructure Setup Started ==="
70+
71+ # Create network if not exists
7072 docker network create craftpilot-network || true
7173
74+ # Check and start Redis if not running
75+ if ! docker ps | grep -q redis; then
76+ echo "Starting Redis..."
77+ docker run -d \
78+ --name redis \
79+ --network craftpilot-network \
80+ -p 6379:6379 \
81+ -e REDIS_PASSWORD=13579ada \
82+ redis:latest redis-server --requirepass 13579ada
83+
84+ # Wait for Redis to be ready
85+ echo "Waiting for Redis to be ready..."
86+ for i in {1..30}; do
87+ if docker exec redis redis-cli -a 13579ada ping | grep -q "PONG"; then
88+ echo "Redis is ready"
89+ break
90+ fi
91+ echo "Waiting for Redis... attempt $i/30"
92+ sleep 2
93+ done
94+ else
95+ echo "Redis is already running"
96+ fi
97+
98+ # Check and start Zookeeper if not running
99+ if ! docker ps | grep -q zookeeper; then
100+ echo "Starting Zookeeper..."
101+ docker run -d \
102+ --name zookeeper \
103+ --network craftpilot-network \
104+ -e ZOOKEEPER_CLIENT_PORT=2181 \
105+ -e ZOOKEEPER_TICK_TIME=2000 \
106+ confluentinc/cp-zookeeper:latest
107+
108+ # Wait for Zookeeper
109+ echo "Waiting for Zookeeper to be ready..."
110+ sleep 10
111+ else
112+ echo "Zookeeper is already running"
113+ fi
114+
115+ # Check and start Kafka if not running
116+ if ! docker ps | grep -q kafka; then
117+ echo "Starting Kafka..."
118+ docker run -d \
119+ --name kafka \
120+ --network craftpilot-network \
121+ -p 9092:9092 \
122+ -e KAFKA_BROKER_ID=1 \
123+ -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
124+ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \
125+ -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
126+ -e KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1 \
127+ -e KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 \
128+ confluentinc/cp-kafka:latest
129+
130+ # Wait for Kafka
131+ echo "Waiting for Kafka to be ready..."
132+ sleep 20
133+ else
134+ echo "Kafka is already running"
135+ fi
136+
137+ echo "=== Infrastructure Setup Completed ==="
138+
72139 # Deploy Eureka Server
140+ echo "=== Deploying Eureka Server ==="
73141 docker pull ${{ secrets.DOCKERHUB_USERNAME }}/eureka-server:latest-arm64
74142 docker stop eureka-server || true
75143 docker rm eureka-server || true
@@ -91,43 +159,26 @@ jobs:
91159 -e MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILS=always \
92160 ${{ secrets.DOCKERHUB_USERNAME }}/eureka-server:latest-arm64
93161
94- # Wait for container to start
95- echo "Waiting for container to start..."
96- sleep 20
97-
98- # Health check
99- echo "Starting health checks..."
100- max_retries=5
101- count=0
102-
103- while [ $count -lt $max_retries ]; do
104- count=$((count + 1))
105- echo "Health check attempt $count/$max_retries"
162+ # Enhanced health check for Eureka Server
163+ echo "=== Performing Health Checks ==="
164+ for i in {1..30}; do
165+ echo "Health check attempt $i/30"
106166
107- if docker ps | grep -q "eureka-server"; then
108- if curl -s "http://localhost:8761" | grep -q "Eureka"; then
109- echo "Eureka Server is running and responding"
110- exit 0
111- elif curl -s -u craftpilot:13579ada "http://localhost:8761/actuator/health" | grep -q "UP"; then
112- echo "Eureka Server health check passed"
113- exit 0
114- elif docker logs eureka-server 2>&1 | grep -q "Started EurekaServerApplication"; then
115- echo "Eureka Server logs indicate successful startup"
116- exit 0
117- fi
167+ if curl -sf http://localhost:8761/actuator/health | grep -q "UP"; then
168+ echo "✓ Eureka Server is healthy"
169+ echo "=== Deployment Completed Successfully ==="
170+ exit 0
171+ fi
172+
173+ if [ $i -eq 15 ]; then
174+ echo "Mid-point container logs:"
175+ docker logs eureka-server --tail 50
118176 fi
119177
120- echo "Waiting 10 seconds before next attempt ..."
178+ echo "Waiting for next check ..."
121179 sleep 10
122180 done
123181
124- echo "Eureka Server failed to start properly "
182+ echo "=== Deployment Failed - Debug Information === "
125183 docker logs eureka-server
126184 exit 1
127-
128- - name : Trigger Deploy Services Workflow
129- if : success()
130- uses : peter-evans/repository-dispatch@v2
131- with :
132- token : ${{ secrets.GH_TOKEN }}
133- event-type : trigger-deploy-services
0 commit comments