النشر التلقائي باستخدام Git Push: تجربة السحابة على الخادم الخاص بك
كيف يمكنك إعداد تجربة "git Push → Live" التي اعتدنا عليها مع خدمات النشر السحابية الحديثة على الخادم الخاص بك؟ خطاف الويب، CI/CD، النشر الذري، الدليل الكامل.
“git Push Origin main” وبعد ثوانٍ قليلة يصبح موقعك مباشرًا، وهي التجربة التي جعلتها المنصات السحابية الحديثة معيارًا. أصبحت هذه الراحة الآن توقعاتنا. ومع ذلك، فإن إعداد نفس التجربة على خادمنا غالبًا ما يكون أكثر تعقيدًا مما نعتقد: أسرار خطاف الويب، وبناء المتسابقين، وإدارة القطع الأثرية، والمبادلة الذرية…
في هذه المقالة، سنشرح ما يكمن وراء آلية النشر التلقائي باستخدام git Push وكيف يمكنك إعداد هذا النظام على VPS الخاص بك.
كيف يعمل “git Push = Deploy”؟
هناك ثلاثة مكونات أساسية:
- 01webhookيرسل مستودع Git HTTP POST في كل دفعة. أنه يحتوي على معلومات حول الفرع الذي يرتكب ومن يقوم به.
- 02المتلقينقطة النهاية على الخادم الخاص بك التي تستمع إلى خطاف الويب. فهو يتحقق من توقيع HMAC-SHA256 للطلب الوارد ويتحقق من أنه دفعة مشروعة.
- 03خط أنابيببعد التحقق من التوقيع، يقوم بسحب الكود، وإنشائه، واستبدال الخدمة الحالية بقطعة أثرية جديدة (المبادلة الذرية)، وإجراء فحص صحي، وإعلام النتيجة.
ليس من الصعب تقنيًا ترميز كل من هذه المكونات الثلاثة يدويًا، ولكن الأمر يستغرق وقتًا طويلاً لجعلها على مستوى الإنتاج: التراجع، وحماية النشر المتزامن، وإنشاء ذاكرة التخزين المؤقت، وتدفق السجل، والإدارة السرية…
إعداد خطاف الويب، يدويًا
مثال على جهاز استقبال خطاف الويب (Node.js + Express):
ص0
و ص0:
ص1
- حالة السباق: إذا جاءت دفعتان واحدة تلو الأخرى، فسوف يتعارض خطا الأنابيب.
- لا يوجد تراجع: إذا فشل النشر، فسيظل التطبيق غير صالح للعمل.
- الإدارة السرية ضعيفة: هل يجب حذف ملف P0 أو حمايته في كل مرة يتم نشره؟
- لا توجد ذاكرة تخزين مؤقت للإنشاء: يستغرق P1 2-3 دقائق لكل عملية نشر.
- لا يوجد تدفق سجل: إذا فشلت عملية النشر، فسيتعين عليك إلقاء نظرة على الخادم عبر SSH.
حل على مستوى الإنتاج: نشر git Push باستخدام لوحة VDS
توفر لوحة VDS تكامل خطاف الويب المدمج. التثبيت هو مهمة مدتها دقيقة واحدة:
- 01ربط حسابك على جيثبيتم سحب قائمة المستودعات باستخدام GitHub OAuth في إعدادات اللوحة.
- 02إنشاء المشروعحدد المستودع. تقوم اللوحة بتثبيت خطاف الويب تلقائيًا، ولا تحتاج إلى إنشاء سر في إعدادات GitHub.
- 03ابدأ بالدفعفي كل دفعة لاحقة على git، تلتقط اللوحة خطاف الويب، وتتحقق من التوقيع، وتبدأ خط الأنابيب.
بمجرد تعيين P0، فإن اللوحة:
- استنساخ الكود الضحل (سريع)
- الكشف عن إطار العمل (package.json/pom.xml/go.mod/Dockerfile)
- التحقق من ذاكرة التخزين المؤقت للتبعية (تخطي إذا كانت ذاكرة التخزين المؤقت npm/maven/go هي نفسها)
- البناء (بالتوازي: الصورة + ترحيل قاعدة البيانات + التحكم في SSL)
- التبديل الذري إلى إنتاج القطع الأثرية (يتم الاحتفاظ بالإصدار القديم لمدة 5 دقائق، ويكون التراجع سريعًا)
- فحص الصحة (مسبار الاستعداد لمدة 30 ثانية)
- النجاح → إعادة تحميل nginx. فشل → التراجع التلقائي.
تتدفق العملية مباشرة في واجهة اللوحة: سجل البناء، واختبار المخرجات، وحالة النشر، كل ذلك في الوقت الفعلي.
سيناريوهات متقدمة
النشر على أساس الفرع
يمكن للوحة نشر الإنتاج لفرع P0 والتدريج لـ P1. يحصل كل فرع على نطاقات فرعية منفصلة: P2 وP3. يتم إنشاء DNS + SSL تلقائيًا.
الموافقة اليدوية (بوابة الموافقة)
يمكنك تنشيط وضع “الموافقة اليدوية” لبيئات الإنتاج ذات الأهمية الأمنية. عندما تأتي الدفعة، يتم بناء اللوحة ولكنها تعلق عملية النشر؛ لا يتم نشره بدون مستخدم يوافق عليه.
###التراجع
انقر فوق “الرجوع إلى الإصدار السابق” على شاشة النشر. تقوم اللوحة بتخزين العناصر الخاصة بآخر 10 عمليات نشر ناجحة؛ فهو يقوم بإجراء مقايضات فورية لكل ما تريد. كما أنه يتكامل مع أدوات مثل Flyway/Liquibase لعكس عمليات ترحيل قاعدة البيانات.
سر متعدد البيئات
متغيرات بيئية منفصلة للاختبار والتدريج والإنتاج. يتم تخزين الأسرار الخاصة بكل بيئة في القبو السري ويتم إدخالها في وقت التشغيل.
لا يكتب متغيرات env للوحة إلى git، بل يسحبها من لوحة قاعدة بيانات اللوحة، وليس من الريبو. يتم الحفاظ على أسرار الإنتاج حتى إذا ارتكب المطورون ملفات P0 عن طريق الخطأ.
بناء الحجج
تتم إدارة تمرير وسيطة البناء إلى Dockerfile، واستدعاء مهمة مخصصة إلى Gradle، وتشغيل البرنامج النصي للنشر المسبق، من واجهة اللوحة.
خاتمة
تعد تجربة “git Push = Publish” أمرًا لا غنى عنه للمطور الحديث. من الممكن إعداد نفس التجربة على الخادم الخاص بك دون دفع رسوم سحابية مقابل خدمات النشر السحابية الحديثة، إنها مجرد مسألة مقدار الوقت الذي يمكنك توفيره.
تثبيته بنفسك يستغرق 2-3 أسابيع؛ باستخدام لوحة VDS، يكتمل تكامل webhook تلقائيًا عند إنشاء المشروع الأول. للحصول على التفاصيل، يمكنك مراجعة صفحة الميزات أو طلب عرض توضيحي.
قد ترغب أيضا في هذه
تشغيل مشاريع Node.js في الإنتاج باستخدام PM2: دليل اللوحة
لوضع مشاريع Node.js وExpress الخاصة بك في مرحلة الإنتاج على VPS، قم بتعيين وضع مجموعة PM2 وإعادة التشغيل التلقائي وحد الذاكرة وإعدادات تدوير السجل على اللوحة.
ابدأ القراءةنشر مشروع Spring Boot على VPS: دليل خطوة بخطوة
كيفية نشر تطبيق Spring Boot الخاص بك على VPS الخاص بك؟ دليل شامل يقارن بين 5 طرق مختلفة لتحميل JAR، والبناء المستند إلى Git، وsystemd، وDocker، وKubernetes.
ابدأ القراءةهل ترغب في تجربتها على الخادم الخاص بك؟
اتصل بنا عبر نموذج الاتصال ودعنا نجهز ترخيصًا + خطة تثبيت مناسبة لسيناريو الاستخدام الخاص بك.