المواقع الإلكترونية
نشر موقع من Git
Git Deploy connects a repository to a site so that every push to your chosen branch clones the code, runs your build, and publishes the result. This guide covers the initial connection, the two…
Git Deploy يربط مستودع بموقع بحيث يؤدي كل دفع إلى الفرع المختار إلى استنساخ الكود وتشغيل البناء ونشر النتيجة. يغطي هذا الدليل الاتصال الأولي والخطوتين على جانب المستودع اللتين تنهيان الإعداد وقراءة سجل النشر والكشف عن buildpack الذي يحدد كيفية بناء تطبيق Node.js.
حيث يوجد Git Deploy
افتح Websites وانقر على الموقع وافتح قائمة Advanced في شريط تبويبات الموقع واختر Git Deploy. توجد صفحتان ذات صلة في نفس القائمة:
- Deploys وهو السجل الكامل للنشر لهذا الموقع.
- Buildpack وهي استراتيجية البناء المكتشفة على مواقع Node.js.
تصف صفحة Git Deploy نفسها بوضوح: قم بربط مستودع وكل دفع إلى الفرع المكون سيؤدي إلى تشغيل البناء والنشر.

ربط مستودع
- اختر Provider: GitHub أو GitLab أو Bitbucket.
- أدخل Repository URL. صيغة SSH هي ما تريده على سبيل المثال
git@github.com:user/repo.git. - عين Branch للنشر منه. يبدأ الحقل عند
main. - قم بتعيين Build command بشكل اختياري على سبيل المثال
npm run build. - قم بتعيين Output directory بشكل اختياري على سبيل المثال
distأوpublicأو.لمستودع تم بناؤه بالفعل. - انقر على Connect repo.
اترك أمر البناء ومجلد الإخراج فارغين إذا كان المستودع الخاص بك جاهزاً للنشر كما هو بالفعل وهي الحالة الشائعة لموقع PHP عادي أو موقع ثابت.
البرامج النصية المتقدمة
توسيع Advanced يكشف عن حقلين إضافيين:
- Pre-deploy script الذي يعمل قبل البناء.
- Post-deploy script الذي يعمل بعد النشر.
استخدم خطاف ما بعد النشر للأشياء التي يجب أن تحدث بمجرد وضع الكود الجديد في مكانه: مسح ذاكرة التطبيق أو تشغيل ترحيل قاعدة البيانات أو إعادة تشغيل عامل.
النشر التلقائي عند الدفع
يتحكم المفتاح في أسفل البطاقة في ما إذا كانت الدفعات تنشر على الإطلاق. عندما يكون قيد التشغيل يؤدي كل دفع إلى الفرع المكون إلى تشغيل النشر. عندما يكون مطفأ لا تعمل عمليات النشر إلا عندما تقوم بتشغيلها يدوياً باستخدام Deploy now.
قم بإيقاف النشر التلقائي أثناء تجميد الكود أو حادثة بدلاً من قطع الاتصال بالمستودع. قطع الاتصال يتجاهل مفتاح النشر وسر webhook لذا عليك إعادة كلا الخطوتين على جانب المستودع بعد ذلك.
إنهاء الإعداد في المستودع الخاص بك
ربط المستودع في KPanel هو فقط الخطوة الأولى من بين ثلاث خطوات. حتى يتم تشغيل النشر تعرض الصفحة شعار يقرأ Complete setup: 2 steps remaining مع كل ما تحتاجه.
الخطوة 2: إضافة مفتاح النشر
يحتاج Kapsule إلى وصول القراءة لاستنساخ المستودع الخاص بك. يظهر الشعار مفتاح عام بزر Copy key.
الصقه في مفاتيح النشر بالمستودع الخاص بك. بالنسبة إلى GitHub يقدم الشعار اختصار Add to GitHub مباشر إلى صفحة الإعدادات الصحيحة. وصول القراءة كافٍ لا تمنح حق الكتابة.
الخطوة 3: إضافة Webhook
webhook هو ما يخبر Kapsule بحدوث دفع. يعطيك الشعار ثلاث قيم:
| الحقل | القيمة |
|---|---|
| Payload URL | عنوان URL ينتهي بـ /api/git-deploy/webhook/ بالإضافة إلى معرف هذا الموقع |
| Secret | سر التوقيع الذي تم إنشاؤه مختفي حتى تنقر على أيقونة العين |
| Content Type | application/json |
انسخ كل واحد إلى إعدادات webhook في المستودع الخاص بك. بالنسبة إلى GitHub هناك اختصار Add webhook to GitHub. اضبط نوع المحتوى على JSON وليس الإفتراضي المشفر بنموذج أو لن يتم تحليل payload.
تعامل مع سر webhook مثل كلمة المرور. أي شخص لديه السر بالإضافة إلى عنوان URL للحمولة يمكنه تشغيل نشر الموقع الخاص بك. تظهر كلا القيمتين فقط للأشخاص الذين يمكنهم بالفعل إدارة الموقع والسر يبقى مخفياً خلف أيقونة العين حتى تطلبه.
النشر يدوياً
انقر على Deploy now على صفحة Git Deploy لبناء ونشر رأس الفرع المكون الحالي دون دفع التزام. يعمل هذا بغض النظر عما إذا كان النشر التلقائي قيد التشغيل وهذا هو ما يجعله الأداة الصحيحة أثناء التجميد: يتم تجاهل الدفعات لكن يمكنك بنشر الإصلاح.
قراءة سجل النشر
افتح Advanced ثم Deploys. تحمل الصفحة عنوان Deploy history وتسرد كل نشر يتم تشغيله بواسطة webhook أو يدوياً الأحدث أولاً.
تحمل كل صف:
- أيقونة الحالة و SHA قصيرة للالتزام مع الفرع على شكل حبة.
- رسالة الالتزام أو Manual deploy إن لم تكن هناك رسالة التزام لعرضها.
- المؤلف ومنذ كم من الوقت كان يعمل ومدة استغراقه وما الذي أثاره.
- حبة الحالة.
الحالات هي pending و building و deploying و success و failed. بينما يكون أي شيء قيد التنفيذ تقوم الصفحة بتحديث نفسها كل خمس ثوان وتظهر ملاحظة Refreshing automatically تحت الجدول حتى تتمكن من تركها مفتوحة ومشاهدة النشر.
عند فشل النشر
يحصل صف فاشل على زر Error على اليمين. انقر فوقه لتوسيع مخرجات الخطأ المتقطة بشكل مضمن دون مغادرة الصفحة. هذا الإخراج هو نص الخطأ الخاص بالبناء نفسه لذا فإنه عادة ما يسمي الملف أو الأمر الذي فشل.
اعمل من خلاله بهذا الترتيب: اقرأ الخطأ وأعد إنتاج أمر البناء نفسه محلياً وأصلح وادفع. إذا كان البناء يعمل محلياً وليس هنا فإن الفرق هو تقريباً دائماً واحد بيئي وهو تبعية مفقودة يتم تثبيتها عالمياً على جهازك أو ملف موجود في مجلد العمل الخاص بك لكن لم يتم الالتزام به.
كشف Buildpack
على مواقع Node.js تعرض صفحة Buildpack في قائمة Advanced كيف قررت Kapsule بناء التطبيق الخاص بك. يعمل الكشف على الملفات في جذر المستودع الخاص بك والتطابق الأول يفوز:
| تم الكشف عنه | المشغل |
|---|---|
| Custom buildpack | kapsule.config.yaml أو kapsule.config.yml في الجذر |
| Dockerfile buildpack | Dockerfile في الجذر |
| Node.js | package.json مع سكريبت start أو build أو dev |
| Python | requirements.txt أو pyproject.toml |
| PHP | composer.json |
| Static | index.html في الجذر |
إذا لم يطابق شيء فإن الصفحة تقول ذلك وتسرد المشغلات المدعومة. أضف Dockerfile أو kapsule.config.yaml للتحكم في البناء بشكل صريح.
تشغيل بناء
انقر على Run build لوضعه في الطابور. تفحص الصفحة كل ثلاث ثوان أثناء عمل تشغيل وجدول Recent builds يعرض آخر التشغيل مع وقت البدء والنوع والحالة والمدة والصورة الناتجة المرجعية. انقر على صف لمشاهدة سجل الذيل الخاص به.
لا يمكن أن يكون سوى بناء واحد قيد الطيران في الوقت نفسه. تشغيل ثانٍ أثناء وضعه في الطابور أو التشغيل يتم رفضه مع A build is already in progress وهذا مقصود: بناء اثنين يكتبان نفس المخرجات في نفس الوقت هو كيف تحصل على موقع تم نشره جزئياً.
قطع الاتصال
انقر على Disconnect وأكد. التأكيد واضح حول نطاق الانفجار: تم إزالة تكوين نشر Git ومفتاح النشر وملفات الموقع الخاص بك لم تتأثر. يستمر الموقع في خدمة أي شيء تم نشره في الآخر.
قم بتنظيف ما بعد ذلك بحذف مفتاح النشر و webhook في إعدادات المستودع الخاص بك. ستتوقف عن العمل ببساطة لكن ترك إدخالات ميتة حولك يجعل التدقيق التالي أصعب.
استكشاف الأخطاء
الدفعات لا تشغل أي شيء. تحقق من مفتاح النشر التلقائي أولاً ثم webhook في المستودع الخاص بك. يعرض معظم مزودي الخدمات عمليات التسليم الأخيرة ورموز الاستجابة الخاصة بهم الذي يخبرك على الفور ما إذا كان الطلب غادر المستودع الخاص بك على الإطلاق.
الاستنساخ يفشل. مفتاح النشر مفقود أو تم لصقه بفاصل سطر أو تم إضافته إلى المستودع الخاطئ. انسخه مجدداً باستخدام زر Copy key بدلاً من تحديد النص بيدك.
النشر ينجح لكن الموقع لا يتغير. مجلد الإخراج غير صحيح على الأرجح. إذا كان البناء الخاص بك يكتب إلى dist ومجلد الإخراج فارغ فإن الملفات المدمجة لا تصل أبداً إلى الجذر المخدوم.
كل شيء يقول قيد الانتظار ولا يتحرك أبداً. تم وضع النشر في الطابور لكن لم يتم التقاطه أبداً. قم بتشغيل Deploy now يدوياً وتحقق من صفحة Deploys بحثاً عن صف خطأ.
إلى أين تذهب بعد ذلك
- Preview Deploys For Pull Requests يضيف عنوان URL لكل PR في الأعلى من هذا الإعداد.
- Storing App Secrets For a Site للبيانات المعتمدة التي يحتاجها البناء والوقت التشغيلي.
- Site Activity Log يسجل تغييرات الإعدادات التي تم إجراؤها هنا.