Merge pull request #505 from PromptPlace/feat/#491-b-billing-key #67
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: deploy-dev | |
| on: | |
| push: | |
| branches: [ develop ] | |
| workflow_dispatch: | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Configure SSH | |
| env: | |
| EC2_USER: ubuntu | |
| EC2_HOST: ${{ secrets.EC2_HOST }} | |
| EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }} | |
| run: | | |
| set -euo pipefail | |
| mkdir -p ~/.ssh | |
| printf "%s" "$EC2_SSH_KEY" > ~/.ssh/id_rsa | |
| chmod 600 ~/.ssh/id_rsa | |
| cat >>~/.ssh/config <<END | |
| Host prod | |
| HostName $EC2_HOST | |
| User $EC2_USER | |
| IdentityFile ~/.ssh/id_rsa | |
| StrictHostKeyChecking no | |
| END | |
| # 운영 폴더(/opt/app-backup)와 섞이지 않게 'app-dev' 폴더를 따로 사용 | |
| - name: Prepare target dir | |
| run: | | |
| ssh prod 'sudo mkdir -p /opt/app-dev && sudo chown ubuntu:ubuntu /opt/app-dev' | |
| - name: Sync workspace | |
| run: | | |
| rsync -az --delete --exclude ".git" --exclude "node_modules" ./ prod:/opt/app-dev/ | |
| # .env가 아니라 .env.dev로 저장하되, 내용은 DEV용 시크릿을 사용 | |
| - name: Write .env on EC2 | |
| run: | | |
| ssh prod 'cat > /opt/app-dev/.env.dev <<EOF | |
| ${{ secrets.ENV_DEV_CONTENT }} | |
| EOF' | |
| # 테스트 DB 마이그레이션 (npx로 prisma CLI 1회 호출 — EC2 build 단계 없이) | |
| - name: Run Prisma DB Push (Dev) | |
| run: | | |
| ssh prod << 'EOF' | |
| set -euo pipefail | |
| cd /opt/app-dev | |
| export $(grep -v '^#' .env.dev | xargs) | |
| npx --yes -p prisma@^6 prisma db push | |
| EOF | |
| # 도커 빌드 전 디스크 정리 (7일 이상 미사용 데이터만 — BuildKit 캐시 보존) | |
| - name: Prune stale Docker data on EC2 | |
| run: | | |
| ssh prod 'sudo docker system prune -f --filter "until=168h" || true' | |
| # app-dev 컨테이너만 빌드/재시작 (install/generate/build는 Dockerfile 멀티스테이지로 통합) | |
| - name: Deploy Docker services (Dev) | |
| run: | | |
| ssh prod 'cd /opt/app-dev && sudo docker compose -p promptplace -f docker-compose.yml up -d --build app-dev' |