DOCS/troubleshooting/250722_happybell80_skill-email_Actions설정실패.md
2025-08-13 14:04:25 +09:00

3.7 KiB
Executable File

skill-email Gitea Actions 설정 실패 및 해결

날짜: 2025-07-22
작업자: happybell80 & Claude

오후 4시 30분

skill-email 자동 배포를 위한 Gitea Actions 설정

요청: skill-email 저장소에 자동 배포 설정 필요

첫 시도 - 잘못된 접근:

# ❌ 잘못된 방법 - GitHub Actions 스타일
- name: Deploy to server
  uses: appleboy/ssh-action@v0.1.5  # SSH 액션 사용
  with:
    host: ro-being.com
    username: admin
    key: ${{ secrets.SSH_PRIVATE_KEY }}
    script: |
      cd /home/admin/projects/ivada/skill_email  # 잘못된 경로
      git pull origin main
      docker compose up -d --build

문제점들:

  1. SSH action 사용 - Gitea self-hosted runner에서는 불필요
  2. 경로 오류 - /home/admin/projects/ivada/skill_email 존재 안함
  3. GitHub 문법 사용 - github.event_name (Gitea에서 작동 안함)
  4. runner 설정 오류 - runs-on: ubuntu-latest (우리는 self-hosted 사용)

오후 4시 45분

실패 원인 분석

오류 메시지:

Error: can't connect without a private SSH key or password

근본 원인:

  • Gitea Actions는 self-hosted runner로 서버에서 직접 실행됨
  • SSH로 접속할 필요가 없음 (이미 서버에 있음)
  • 다른 프로젝트(rb10508_test, frontend-base) 참고 필요

오후 5시 00분

올바른 해결책 - rb10508_test 패턴 적용

수정된 workflow:

name: Deploy Skill-Email Service

on:
  pull_request:
    types: [closed]
    branches:
      - main

jobs:
  deploy:
    if: gitea.event.pull_request.merged == true
    runs-on: self-hosted  # ✅ self-hosted 필수!
    
    steps:
      - name: Checkout source code
        uses: actions/checkout@v4
        
      - name: Stop existing container
        run: |
          cd /home/admin/skill_email  # ✅ 올바른 경로
          docker compose down || true
          
      - name: Update source code and deploy
        run: |
          mkdir -p /home/admin/skill_email
          cd /home/admin/skill_email
          
          # 기존 파일 삭제 (설정 파일 제외)
          find . -mindepth 1 \
            ! -name '.env' \
            ! -name 'token.json' \
            ! -name 'credentials.json' \
            -exec rm -rf {} + 2>/dev/null || true
          
          # Actions가 체크아웃한 코드 복사
          cp -r /home/admin/.cache/act/*/hostexecutor/* /home/admin/skill_email/
          
          # 배포
          docker compose up -d --build

핵심 차이점:

  1. SSH action 제거 - 직접 명령 실행
  2. self-hosted runner 사용
  3. git pull 대신 파일 복사
  4. 올바른 경로 사용

오후 5시 15분

추가 수정사항

문법 오류 수정:

  • github.event_namegitea.event (Gitea 전용 문법)
  • 불필요한 조건문 제거 (단순화)

최종 트리거 설정:

  • PR merge 시에만 실행 (push 제거)
  • 중복 실행 방지

교훈

1. Gitea Actions ≠ GitHub Actions

  • Gitea는 자체 문법 사용 (gitea.event)
  • SSH action 불필요 (self-hosted runner가 서버에서 직접 실행)

2. 다른 프로젝트 참고 필수

  • rb10508_test, frontend-base의 workflow 먼저 확인
  • 검증된 패턴 재사용

3. self-hosted runner 이해

  • runs-on: self-hosted 필수
  • runner가 이미 서버에 있으므로 SSH 불필요
  • 직접 명령 실행 가능

4. 경로 확인

  • 로컬: /home/happybell/projects/ivada/
  • 서버: /home/admin/ (projects/ivada 없음)

5. Actions 코드 위치

  • 체크아웃된 코드: /home/admin/.cache/act/*/hostexecutor/
  • git pull 대신 이 경로에서 복사

결과

  • 자동 배포 성공
  • PR merge 시 자동 실행
  • health check 포함