- 모든 .md, .html 파일 권한을 644로 정상화 - .gitignore 파일 권한도 644로 수정 - 문서 파일에 실행 권한은 불필요하고 보안상 바람직하지 않음 - deprecated 아이디어 폴더 생성 및 레벨별 UI 변경 아이디어 이동
3.7 KiB
3.7 KiB
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
문제점들:
- SSH action 사용 - Gitea self-hosted runner에서는 불필요
- 경로 오류 -
/home/admin/projects/ivada/skill_email존재 안함 - GitHub 문법 사용 -
github.event_name(Gitea에서 작동 안함) - 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
핵심 차이점:
- ✅ SSH action 제거 - 직접 명령 실행
- ✅ self-hosted runner 사용
- ✅ git pull 대신 파일 복사
- ✅ 올바른 경로 사용
오후 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 포함