WEBioDD Logo
WEBioDD
📁 تطوير البرمجيات ومصادر مفتوحة••⏱️ 4 دقيقة قراءة

البقاء دائم الخضرة: أتمتة الوصول الآمن ونظافة المستودعات

W

شبكة WEBioDD

تغطية وتحرير تقني مؤتمت بالذكاء الاصطناعي من المصادر المرجعية

البقاء دائم الخضرة: أتمتة الوصول الآمن ونظافة المستودعات
صورة تعبيرية
إعلان ممول
إعلانات

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

أبرز النقاط

  • Evergreen هو تطبيق GitHub يقوم بأتمتة نظافة المنظمة من خلال مراجعات وصول المتعاونين الخارجيين واكتشاف المستودعات غير النشطة وأرشفتها.
  • تتم مراجعة المتعاونين الخارجيين لكل مستودع كل ثلاثة أشهر، ويتم إزالة من لا يحتاجون إلى الوصول.
  • يتم الإبلاغ عن المستودعات التي لا يوجد بها نشاط بشري بعد حد معين، ثم تحذيرها، وأرشفتها إذا بقيت دون مساس.
  • يعتمد Evergreen على مبدأ الفشل الآمن، حيث يتم إلغاء الوصول إذا لم يتم الرد على مراجعة الوصول.
  • لا يقوم Evergreen أبدًا بحذف مستودع أو محتوياته، بل يقوم بأرشفتها، وتُسجل جميع تغييرات الوصول في مشكلة تتبع.

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

كان الحل هو Evergreen، وهو تطبيق GitHub مبني بميزات GitHub الأصلية.

كيف يعمل تطبيق Evergreen؟

Evergreen هو تطبيق GitHub يقوم بأتمتة نظافة المنظمة من خلال سير عمل: مراجعات وصول المتعاونين الخارجيين واكتشاف المستودعات غير النشطة وأرشفتها. تتم مراجعة المتعاونين الخارجيين لكل مستودع كل ثلاثة أشهر، ويتم إزالة من لا يحتاجون إلى الوصول. يتم الإبلاغ عن المستودعات التي لا يوجد بها نشاط بشري بعد حد معين، ثم تحذيرها، وأرشفتها إذا بقيت دون مساس.

يعمل Evergreen كخادم ويب هوك صغير بلغة Go يعمل في حاوية. كل جزء متحرك هو ميزة GitHub قياسية: تطبيق GitHub، إجراءات مجدولة، ويب هوكس، مشكلات، خصائص مخصصة، وملفات عادية في مستودع.

يعمل مستودع تحكم مخصص كساعة وذاكرة لـ Evergreen. تقوم أربعة سير عمل مجدولة لـ GitHub Actions بإطلاق أحداث repository_dispatch بوتيرة ربع سنوية، ويستيقظ التطبيق ويقوم بالعمل. في اليوم الأول، يتم مراجعة المستودعات غير النشطة، ووضع علامة عليها وفتح مشكلة تحذير. في اليوم الثامن، يتم أخذ لقطة للمتعاونين الخارجيين وفتح مشكلة قائمة تحقق لكل مستودع. في اليوم السادس عشر، يتم تنظيف المستودعات التي لا تزال غير نشطة بعد فترة السماح، وأرشفتها. وفي اليوم الثالث والعشرين، يتم إلغاء الوصول تلقائيًا لأي مراجعة لم يتم الرد عليها. تفتح المراجعات قبل أسبوعين من تشغيل التنظيف الخاص بها.

يتتبع Evergreen حالة كل مستودع كملف JSON (واحد لكل مستودع) يتم إيداعه في مستودع التحكم تحت المسار state/repos/<repo_id>.json. يتضمن هذا الملف لقطة لمن كان لديه حق الوصول، ومتى فُتحت المراجعة، والموعد النهائي، ومن اتخذ القرار، وماذا حدث. تاريخ الالتزامات (commit history) هو سجل التدقيق.

يتواصل Evergreen من خلال المشكلات داخل كل مستودع. عند بدء مراجعة الوصول، يحصل كل مستودع على مشكلة قائمة تحقق. نموذج التفاعل بسيط: تحديد المربعات لمن سيبقى، ثم إغلاق المشكلة. عندما تُغلق المشكلة، يستمع Evergreen لحدث الويب هوك issues.closed، ويقرأ مربعات الاختيار، ويحتفظ بالمتعاونين المحددين، ويلغي البقية، ثم ينشر تعليق إيصال يسرد بالضبط ما تم الاحتفاظ به وما تم إزالته. إغلاق مشكلة مراجعة الوصول هو إجراء مميز، لذلك يحميه Evergreen.

يحل Evergreen مشكلة تحديد الأشخاص المناسبين للإخطار من خلال سلسلة احتياطية: إذا حدد المستودع خاصية مخصصة evergreen_repo_owner (مستخدم أو فريق)، يتم استخدامها. وإلا، يتم البحث في مؤلفي المشكلات والالتزامات الأخيرة ونسخ من هم في فريق مراجعة الوصول، أي موظفو GitHub الذين يعملون بالفعل في ذلك المستودع.

ما هي مبادئ التصميم وتجربة المستخدم؟

شكل مبدآن تصميميان كل شيء في Evergreen: الفشل الآمن (Fail secure) وعدم تدمير أي شيء أبدًا (Never destroy anything). يعني الفشل الآمن أنه إذا لم يستجب أحد لمراجعة الوصول، يتم إلغاء الوصول. أما عدم تدمير أي شيء أبدًا فيعني أن Evergreen لن يحذف مستودعًا أو محتوياته أبدًا. المستودعات المؤرشفة قابلة للاسترداد، ويتم كتابة كل تغيير في الوصول في مشكلة تتبع المستودع.

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

كما يرسل تذكيرًا قبل الموعد النهائي، ويتيح خيار الانسحاب لمالكي المنظمة (موظفي GitHub) عن طريق تعيين خاصية مخصصة (evergreen_exempt_from_access_review أو evergreen_exempt_from_archive).

تم طرح Evergreen بعناية، بدءًا بوضع DRY_RUN الذي يسجل كل عملية كتابة دون لمس أي متعاون أو مستودع. تم التواصل بشكل مكثف قبل التفعيل، ووجدنا أنه عند إخبار مجموعة كبيرة بالشيء نفسه للمرة السابعة، غالبًا ما يكون الكثيرون يسمعونه للمرة الأولى. وتمت مراقبة كل شيء باستخدام Splunk. كما تم احترام حدود سرعة المنصة، حيث يعالج Evergreen المستودعات على دفعات، ويفصل بين كل مكالمة لإنشاء المحتوى ببضع ثوانٍ، وينام بين الدفعات لتجنب تجاوز حدود المعدل الثانوية لـ GitHub، وهي 80 طلبًا في الدقيقة و500 طلب في الساعة لإنشاء المحتوى.

جرّب الأداة: منسق ومتحقق JSON

🤖

إفصاح الشفافية ومصدر الخبر

كُتب هذا المقال بالذكاء الاصطناعي اعتماداً على المصدر المذكور أدناه، وفُحصت اقتباساته والأقوال المنسوبة فيه آلياً مقابل نص المصدر. لم يراجعه محرر بشري، فارجع إلى المصدر عند الشك.

زيارة المصدر الأصلي المرجعي
إعلان ممول
إعلانات

📰 مقالات وتقارير ذات صلة