كيفية استخدام Dependabot للحفاظ على بيئتك محدثة

غالبًا ما تساعدك إضافة التبعيات إلى مشروع على عدم إعادة اختراع العجلة. ولكن في نفس الوقت يمكن أن يسبب مشاكل في العديد من جوانب المشروع المختلفة:

  • تعيين الإصدار: في بعض الأحيان قد تتطلب التبعيات إصدارات محددة من التبعيات الأخرى وقد يتسبب ذلك في حدوث مشكلات في تطبيقك
  • التجميع: يجب أن تكون حريصًا حتى لا ينتهي بك الأمر بالكثير من الأكواد الإضافية التي ستؤدي إلى زيادة حجم حزمك
  • التحديث: تتحرك JavaScript بسرعة ، وإذا لم تقم بتحديث الحزم بانتظام ، فستلعب Jenga في المستقبل.

هناك أدوات مختلفة لتغطية مهمة تحديث التبعيات ، مثل Dependencies.io و Snyk و Dependabot. منذ أن كنت أستخدم Dependabot لفترة من الوقت ، قررت الكتابة عن تجربتي.

Dependabot هي أداة حصلت عليها GitHub قبل عام وتتحقق من ملفات التبعية من لغات مختلفة (على سبيل المثال لا الحصر Ruby و JavaScript و Python و PHP و Elixir) وتبحث عن إصدارات جديدة من المكتبات التي تستخدمها في مشروعك. هنا هو الإعداد:

لقطة شاشة Dependabot

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

كيفية استخدام Dependabot بشكل فعال

يتضمن Dependabot ، في كل علاقات عامة ، ملاحظات الإصدار ، وسجلات التغيير ، وارتباطات الالتزام وتفاصيل الضعف كلما كان ذلك متاحًا. هذا مفيد لأنه يمكنك إلقاء نظرة على المعلومات وتقرر المتابعة أم لا.

ومع ذلك ، بصفتنا مبرمجين براغماتيين ، نريد ضمان عدم تعطل الأشياء. تفاصيل العلاقات العامة مهمة ولكن الأهم من ذلك ، نريد محاكاة جميع (أو جميع) التسليمات التي يحتوي عليها المشروع.

تكامل CI

تُظهر لقطة الشاشة هذه ما يحدث في كل مرة يتم فيها فتح العلاقات العامة في قاعدة رموز مكتبة المكونات الخاصة بعملي.

  • الاختبارات (Jest / Bundle) : ستختبر مهمة Jest مكونات React بينما تحاكي مهمة Bundle أوامر التجميع التي نقوم بتشغيلها عندما نريد تحديث الحزمة في سجل NPM
  • Linters (Stylesheets / JavaScript) : تتبع ملفات ورقة الأنماط إعدادًا مخصصًا sass-lint ويتبع رمز JS سلسلة من قواعد ESLint. إذا قدم ممثل العلاقات العامة إصدارًا جديدًا من linter بقواعد جديدة ، فسنكون قادرين على التقاط ذلك.
  • Cypress (اختبار لقطة الشاشة / اختبار إمكانية الوصول) : إذا أدخلت حزمة جديدة تغييرات قد تنعكس في شكل المكونات وطابعها ، فإن Cypress ستلتقط الفرق وتلتقطه وتخزنه في S3. نظرًا لأن Cypress يحتاج إلى إصدار مباشر من موقع التوثيق على الويب ، فإننا نغطي أيضًا عملية إنشاء Gatsby.

مع كل هذه الخطوات ، من المستبعد جدًا أن تؤدي الحزمة الخارجية إلى كسر فرعنا الرئيسي. مجد لزميلتي في العمل جرانت لي الذي يعمل أيضًا في هذا المشروع.

نشرت أيضا على مدونتي. إذا أعجبك هذا المحتوى ، فاتبعني على Twitter و GitHub. صورة الغلاف بواسطة Zhang Kenny على Unsplash