name: Deploy to Production on: push: branches: - main - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Deploy to server run: | echo "πŸš€ Deploying to /var/www/services/sena_db_api" echo "πŸ“ Current directory: $(pwd)" echo "πŸ“ GITHUB_WORKSPACE: $GITHUB_WORKSPACE" ls -la # Create directory if it doesn't exist mkdir -p /var/www/services/sena_db_api # Copy files to destination (runner Δ‘Γ£ mount /var/www) rsync -av --delete \ --exclude 'node_modules' \ --exclude '.git' \ --exclude '.gitea' \ --exclude 'logs' \ --exclude 'uploads' \ --exclude 'runner-data' \ --exclude '.env' \ --exclude 'docker-compose.runner.yml' \ --exclude 'setup-runner.sh' \ $GITHUB_WORKSPACE/ /var/www/services/sena_db_api/ echo "βœ… Files copied successfully" - name: Install dependencies run: | cd /var/www/services/sena_db_api echo "πŸ“¦ Installing dependencies with npm..." npm install --production echo "βœ… Dependencies installed" - name: Create required directories run: | cd /var/www/services/sena_db_api mkdir -p logs uploads data echo "βœ… Directories created" - name: Restart PM2 service run: | echo "πŸ”„ Restarting PM2 service..." # TαΊ‘o trigger file để PM2 watcher restart service touch /var/www/services/sena_db_api/.pm2-restart-trigger # Đợi watcher xα»­ lΓ½ (tα»‘i Δ‘a 10s) for i in {1..5}; do if [ ! -f /var/www/services/sena_db_api/.pm2-restart-trigger ]; then echo "βœ… PM2 service restarted" exit 0 fi sleep 2 done echo "⚠️ Trigger file created, PM2 will restart shortly" - name: Deployment completed run: | echo "βœ… Deployment completed successfully!" echo "πŸ“ Location: /var/www/services/sena_db_api" echo "πŸ”§ PM2 service will restart within 2 seconds"