name: Build and Deploy on: push: branches: - main workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest # ⚠️ ต้องตรงกับ Label ของ Runner ใน Gitea Settings (เช่น self-hosted) steps: - name: Deploy to QNAP via SSH uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} script_stop_signal: true # Stop script on error script: | # ⚠️ QNAP SSH ไม่มี PATH เต็ม ต้อง export เอง # docker: /share/CACHEDEV1_DATA/.qpkg/container-station/bin/docker # git: /opt/bin/git export PATH="/share/CACHEDEV1_DATA/.qpkg/container-station/bin:/opt/bin:/usr/local/bin:/usr/bin:/bin:$PATH" echo "🚀 Starting Deployment..." # 1. Update Code echo "📂 Pulling latest code..." cd /share/np-dms/app/source/lcbp3 git pull origin main # 2. Build Backend echo "🏗️ Building Backend..." docker build -f backend/Dockerfile -t lcbp3-backend:latest . # 3. Build Frontend echo "🏗️ Building Frontend..." docker build -f frontend/Dockerfile \ --build-arg NEXT_PUBLIC_API_URL=https://backend.np-dms.work/api \ -t lcbp3-frontend:latest . # 4. Update Containers echo "🔄 Updating Containers..." cd /share/np-dms/app # ⚠️ ลบ container เดิมที่อาจสร้างจาก Container Station docker rm -f backend frontend 2>/dev/null || true # 4a. Start Backend ก่อน echo "🟢 Starting Backend..." docker compose -f docker-compose-app.yml up -d backend # 4b. รอ Backend healthy (ทุก 5 วิ สูงสุด 60 วิ) echo "⏳ Waiting for Backend health check..." for i in $(seq 1 12); do if docker inspect --format='{{.State.Health.Status}}' backend 2>/dev/null | grep -q healthy; then echo "✅ Backend is healthy!" break fi if [ "$i" = "12" ]; then echo "⚠️ Backend health check timeout - starting frontend anyway" fi sleep 5 done # 4c. Start Frontend echo "🟢 Starting Frontend..." docker compose -f docker-compose-app.yml up -d frontend # 5. Cleanup echo "🧹 Cleaning up unused images..." docker image prune -f echo "✅ Deployment Complete!"