name: Deploy Canina on: push: branches: - main - develop jobs: deploy: runs-on: canina steps: - name: Deploy Canina env: BRANCH: ${{ github.ref_name }} run: | echo "87.248.133.138 git.parsaaghayi.ir" >> /etc/hosts # تعریف متغیرها if [ "$BRANCH" == "develop" ]; then COMPOSE_FILE="compose.stage.yml" TARGET_DIR="/opt/services/canina/stage" BACKEND_HOST="backend_stage" APP_HOST="stage.canina.ir" ADMIN_HOST="stageadmin.canina.ir" API_URL="https://stageapi.canina.ir" CONTAINER_PREFIX="canino_backend_stage" else COMPOSE_FILE="compose.prod.yml" TARGET_DIR="/opt/services/canina/prod" BACKEND_HOST="backend_prod" APP_HOST="canina.ir" ADMIN_HOST="admin.canina.ir" API_URL="https://api.canina.ir" CONTAINER_PREFIX="canino_backend_prod" fi mkdir -p "$TARGET_DIR" # کلون کردن / آپدیت if [ ! -d "$TARGET_DIR/.git" ]; then echo "Cloning repository into $TARGET_DIR..." git clone -b "$BRANCH" https://git.parsaaghayi.ir/parsa/canina.git "$TARGET_DIR" else echo "Pulling latest changes in $TARGET_DIR..." cd "$TARGET_DIR" git fetch origin "$BRANCH" git reset --hard "origin/$BRANCH" cd - fi # ✅ مسیر درست: برو به پوشه‌ی دانلود شده، فایل‌های کامپوز رو از داخل اون بردار echo "Copying configuration files from $TARGET_DIR/scripts to $TARGET_DIR..." cp "$TARGET_DIR/scripts/$COMPOSE_FILE" "$TARGET_DIR/docker-compose.yml" cd "$TARGET_DIR" echo "Building Docker images..." docker compose build \ --build-arg NEXT_PUBLIC_API_URL="${API_URL}/api" \ --build-arg VITE_API_URL="${API_URL}" echo "Starting containers..." docker compose up -d sleep 15 docker exec "$CONTAINER_PREFIX" npx prisma migrate deploy || true docker exec "$CONTAINER_PREFIX" npx prisma db seed || true echo "Deployment for $BRANCH completed successfully!"