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

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

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

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

Shell
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. تسجيل الدخول: الخطوة الوحيدة للشخص#

Shell
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. 1

    سلّم الرابط

    قل للشخص حرفيًا: «افتح <verificationUrl>، وسجّل الدخول أو أنشئ حسابًا، ثم وافق على الرمز <userCode>.» استعمل القيم التي طبعها login ‎--no-wait.

  2. 2

    انتظر

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

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

3. النشر#

Shell
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 بالطريقة نفسها.