Multi-Repo إلى Monorepo: كيف قمت بأتمتة 6 إصدارات Go Microservice ثم جعلتها أسرع 15 مرة

قضيت الشهر الماضي أكثر من ساعة في قطع الإصدار عبر ستة مستودعات لخدمات Go الصغيرة. سجل العلامات،...

7 أغسطس 2026 1 دقائق قراءة

قضيت الشهر الماضي أكثر من ساعة في قطع الإصدار عبر ستة مستودعات لخدمات Go الصغيرة. سجل العلامات، انتظر CI. قم بتحديث go.mod الخاص بـ sdk للإشارة إلى السجل الجديد SHA، ثم ادفع وانتظر CI. كرر للأدوات. ثم قم بإجراء واجهة برمجة التطبيقات وcli والعامل بالتوازي - باستثناء أنني نسيت رفع تبعية cli وتعطل البناء في الساعة 11 مساءً.

هذه هي قصة أتمتة سير العمل بالكامل باستخدام Jenkins + Python + GitLab، ثم إدراك أن بنية الريبو المتعددة كانت هي المشكلة الحقيقية، ودمج كل شيء في Go monorepo أسرع 15 مرة في قطع الإصدارات.

يعمل الإعداد الكامل على جهاز الكمبيوتر المحمول الخاص بي. يمكنك شوكة وتجربتها بنفسك.

يحاكي المشروع نظام إنتاج حقيقي يحتوي على ست وحدات Go ذات ترتيب تبعي صارم:

الوحدات الثلاث الأولى متسلسلة - لا يمكن لـ sdk وضع علامة حتى يتم وضع علامة على السجل، ولا يمكن لـ utils وضع علامة حتى يتم وضع علامة sdk. الثلاثة الأخيرة نهائية - يمكن معالجتها بالتوازي بمجرد الانتهاء من السلسلة التسلسلية.

تعيش كل وحدة على ثلاثة فروع طويلة الأمد: التطوير → الإصدار → الرئيسي. الإصدار يعني نقل التعليمات البرمجية عبر الثلاثة جميعها، في جميع عمليات إعادة الشراء الستة، بالترتيب الصحيح.

المصدر: dev.to