act 는 run: 스텝을 bash -e -o pipefail 로 실행한다. `find ... | head -1` 은
head 가 첫 줄을 받고 파이프를 닫는 순간 find 가 SIGPIPE(141)로 죽어 파이프라인
전체가 실패로 판정된다. 빌드가 BUILD SUCCESS 로 끝나고 192MB WAR 까지 만든 뒤
"산출물 검증" 스텝이 출력 한 줄 없이 죽어 배포가 멈췄다.
실측: bash -e -o pipefail 에서 `find | head -1` → 141, `-print -quit` → 0.
- 산출물 검증: find 를 -print -quit 로 바꿔 파이프 자체를 없앤다
- 사전 점검: `free -h | head -2` 도 같은 경합을 안고 있어 파이프를 제거
리포 주석이 경고하던 바로 그 함정이다(deploy/dev 배포 스크립트의
unzip -l | grep -q 사고와 동일 원인).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
웹서버(175.118.124.176)의 Gitea 러너가 JDK8 로 WAR 을 빌드해 WAS(27.255.76.2)의
Tomcat·MariaDB 컨테이너로 배포한다. WAS 는 웹서버를 통해서만 닿고, Tomcat 은
127.0.0.1 바인딩이라 웹서버가 SSH 터널로 잇는다.
- WAS 는 가용 메모리가 3G 안팎(llama-server 200G+ 점유)이라 빌드를 웹서버에서 한다
- claudeops 가 sudo 를 쓸 수 없어 Tomcat·MariaDB 를 컨테이너로 올렸다
- 배포 스크립트를 매 실행마다 저장소본으로 덮어써 서버 사본 드리프트를 막는다
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>