DOCS/journey/troubleshooting/250820_happybell80_skill-email_DB통합및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

5.6 KiB

skill-email DB 통합 및 Gitea Actions 51124 서버 배포 설정

작성일: 2025-08-20

작성자: happybell80

관련 서비스: skill-email, Gitea Actions


오전 9시 00분

DBCredentialsProvider 구현 상태 확인

초기 혼란

  • 처음에는 DBCredentialsProvider가 구현되지 않았다고 판단
  • grep 검색으로 찾을 수 없었음
  • 트러블슈팅 문서에도 "skill-email이 여전히 파일 기반 토큰 사용 중"이라고 기록

실제 상태 (heejae PR 머지 후)

  • services/db_credentials_provider.py 파일 존재
  • DBCredentialsProvider 클래스 완전 구현
  • psycopg2 의존성 추가됨
  • ⚠️ 환경변수 미설정으로 활성화되지 않은 상태

오전 9시 10분

Gitea Actions 배포 경로 문제

문제 상황

  • Actions 실행 시 /home/admin/ivada_project/skill-email: 그런 파일이나 디렉터리가 없습니다 오류
  • 51123 서버의 runner가 로컬 경로 접근 시도

첫 번째 시도 (실패)

# 잘못된 접근 - 로컬 경로 사용
cd /home/admin/ivada_project/skill-email
docker compose down

원인 분석

  • skill-email은 51124 서버에서 실행되어야 함
  • 51123 서버의 runner는 51124 서버로 SSH 접속 필요
  • 트러블슈팅 문서 참고 필요

오전 9시 20분

트러블슈팅 문서 학습 및 SSH 방식 적용

핵심 교훈 (기존 문서에서)

  1. 51124 서버 배포 방식:

    • 51123 runner → 51124 서버 SSH 접속
    • Organization secrets 사용: SSH_PRIVATE_KEY_51124, SSH_HOST_51124
    • SSH 포트: 51124 (커스텀 포트)
  2. 정확한 경로:

    • 51124 서버: /home/admin/ivada_project/skill-email
    • git pull 방식으로 코드 업데이트

수정된 워크플로우

- name: Setup SSH
  run: |
    echo "🔑 Setting up SSH..."
    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 }} << 'EOF'
      cd /home/admin/ivada_project/skill-email
      git pull origin main --rebase
      docker compose down || echo "Container was not running"
      docker compose up -d --build
    EOF

오전 9시 25분

SSH 키 삭제 순서 문제

문제 상황

  • Health check 단계에서 Identity file /root/.ssh/deploy_key not accessible 오류
  • Health check가 1분 이상 대기

원인

  • Cleanup SSH 단계가 Health check보다 먼저 실행됨
  • Health check도 SSH 연결이 필요한데 키가 이미 삭제됨

해결

  • 순서 변경: Deploy → Health check → Cleanup SSH

오전 9시 30분

DBCredentialsProvider 활성화

docker-compose.yml 수정

environment:
  - TOKEN_BASE=/app/auth-server/tokens
  - TOKEN_PROVIDER=database  # 추가
  - POSTGRES_CONNECTION_STRING=${POSTGRES_CONNECTION_STRING}  # 추가

브랜치 전략

  • main 브랜치에서 작업
  • happybell80 브랜치로 푸시
  • PR 생성 후 머지

오전 9시 35분

Actions 중복 실행 문제

문제 상황

  • PR 머지 시 Actions가 2개 동시 실행
  • 동일한 배포가 두 번 수행됨

원인

on:
  push:
    branches: [main]
  pull_request:
    types: [closed]
    branches: [main]
  • PR 머지 시 두 이벤트 발생:
    1. pull_request (closed) 이벤트
    2. push 이벤트 (머지 커밋)

해결

on:
  push:
    branches: [main]
# PR 이벤트 제거 - push만으로 충분

최종 결과

완료된 작업

  1. DBCredentialsProvider 활성화

    • TOKEN_PROVIDER=database 환경변수 추가
    • POSTGRES_CONNECTION_STRING 설정
    • 파일 기반에서 DB 기반으로 전환 완료
  2. Gitea Actions 51124 서버 배포

    • SSH 방식으로 올바르게 설정
    • 포트 51124 사용
    • git pull 방식으로 코드 업데이트
  3. Actions 최적화

    • 중복 실행 문제 해결
    • SSH 키 관리 순서 정정

📊 시스템 아키텍처

사용자 → rb10508_micro → skill-email(DB 연동) → Gmail API
              ↓                ↓
         PostgreSQL (gmail_token 테이블)
              ↑
        robeing-monitor (아이템 관리)

🔄 배포 플로우

git push → Gitea Actions (51123) → SSH (포트 51124) → 51124 서버
         → git pull → docker-compose up -d --build

교훈

1. 트러블슈팅 문서 활용의 중요성

  • 기존 문서에 이미 해결책이 있는 경우가 많음
  • 특히 서버 간 SSH 연결, 배포 경로 등은 이미 검증된 패턴 사용

2. 환경변수 설정 확인

  • 코드가 구현되어 있어도 환경변수가 없으면 활성화되지 않음
  • docker-compose.yml과 .env 파일 모두 확인 필요

3. Actions 이벤트 이해

  • PR 머지는 두 개의 이벤트를 발생시킴
  • 단순하게 push 이벤트만 사용하는 것이 효율적

4. SSH 작업 순서

  • SSH 키는 모든 SSH 작업이 끝난 후에 삭제
  • Health check도 SSH를 사용한다면 키 필요

5. 서버 역할 분리 이해

  • 51123: nginx 프록시, Gitea, Actions runner
  • 51124: 로빙 및 스킬 서비스 실행
  • 각 서버의 역할과 경로 구조 명확히 파악

관련 커밋

  • skill-email: 8a9403c - SSH 방식으로 51124 서버 배포 수정
  • skill-email: 3f85138 - SSH 키 삭제 순서 수정
  • skill-email: d377af9 - DBCredentialsProvider 환경변수 추가
  • skill-email: 7137c4f - Actions 중복 실행 방지

문서 끝