
مستودع لإنشاء وتحديث سلسلة من صور Docker تلقائيًا عبر GitHub Actions.
RAUDI (صور Docker يتم تحديثها بانتظام وتلقائياً) يقوم بإنشاء وتحديث سلسلة من صور Docker تلقائياً عبر إجراءات GitHub للأدوات التي لا يوفرها المطورون.
RAUDI هو ما سينقذك من إنشاء وإدارة الكثير من صور Docker يدوياً. في كل مرة يتم تحديث برنامج ما، تحتاج إلى تحديث صورة Docker إذا كنت تريد استخدام أحدث الميزات، وقد تصبح التبعيات غير صالحة للعمل.
هذا أمر فوضوي ويستغرق وقتاً طويلاً.
لا تقلق بعد الآن، لقد قمنا بتغطيتك.
يمكنك إما عمل نسخة (fork) من هذا المستودع واستخدام سير عمل GitHub بنفسك، أو استخدامه محلياً (وإدارة تنفيذه بالطريقة التي تريدها).
إذا كنت ترغب في عمل نسخة (fork) من هذا المستودع، فيجب عليك أيضاً إعداد بعض الأسرار (Secrets) لتتمكن من دفع صورك إلى حساب Docker Hub الشخصي الخاص بك. يجب تعيين سرين (Secrets) من GitHub:
بعد تعيين هذه الأسرار، يجب عليك تعديل متغير organization المحدد في ملف tools/main.py لأنه مهيأ للدفع إلى Docker Hub لـ SecSI.
هذا كل شيء يا رفاق: انتقل إلى Action، وقم بتمكينه لمستودعك المنسوخ، وانتظر حتى منتصف الليل، وسيقوم سير العمل بالعمل الشاق!
يمكن أيضاً تنفيذ هذا المستودع محلياً. المتطلبات الواجب توفرها هي التالية:
إليك وثائق العمل مع BuildX: https://docs.docker.com/buildx/working-with-buildx/
مرحلة الإعداد بسيطة جداً، كل ما تحتاجه هو الأوامر التالية:
git clone https://github.com/cybersecsi/RAUDI
cd RAUDI
pip install -r requirements.txt
أنت جاهز للانطلاق!
لتشغيل الاختبار، تحتاج إلى تثبيت pytest باستخدام الأمر pip install pytest (ليس موجوداً في requirements.txt لأنه مطلوب فقط لأغراض الاختبار) ثم يمكنك تشغيل:
pytest -s
أو
python -m pytest -s
لتشغيل الاختبارات.
يمكن لـ RAUDI بناء ودفع جميع الأدوات الموجودة في دليل tools. هناك خيارات مختلفة يمكن استخدامها عند تشغيله. قبل استخدامه محلياً، يجب عليك إنشاء ملف .env (يمكنك فقط نسخ ملف .env.sample) وإضافة رمز الوصول الشخصي GitHub الخاص بك لتجنب تحديد المعدل (Rate Limiting). بالنسبة للمستخدمين غير المصادقين، يسمح GitHub بما يصل إلى 60 طلباً في الساعة، بينما يُسمح للمستخدمين المصادقين بما يصل إلى 15,000 طلب في الساعة. لهذا السبب ننصحك بإضافته! يمكنك أيضاً إنشاء رمز وصول شخصي دون أي نطاق (scope) لأن كل ما نقوم به هو قراءة بعض المعلومات لكل مستودع GitHub.
في هذا الوضع، يحاول RAUDI بناء جميع الأدوات إذا لزم الأمر. الأمر لتشغيله ببساطة هو:
python3 ./raudi.py --all
في هذا الوضع، يحاول RAUDI بناء الأداة المحددة فقط. الأمر في هذه الحالة هو:
python3 ./raudi.py --single <tool_name>
tool_name يجب أن يكون اسم الدليل داخل مجلد tools.
نظراً لأنه تمت إضافة المعامل tests إلى هيكل تكوين الأداة، فقد يكون من المفيد اختبار ما إذا كانت الأوامر المدرجة تُرجع كود حالة 0. الأمر لاختبار أداة معينة هو:
python3 ./raudi.py --test <tool_name>
tool_name يجب أن يكون اسم الدليل داخل مجلد tools.
إذا كنت تريد معرفة الأدوات المتاحة، يمكنك تشغيل هذا الأمر:
python3 ./raudi.py --list
إذا كنت تريد إضافة مجلد أداة جديد بسرعة بدءاً من أحد القوالب المتاحة، يمكنك تشغيل هذا الأمر:
python3 ./raudi.py --bootstrap <new_tool_name>
| الخيار | الوصف | القيمة الافتراضية |
|---|---|---|
| --push | الدفع تلقائياً إلى Docker Hub | False |
| --remote | التحقق من Docker Hub بدلاً من Docker المحلي قبل البناء | False |
| --force | البناء أو عدمه إذا تم العثور على صورة بنفس اسم العلامة | False |
هذه هي القائمة الحالية للأدوات التي تمت إضافتها. كل هذه الأدوات لا تحتوي على صورة Docker رسمية مقدمة من المطور: