# skill-email Gitea Actions 설정 실패 및 해결 **날짜**: 2025-07-22 **작업자**: happybell80 & Claude ## 오후 4시 30분 ### skill-email 자동 배포를 위한 Gitea Actions 설정 **요청**: skill-email 저장소에 자동 배포 설정 필요 **첫 시도 - 잘못된 접근**: ```yaml # ❌ 잘못된 방법 - 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**: ```yaml 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_name` → `gitea.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 포함