# نشر مشروع عبر وكيل برمجة بالذكاء الاصطناعي

> الأوامر الدقيقة التي يشغّلها وكيل برمجة لنشر مجلد مشروع على ‎*.gheima.ma: خطوة تسجيل الدخول التي يقوم بها الشخص، وما يُفعل حين تفشل خطوة.

Source: https://gheima.ma/ar/docs/deploy-with-an-agent

لوكيل برمجة طُلب منه «انشر هذا على gheima.ma». شغّل كل أمر من مجلد المشروع مع ‎--json: يحمل stdout وثيقة JSON واحدة، ويصل الخطأ إلى stderr بالشكل {"error":{"code","message"}}. يقول رمز الخروج ما حدث: 0 نجاح، 2 خيار ناقص، 3 غير مسجَّل الدخول، 5 مرفوض، 7 انتهت المهلة، 8 لم يصبح النشر مباشرًا.

### 1. الحصول على الـCLI

```bash
npx -y @gheima/cli@latest --version
```

لا شيء للتثبيت: استعمل npx -y @gheima/cli@latest أينما كتبت هذه الصفحة gheima. يحتاج Node 20 أو أحدث. بدون Node، يثبّت curl -fsSL https://gheima.ma/install.sh | sh ملفًا تنفيذيًا مستقلًا في ‎~/.local/bin.

### 2. تسجيل الدخول: الخطوة الوحيدة للشخص

```bash
gheima whoami --json
# exit 0: signed in already, go to step 3. Exit 3: sign in below.
gheima login --no-wait --json
gheima login --resume --timeout 110 --json
```

يطبع login ‎--no-wait قيمتي userCode وverificationUrl ثم ينتهي. ينتظر login ‎--resume الموافقة.

1. **سلّم الرابط** — قل للشخص حرفيًا: «افتح <verificationUrl>، وسجّل الدخول أو أنشئ حسابًا، ثم وافق على الرمز <userCode>.» استعمل القيم التي طبعها login ‎--no-wait.
2. **انتظر** — شغّل gheima login ‎--resume ‎--timeout 110 ‎--json مرة واحدة. الخروج بـ 0 يعني تسجيل الدخول: انتقل إلى الخطوة 3. الخروج بالرمز 7 مع الشفرة login_pending يعني أن الشخص لم يوافق بعد: توقّف هنا، وقل إنك تنتظر موافقته، وأعد تشغيل login ‎--resume حين يخبرك أنه وافق، بدل الاستعلام المتكرر حتى ينتهي الرمز. ينتهي الرمز بعد عشر دقائق؛ بعدها ابدأ من جديد بـ login ‎--no-wait.

> Note: الحسابات الجديدة بدعوة خلال المرحلة التجريبية. حين تقول صفحة تسجيل الدخول إن دعوة مطلوبة، اطلب من الشخص أن يطلب واحدة من hello@gheima.ma، وتوقّف حتى يصبح لديه حساب.

### 3. النشر

```bash
gheima deploy --yes --json
```

يكتمل حين يخرج بـ 0 مع ‎"status": "LIVE"‎ و‎"url"‎. أعطِ الشخص الرابط.

ينشئ أول نشر في مجلد خدمةً تحمل اسم package.json أو اسم المجلد (يحدّد ‎--name اسمًا آخر)، ويربط المجلد في ‎.gheima/. يصبح مجلد ملفات HTML بسيطة (ملف index.html ولا شيء يبني أو يشغّل خادمًا) موقعًا ثابتًا، تحسبه الخطط منفصلًا عن الخدمات (اختر النوع بنفسك بـ ‎--type). تعيد عمليات النشر اللاحقة استعمال الخدمة. من أين تأتي الشيفرة:

- `للمجلد مستودع git بعيد`: يبني Gheima المستودع البعيد على الفرع الحالي. ادفع أولًا: الإيداعات المحلية فقط لا تُنشر. يحتاج مستودع GitHub الخاص أيضًا تطبيق Gheima على GitHub (انظر أدناه).
- `لا مستودع بعيد، أو ليس مستودع git`: يُرفع المجلد ثم يُبنى. داخل مستودع git يتبع الرفع ملف ‎.gitignore؛ وتُستبعد ملفات ‎.env ومجلد node_modules دائمًا. أضِف ‎--upload للرفع حتى مع وجود مستودع بعيد.

### حين تفشل خطوة

- `الخروج 8: لم يصبح النشر مباشرًا`: اقرأ سجل البناء بـ gheima logs ‎--build، ثم رمز الخطأ الذي يذكره في https://gheima.ma/ar/docs/errors.md. أصلح التطبيق، وادفع (إلا في حالة الرفع)، وأعد تشغيل gheima deploy ‎--json.
- `الخروج 3: غير مسجَّل الدخول`: عُد إلى الخطوة 2.
- `الخروج 2 مع ذكر ‎--yes`: ينشئ أول نشر خدمةً ويسأل قبل ذلك. مرّر ‎--yes بعد أن يطلب الشخص النشر.
- `الخروج 5: الاسم مأخوذ`: مرّر ‎--name آخر.
- `الخروج 1 مع الرمز payload_too_large: الرفع كبير جدًا`: استبعد مخرجات البناء والملفات الكبيرة عبر ‎.gitignore: يثبّت البناء التبعيات وينتج مخرجاته بنفسه.
- `يقول سجل البناء إن المستودع غير موجود`: المستودع خاص ولا يستطيع Gheima قراءته. اطلب من الشخص تثبيت تطبيق Gheima على GitHub عليه من https://gheima.ma/api/github/install، ثم انشر مجددًا. أو انشر الملفات بـ ‎--upload.
- `الخروج 7: انتهت مهلة الانتظار`: يستمر النشر. تابعه بـ gheima services deployments <service> ‎--json حتى يتوقّف: LIVE يعني أنه مباشر؛ وFAILED أو CANCELLED أو SKIPPED تحمل errorMessage يشرح السبب.

### عبر MCP

مع خادم MCP الخاص بـ Gheima متصلًا (https://gheima.ma/mcp): gheima_services_create مع name وrepoUrl، ثم gheima_services_deploy، ثم gheima_services_deployments حتى يتوقّف ذلك النشر (LIVE، أو FAILED أو CANCELLED أو SKIPPED مع errorMessage)، ثم gheima_services_get للحصول على الرابط. لمجلد بلا مستودع git بعيد، استدعِ gheima_services_create (مع name ودون repoUrl)، ثم gheima_services_create_upload، وشغّل في المجلد الأمر الذي يعيده: يرفع الملفات ويبدأ النشر؛ ثم تابع gheima_services_deployments بالطريقة نفسها.

---

All docs: https://gheima.ma/ar/docs.md
