DOCS/journey/troubleshooting/250904_admin_skill-news_zombie_process_gitea_actions.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동
- book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서)
- 빈 폴더 제거 (journey/assets/*)
2025-11-17 14:06:05 +09:00

3.7 KiB

skill-news 좀비 프로세스 및 Gitea Actions 배포 문제 해결

날짜: 2025-09-04
작업자: admin
관련 서비스: skill-news, Gitea Actions
서버: 51124 (192.168.219.52)

문제 1: Chrome headless 좀비 프로세스 67개 발생

증상

ps aux | grep defunct | wc -l
# 67
  • headless_shell 프로세스가 좀비로 남음
  • 부모 프로세스: skill-news 컨테이너 (PID 3024266)

원인

  • Docker 컨테이너에서 PID 1 프로세스(Python)가 자식 프로세스 정리 못함

해결

# skill_news/docker-compose.yml
services:
  skill-news:
    init: true  # 좀비 프로세스 정리용
    build: .
    container_name: robeing-skill-news

결과 해결 완료

  • 컨테이너 재시작 후 좀비 프로세스 67개 → 1개로 감소
  • 1개는 claude 관련 git 프로세스(무관)
  • skill-news 컨테이너 정상 작동 중 (healthy)
  • Gitea Actions 자동 배포 성공
  • 2025-09-04 재확인: 정상 작동 유지

문제 2: Gitea Actions YAML 문법 오류

증상

Workflow config file is invalid. Please check your config file: 
yaml: line 76: could not find expected ':'

원인

  • heredoc 사용시 YAML 파서가 내용을 YAML로 해석

첫 번째 시도 (실패)

# .gitea/workflows/cicd.yml
sudo tee .env > /dev/null << 'ENVFILE'
NEWS_SERVICE_PORT=8505
ENVFILE
  • sudo teecat으로 변경했으나 여전히 오류

최종 해결

# heredoc 대신 echo 명령어 사용
echo "NEWS_SERVICE_PORT=8505" > .env
echo "NEWS_SERVICE_HOST=0.0.0.0" >> .env
# ... 나머지 환경변수들

문제 3: 51124 서버 SSH 배포 실패

증상

  • Actions runner(51123)가 로컬 경로 /home/admin/ivada_project/skill-email 접근 시도
  • "그런 파일이나 디렉터리가 없습니다" 오류

해결

# .gitea/workflows/cicd.yml 전면 재작성
- name: Setup SSH
  run: |
    mkdir -p ~/.ssh
    echo "${{ secrets.SSH_PRIVATE_KEY_51124 }}" > ~/.ssh/deploy_key
    chmod 600 ~/.ssh/deploy_key
    ssh-keyscan -p 51124 -H ${{ secrets.SSH_HOST_51124 }} >> ~/.ssh/known_hosts

- name: Deploy to 51124 Server
  run: |
    ssh -p 51124 -i ~/.ssh/deploy_key admin@${{ secrets.SSH_HOST_51124 }} << 'DEPLOY_SCRIPT'
    cd /home/admin/ivada_project/skill_news
    git pull origin main --rebase
    docker compose down
    docker compose up -d --build
    DEPLOY_SCRIPT

필요한 시크릿

  • SSH_PRIVATE_KEY_51124: SSH 개인키
  • SSH_HOST_51124: 192.168.219.52

문제 4: Health check 성공해도 Actions 실패 표시

증상

✅ Service is healthy!
# Actions는 빨간 X 표시 (exit status 1)

원인

  • heredoc 내부 exit 0이 SSH 세션 전체를 종료

해결

# 변경 전
if curl -f http://localhost:8505/health; then
  echo "✅ Service is healthy!"
  exit 0  # SSH 세션 종료됨
fi

# 변경 후
if curl -f http://localhost:8505/health; then
  echo "✅ Service is healthy!"
  break  # 반복문만 종료
fi

최종 상태

배포 확인 (2025-09-04 14:47)

docker ps | grep robeing-skill-news
# cfcdb2a7221e   skill_news-skill-news   Up 54 seconds (healthy)

ps aux | grep defunct | wc -l  
# 3 (skill-news 관련 없음)

curl http://localhost:8505/health
# {"status":"healthy"}

커밋 이력

  • d96d040: docker-compose.yml에 init: true 추가
  • 1e843dd: YAML heredoc을 echo로 변경
  • 9abd417: SSH 배포 방식 전면 재작성
  • 1dfa735: Health check exit 0 → break 변경

참고 문서

  • 250820_happybell80_skill-email_DB통합및Actions배포.md (SSH 배포 구조)
  • 250819_happybell80_GmailItem구현및GitActions설정.md (heredoc 문제)
  • 250728_happybell80_nginx프록시및CI배포문제해결.md (exit 0 문제)