Files
report/.gitea/workflows/deploy.yml
T
ttipo 58c90b3454
Deploy / deploy (push) Failing after 1s
배포 방식을 영구 디렉터리 git pull 방식으로 변경
actions/checkout의 git clean이 바인드 마운트된 backend/img(업로드 파일)를
삭제하는 문제가 있어, 서버의 영구 배포 디렉터리에서 pull + compose up 하는
방식으로 전환. .env는 서버 파일로 관리하므로 Secrets 등록 불필요.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 04:47:04 +09:00

50 lines
1.6 KiB
YAML

# main 브랜치에 push 되면 배포 서버의 러너가 영구 배포 디렉터리에서
# git pull 후 이미지를 빌드하고 컨테이너를 재기동합니다.
#
# 사전 준비 (배포 서버에서 1회):
# 1. act_runner를 host 모드 라벨 "deploy"로 등록 (러너 계정: deploy)
# 2. 영구 배포 디렉터리 준비:
# git clone https://git.wandergo.net/partnership/blog_report.git ~/stacks/_clients/blog_report
# 해당 디렉터리에 .env 와 frontend/.env.production 을 생성 (chmod 600)
#
# .env 는 gitignore 대상이라 git 작업에 영향받지 않고 서버에 유지됩니다.
name: Deploy
on:
push:
branches: [main]
env:
DEPLOY_DIR: /home/deploy/stacks/_clients/blog_report
jobs:
deploy:
runs-on: deploy
steps:
- name: Pull latest code
run: |
cd "$DEPLOY_DIR"
git remote set-url origin "https://gitea-actions:${{ github.token }}@git.wandergo.net/partnership/blog_report.git"
git fetch origin main
git reset --hard origin/main
- name: Check env files exist
run: |
cd "$DEPLOY_DIR"
test -f .env || { echo "ERROR: $DEPLOY_DIR/.env 가 없습니다"; exit 1; }
test -f frontend/.env.production || { echo "ERROR: frontend/.env.production 이 없습니다"; exit 1; }
- name: Build images
run: |
cd "$DEPLOY_DIR"
docker compose build backend frontend
- name: Restart containers
run: |
cd "$DEPLOY_DIR"
docker compose up -d
- name: Prune dangling images
run: docker image prune -f