Files
distribution_erp/.gitea/workflows/deploy.yml
T
chpark b46ec3c1a6
Deploy momo-erp to production / deploy (push) Failing after 0s
fix(ci): actions/checkout 제거 + secret 검증 단계 추가
이전 실패 원인: Gitea Actions runner 가 actions/checkout@v4 를 가져오지
못해 4초만에 즉사. 어차피 원격 서버에서 git clone 하므로 checkout 단계
자체가 불필요. 첫 단계에서 필수 secret 부재 여부를 명시적으로 검사.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:16:45 +09:00

96 lines
3.8 KiB
YAML

name: Deploy momo-erp to production
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Verify required secrets
run: |
[ -n "${{ secrets.DEPLOY_SSH_KEY }}" ] || { echo "::error::DEPLOY_SSH_KEY secret 누락"; exit 1; }
[ -n "${{ secrets.DEPLOY_HOST }}" ] || { echo "::error::DEPLOY_HOST secret 누락"; exit 1; }
[ -n "${{ secrets.DEPLOY_USER }}" ] || { echo "::error::DEPLOY_USER secret 누락"; exit 1; }
[ -n "${{ secrets.DATABASE_URL }}" ] || { echo "::error::DATABASE_URL secret 누락"; exit 1; }
echo "✔ secrets present"
- name: Setup SSH
run: |
mkdir -p ~/.ssh
printf '%s\n' "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H "${{ secrets.DEPLOY_HOST }}" >> ~/.ssh/known_hosts 2>/dev/null || true
- name: Deploy via SSH
env:
SSH_USER: ${{ secrets.DEPLOY_USER }}
SSH_HOST: ${{ secrets.DEPLOY_HOST }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
MASTER_PWD: ${{ secrets.MASTER_PWD }}
AES_KEY: ${{ secrets.AES_KEY }}
SMTP_HOST: ${{ secrets.SMTP_HOST }}
SMTP_PORT: ${{ secrets.SMTP_PORT }}
SMTP_USER: ${{ secrets.SMTP_USER }}
SMTP_PASS: ${{ secrets.SMTP_PASS }}
SMTP_FROM: ${{ secrets.SMTP_FROM }}
MOMO_BANK_ACCOUNT: ${{ secrets.MOMO_BANK_ACCOUNT }}
MOMO_PHONE: ${{ secrets.MOMO_PHONE }}
run: |
# 환경변수를 원격 셸로 전달하기 위해 export 한 뒤 -E 로 보내거나, heredoc 안에서 GitHub-style 변수 보간 사용
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=15 "$SSH_USER@$SSH_HOST" \
"DATABASE_URL='$DATABASE_URL' \
NEXTAUTH_URL='$NEXTAUTH_URL' \
NEXTAUTH_SECRET='$NEXTAUTH_SECRET' \
MASTER_PWD='$MASTER_PWD' \
AES_KEY='$AES_KEY' \
SMTP_HOST='$SMTP_HOST' \
SMTP_PORT='$SMTP_PORT' \
SMTP_USER='$SMTP_USER' \
SMTP_PASS='$SMTP_PASS' \
SMTP_FROM='$SMTP_FROM' \
MOMO_BANK_ACCOUNT='$MOMO_BANK_ACCOUNT' \
MOMO_PHONE='$MOMO_PHONE' \
bash -s" <<'REMOTE_SCRIPT'
set -e
DEPLOY_DIR="$HOME/momo-erp/source"
mkdir -p "$HOME/momo-erp"
if [ -d "$DEPLOY_DIR/.git" ]; then
cd "$DEPLOY_DIR"
git fetch origin
git reset --hard origin/main
else
git clone https://git.junggomoa.com/chpark/distribution_erp.git "$DEPLOY_DIR"
cd "$DEPLOY_DIR"
fi
cat > .env.production <<ENVEOF
DATABASE_URL="$DATABASE_URL"
NEXTAUTH_URL="$NEXTAUTH_URL"
NEXTAUTH_SECRET="$NEXTAUTH_SECRET"
NEXT_PUBLIC_APP_NAME="유통관리 ERP"
NEXT_PUBLIC_COMPANY_NAME="모모유통"
MASTER_PWD="$MASTER_PWD"
AES_KEY="$AES_KEY"
FILE_STORAGE_PATH="/data_storage"
LOG_LEVEL=info
SMTP_HOST="$SMTP_HOST"
SMTP_PORT="$SMTP_PORT"
SMTP_USER="$SMTP_USER"
SMTP_PASS="$SMTP_PASS"
SMTP_FROM="$SMTP_FROM"
MOMO_BANK_ACCOUNT="$MOMO_BANK_ACCOUNT"
MOMO_PHONE="$MOMO_PHONE"
ENVEOF
docker compose -f docker-compose.prod.yml up -d --build
# 마이그레이션 (실패해도 배포는 성공으로 간주)
docker compose -f docker-compose.prod.yml exec -T momo-erp npm run migrate:momo || \
echo "::warning::migration step failed or skipped"
docker compose -f docker-compose.prod.yml ps
REMOTE_SCRIPT