From 161a68a0a2d908a0d8d458e80b95063970871cac Mon Sep 17 00:00:00 2001 From: Rinjae Date: Tue, 16 Jun 2026 18:46:28 +0900 Subject: [PATCH] =?UTF-8?q?-=20Tomcat=20readiness=20probe=20=ED=83=80?= =?UTF-8?q?=EC=9E=84=EC=95=84=EC=9B=83=20180s=20=E2=86=92=20300s=20?= =?UTF-8?q?=EC=97=B0=EC=9E=A5=20-=20readiness=20probe=20URL=20/monitoring/?= =?UTF-8?q?login.do=20=E2=86=92=20/monitoring/loginForm.do=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20-=20readiness=20=EC=8B=A4=ED=8C=A8=20=EC=8B=9C=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=EC=B6=9C=EB=A0=A5=20=EB=82=B4=EC=9A=A9=20?= =?UTF-8?q?=EB=B0=8F=20=ED=8F=AC=ED=8A=B8=20=EC=A0=90=EA=B2=80=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/eapim-admin-ci.yml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/eapim-admin-ci.yml b/.gitea/workflows/eapim-admin-ci.yml index eba94c0..5e77d44 100644 --- a/.gitea/workflows/eapim-admin-ci.yml +++ b/.gitea/workflows/eapim-admin-ci.yml @@ -17,7 +17,7 @@ jobs: CATALINA_BASE: /prod/eapim/adminportal CATALINA_HOME: /prod/eapim/apache-tomcat-9.0.116 CATALINA_PID: /prod/eapim/adminportal/temp/catalina.pid - DEPLOY_HTTP_PORT: "30120" + DEPLOY_HTTP_PORT: "39120" defaults: run: working-directory: eapim-admin @@ -89,7 +89,7 @@ jobs: cp eapim-admin/build/libs/eapim-admin.war "$DEPLOY_DIR/monitoring.war" ls -la "$DEPLOY_DIR" - - name: Start tomcat and readiness probe (timeout 180s) + - name: Start tomcat and readiness probe (timeout 300s) working-directory: ${{ github.workspace }} run: | LOG="$CATALINA_BASE/logs/catalina.$(date +%Y-%m-%d).log" @@ -99,14 +99,17 @@ jobs: # systemd 가 Tomcat 을 새 cgroup 으로 띄움 — runner step 종료와 무관하게 살아남음 systemctl --user start eapim-admin - DEADLINE=$(($(date +%s) + 180)) + # /loginForm.do 는 GET 매핑(MainController#loginForm) → tomcat·webapp 양쪽 살아있으면 200 + # /login.do 는 POST 처리 — GET 으로 probe 시 405/잘못된 응답 가능성 있어 회피 + PROBE_URL="http://localhost:$DEPLOY_HTTP_PORT/monitoring/loginForm.do" + DEADLINE=$(($(date +%s) + 300)) STATUS=000 while [ $(date +%s) -lt $DEADLINE ]; do STATUS=$(curl -sS -o /dev/null -w '%{http_code}' --max-time 3 \ - "http://localhost:$DEPLOY_HTTP_PORT/monitoring/login.do" 2>/dev/null || echo "000") + "$PROBE_URL" 2>/dev/null || echo "000") case "$STATUS" in 200|302|401) - echo "Readiness OK (/monitoring/login.do HTTP $STATUS)" + echo "Readiness OK ($PROBE_URL HTTP $STATUS)" break ;; esac @@ -122,8 +125,13 @@ jobs: case "$STATUS" in 200|302|401) ;; *) - echo "::error::Readiness probe failed within 180s (last HTTP status: $STATUS)" - [ -f "$LOG" ] && tail -c +$((BEFORE+1)) "$LOG" | tail -100 + echo "::error::Readiness probe failed within 300s (last HTTP status: $STATUS)" + echo "--- last 300 lines of catalina log ---" + [ -f "$LOG" ] && tail -c +$((BEFORE+1)) "$LOG" | tail -300 + echo "--- systemd unit status ---" + systemctl --user status eapim-admin --no-pager || true + echo "--- listening ports ---" + ss -tlnp 2>/dev/null | grep -E ":$DEPLOY_HTTP_PORT\b" || echo "(port $DEPLOY_HTTP_PORT 미점유)" exit 1 ;; esac