Merge pull request #374 from PromptPlace/fix/#373 #296
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-main | |
| on: | |
| push: | |
| branches: [ main ] | |
| workflow_dispatch: | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Check prisma has changes | |
| id: paths-filter | |
| uses: dorny/paths-filter@v3 | |
| with: | |
| filters: | | |
| prisma: ["prisma/**"] | |
| - 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 | |
| - name: Prepare target dir | |
| run: | | |
| ssh prod 'sudo mkdir -p /opt/app-backup && sudo chown ubuntu:ubuntu /opt/app-backup' | |
| - name: Sync workspace (rsync --delete) | |
| run: | | |
| rsync -az --delete --exclude ".git" --exclude "node_modules" ./ prod:/opt/app-backup/ | |
| - name: Write .env on EC2 | |
| run: | | |
| ssh prod 'cat > /opt/app-backup/.env <<EOF | |
| ${{ secrets.ENV_CONTENT }} | |
| EOF' | |
| - name: Install, Generate & Build on server | |
| run: | | |
| ssh prod 'cd /opt/app-backup && pnpm install --frozen-lockfile && pnpm exec prisma generate && rm -rf dist && pnpm build' | |
| - name: Run Prisma migrations (deploy) | |
| if: steps.paths-filter.outputs.prisma == 'true' | |
| run: | | |
| ssh prod << 'EOF' | |
| set -euo pipefail | |
| cd /opt/app-backup | |
| pnpm exec prisma migrate deploy | |
| EOF | |
| - name: Stop and Remove old containers | |
| run: | | |
| ssh prod 'cd /opt/app-backup && sudo docker rm -f myapp || true && sudo docker rm -f caddy || true' | |
| - name: Deploy Docker services | |
| run: | | |
| ssh prod 'cd /opt/app-backup && sudo docker compose -p promptplace -f docker-compose.yml up -d --build app caddy' |