@@ -87,48 +87,52 @@ jobs:
8787 $DOCKER_IMAGE
8888
8989 echo "▶ Waiting for health check..."
90- sleep 50
9190 HEALTH_URL="http://localhost:$PORT/actuator/health"
91+
92+ for i in {1..18}; do # 10초씩, 최대 180초
9293 CODE=$(curl -s -o /dev/null -w "%{http_code}" $HEALTH_URL)
93-
9494 if [ "$CODE" -eq 200 ]; then
95- echo "Health check passed for $VERSION"
96- else
97- echo "Health check failed (code: $CODE). Rolling back..."
98-
99- # 이전 태그 찾기 (현재 태그 제외, 최신 2번째)
100- PREV_VERSION=$(docker images --format "{{.Tag}}" ${{ secrets.DOCKERHUB_USERNAME }}/mokakbob \
101- | grep -v latest \
102- | grep -v "$VERSION" \
103- | sort -V \
104- | tail -n 1)
105-
106- if [ -z "$PREV_VERSION" ]; then
107- echo "⚠ No previous version found. Rollback not possible."
108- exit 1
109- fi
110-
111- echo "▶ Rolling back to version: $PREV_VERSION"
112- PREV_IMAGE="${{ secrets.DOCKERHUB_USERNAME }}/mokakbob:$PREV_VERSION"
113-
114- docker stop $APP_NAME || true
115- docker rm $APP_NAME || true
116- docker run -d --name $APP_NAME -p $PORT:8080 \
117- -e "SPRING_DATASOURCE_URL=${{ secrets.SPRING_DATASOURCE_URL }}" \
118- -e "SPRING_DATASOURCE_USERNAME=${{ secrets.SPRING_DATASOURCE_USERNAME }}" \
119- -e "SPRING_DATASOURCE_PASSWORD=${{ secrets.SPRING_DATASOURCE_PASSWORD }}" \
120- -e "REDIS_HOST=${{ secrets.REDIS_HOST }}" \
121- -e "REDIS_PORT=${{ secrets.REDIS_PORT }}" \
122- -e "MAIL_USERNAME=${{ secrets.MAIL_USERNAME }}" \
123- -e "MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }}" \
124- -e "OAUTH_GITHUB_CLIENT_ID=${{ secrets.OAUTH_GITHUB_CLIENT_ID }}" \
125- -e "OAUTH_GITHUB_CLIENT_SECRET=${{ secrets.OAUTH_GITHUB_CLIENT_SECRET }}" \
126- -e "KAFKA_BOOTSTRAP_SERVERS=${{ secrets.KAFKA_BOOTSTRAP_SERVERS }}" \
127- -e "JWT_SECRET=${{ secrets.JWT_SECRET }}" \
128- $PREV_IMAGE
129-
130- echo "Rolled back to $PREV_VERSION"
95+ echo "Health check passed at attempt $i"
96+ break
97+ fi
98+ echo "Attempt $i failed, retrying in 10s..."
99+ sleep 10
100+ done
101+
102+ if [ "$CODE" -ne 200 ]; then
103+ echo "⚠ Health check failed after 180s, rolling back..."
104+
105+ # 이전 태그 찾기 (현재 태그 제외, 최신 2번째)
106+ PREV_VERSION=$(docker images --format "{{.Tag}}" ${{ secrets.DOCKERHUB_USERNAME }}/mokakbob \
107+ | grep -v latest \
108+ | grep -v "$VERSION" \
109+ | sort -V \
110+ | tail -n 1)
111+
112+ if [ -z "$PREV_VERSION" ]; then
113+ echo "⚠ No previous version found. Rollback not possible."
131114 exit 1
132115 fi
133-
134- docker image prune -f
116+
117+ echo "▶ Rolling back to version: $PREV_VERSION"
118+ PREV_IMAGE="${{ secrets.DOCKERHUB_USERNAME }}/mokakbob:$PREV_VERSION"
119+
120+ docker stop $APP_NAME || true
121+ docker rm $APP_NAME || true
122+ docker run -d --name $APP_NAME -p $PORT:8080 \
123+ -e "SPRING_DATASOURCE_URL=${{ secrets.SPRING_DATASOURCE_URL }}" \
124+ -e "SPRING_DATASOURCE_USERNAME=${{ secrets.SPRING_DATASOURCE_USERNAME }}" \
125+ -e "SPRING_DATASOURCE_PASSWORD=${{ secrets.SPRING_DATASOURCE_PASSWORD }}" \
126+ -e "REDIS_HOST=${{ secrets.REDIS_HOST }}" \
127+ -e "REDIS_PORT=${{ secrets.REDIS_PORT }}" \
128+ -e "MAIL_USERNAME=${{ secrets.MAIL_USERNAME }}" \
129+ -e "MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }}" \
130+ -e "OAUTH_GITHUB_CLIENT_ID=${{ secrets.OAUTH_GITHUB_CLIENT_ID }}" \
131+ -e "OAUTH_GITHUB_CLIENT_SECRET=${{ secrets.OAUTH_GITHUB_CLIENT_SECRET }}" \
132+ -e "KAFKA_BOOTSTRAP_SERVERS=${{ secrets.KAFKA_BOOTSTRAP_SERVERS }}" \
133+ -e "JWT_SECRET=${{ secrets.JWT_SECRET }}" \
134+ $PREV_IMAGE
135+
136+ echo "Rolled back to $PREV_VERSION"
137+ exit 1
138+ fi
0 commit comments