I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

اجعل Laravel يقوم بـ Git Pull تلقائيًا بعد كل Push في GitHub باستخدام Webhook – بدون تدخل يدوي! 🚀

هل تعبت من الدخول إلى السيرفر كل مرة لتحديث الكود بعد git push؟ 🤦‍♂️ في هذا المقال، ستتعلم كيف تجعل Laravel يقوم بـ git pull تلقائيًا عند كل تحديث في GitHub، باستخدام Webhooks! سنشرح لك الخطوات بالتفصيل، بدءًا من إعداد Webhook في GitHub، إلى تنفيذ س...

اجعل Laravel يقوم بـ Git Pull تلقائيًا بعد كل Push في GitHub باستخدام Webhook – بدون تدخل يدوي! 🚀
Reading Count: 643

أوتوماتيك Git Pull على السيرفر بعد كل Push في GitHub باستخدام Webhook

🚀 المشكلة؟

عندك مشروع Laravel على سيرفر، وكل مرة بتعمل git push لازم تدخل بـ SSH وتعمل git pull يدويًا؟ طب ما تيجي نخلي الموضوع أوتوماتيك؟ 🤩

🔥 الحل؟

هنستخدم GitHub Webhooks عشان كل ما تعمل git push، الـ GitHub يبعت إشارة للسيرفر، والسيرفر يقوم أوتوماتيك يعمل git pull.

📌 الخطوات بالتفصيل:

1️⃣ تجهيز السكريبت اللي هيعمل Git Pull

افتح routes/web.php في Laravel، وضيف الكود ده:

use Illuminate\Support\Facades\Route;
use Symfony\Component\Process\Process;

Route::post('/github-webhook', function () {
    \Log::info('Webhook received from GitHub');
    $process = new Process(['git', 'pull']);
    $process->run();

    if (!$process->isSuccessful()) {
        \Log::error('Git Pull Error: ' . $process->getErrorOutput());
        return response()->json(['message' => 'Git pull failed!'], 500);
    }

    return response()->json(['message' => 'Git pull executed successfully!']);
});
    

2️⃣ إضافة الـ Webhook في GitHub

افتح GitHub Repository.

ادخل على Settings → Webhooks.

اضغط Add webhook.

في "Payload URL"، ضع رابط السيرفر متبوعًا بـ /github-webhook.

اختر application/json كـ Content type.

حدد Just the push event.

اضغط Add webhook وخلاص! 🎉

3️⃣ تأمين الـ Webhook

نضيف Secret Key لحماية الـ Webhook. افتح .env وأضف:

GITHUB_SECRET=your-secret-key

ثم عدّل الكود في web.php ليشمل التحقق:

Route::post('/github-webhook', function (\Illuminate\Http\Request $request) {
    $secret = env('GITHUB_SECRET');
    $signature = 'sha256=' . hash_hmac('sha256', $request->getContent(), $secret);

    if (!hash_equals($signature, $request->header('X-Hub-Signature-256'))) {
        \Log::warning('Webhook Signature Mismatch!');
        return response()->json(['message' => 'Invalid signature'], 403);
    }

    \Log::info('Webhook received and verified.');
    $process = new Process(['git', 'pull']);
    $process->run();

    if (!$process->isSuccessful()) {
        \Log::error('Git Pull Error: ' . $process->getErrorOutput());
        return response()->json(['message' => 'Git pull failed!'], 500);
    }

    return response()->json(['message' => 'Git pull executed successfully!']);
});
    

4️⃣ اختبار الـ Webhook

للتأكد من أنه يعمل، جرب:

قم بـ git push لكودك في GitHub.

في السيرفر، راقب اللوجات:

tail -f storage/logs/laravel.log

🎉 النتيجة؟

دلوقتي كل مرة تعمل git push، السيرفر هيعمل git pull أوتوماتيك وانت ملكش دعوة! 😎


Share

Related posts

May 13, 2026 • 2 min read
Reading Count: 5
إزاي تخلي مشروعك بـ Inertia صديق لمحركات البحث عن طريق الـ SSR

إزاي تخلي مشروعك بـ Inertia صديق لمحركات البحث عن طريق الـ SSR أكيد مريت بالموقف ده: بدأت مشروعك بـ...

May 12, 2026 • 2 min read
Reading Count: 7
إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟

إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟ لو أنت مبرم...

May 12, 2026 • 2 min read
Reading Count: 10
دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API

دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API كثير مننا كمبر...