بيئة التطوير القائمة على Docker مخصصة للمساهمين الجدد في تحذيرات Jenkins والمكونات الإضافية للتغطية لتقليل وقت الطبعة الأولية. يتكون من الأجزاء التالية:
قدمت هذه البيئة التنموية في لقاء Jenkins عبر الإنترنت المسجل في يناير 2022.
تم اختبار بيئة التطوير على MacOS و Ubuntu Linux (في جهاز افتراضي يعمل على MacOS) و Windows. طلبات السحب دائما موضع ترحيب.
أحدث إصدار من الأدوات التالية:
بالإضافة إلى ذلك ، هناك حاجة إلى أحدث الإصدارات من الأدوات التالية:
في حالة حدوث أخطاء ، لاحظ تلميحات استكشاف الأخطاء وإصلاحها أدناه. بالنسبة لمستخدمي Windows: استخدم Git Bash لتنفيذ البرامج النصية Shell.
./bin/clone-repos.sh المساعد باستخدام البرنامج ./bin/clone-repos-https.sh . يجب أن تنتظر حتى ينجح البناء قبل فتح Intellij ، وإلا فلن يجد Intellij جميع الفصول التي تم إنشاؤها. يحتاج مستخدمو Maven لأول مرة إلى الانتظار بضع دقائق حتى يتم تنزيل جميع التبعيات من Maven Central.warnings-ng-plugin-devenv./bin/jenkins.sh . يقوم هذا الأمر بإنشاء صورة Jenkins Docker ، ويقوم بتنزيل جميع الإضافات المسجلة وتهيئة مساحة عمل Jenkins مع بعض الوظائف. هذا يتطلب بعض الدقائق كذلك (انظر الخطوة 9). إذا نجحت جميع التنزيلات ، لكن التثبيت فشل بسبب الأخطاء ، ثم إصلاحها وتنفيذ mvn -V -U -e install –DskipTests لإعادة إعادة التثبيت فقط.
إذا كان الخطأ "سطر الأوامر طويلًا جدًا." يحدث ، تنفيذ الخطوات التالية:
@argfile (Java9+)إذا فشلت الاختبارات بسبب مهلة اختبار Jenkins ، قم بتنفيذ الخطوات التالية:
-Djenkins.test.timeout=1000 . هذا يزيد من حد المهلة إلى 1000 ثانية. يمكنك استخدام برنامج نصي shell بسيط ( ./bin/clone-repos.sh ) لاستنساخ وبناء الوحدات النمطية في خطوة واحدة. يقوم البرنامج النصي بالتحقق من الوحدات النمطية التالية باستخدام بروتوكول GIT SSH. هذا يتطلب أن تكون قد قمت بتسجيل مفتاحك العام في GitHub. إذا لم يكن لديك مفاتيح في GitHub ، فيمكنك بدلاً من ذلك استخدام البرنامج النصي ./bin/clone-repos-https.sh الذي يستخدم بروتوكول HTTPS.
عندما تخطط لتوفير طلب سحب لإحدى الإضافات التي تحتاجها لإنشاء شوكة من المستودع وإجراء جميع التغييرات في هذا الشوكة. لقد قمت بإنشاء وثائق تعاون github في مشروع أسلوب الترميز الخاص بي.
Intellij (Ultimate) هي بيئة التطوير الرئيسية المدعومة للمكون من تحذيرات. يتم تخزين مشروع محدد مسبقًا في المجلد .idea الذي يشير إلى جميع وحدات البرنامج المساعد تحذير. يحتوي هذا المشروع على إعدادات مسبقة لأسلوب الترميز الخاص بي وبعض التكوينات المفيدة الأخرى.
يجب أن يكون من الممكن استخدام IDEs الأخرى (Eclipse و NetBeans و Visual Studio Code) أيضًا.
استخدم تكوينات تشغيل intellij المقدمة All in [module-name] لتشغيل الوحدة واختبارات التكامل للوحدة المقابلة. تم تكوين هذه التكوينات بالفعل لتسجيل التغطية الفرعية لحزم الوحدة النمطية المقابلة (استخدم Run with Coverage ).
قبل أن تتمكن من تصحيح التغييرات الخاصة بك ، تحتاج أولاً إلى معرفة مكان تشغيل الكود الخاص بك: على وحدة التحكم أو على الوكيل؟ إذا لم تكن متأكدًا ، فقم بتشغيل كل من Defuggers عن بُعد ، وقم بتعيين بعض نقاط التوقف وانتظر إيقاف تصحيح الأخطاء المقابل.
يبدأ تكوين Docker Compose وحدة تحكم Jenkins تلقائيًا في وضع "Debug" ، أي أنه يستمع إلى طلبات التصحيح عن بُعد. إذا تم تشغيل الكود الخاص بك في وحدة التحكم ، فأنت بحاجة إلى إرفاق مصحح أخطاء عن بُعد في localhost:8000 (تم تعيينه إلى نفس المنفذ في حاوية Docker). استخدم تكوين DEBUG Jenkins Controller (Remote Debugger) لتوصيل مصحح أخطاء في Intellij.
يبدأ تكوين Docker Compose أيضًا وكيل Jenkins تلقائيًا في وضع "Debug" ، أي أنه يستمع إلى طلبات التصحيح عن بُعد. قم بإرفاق مصحح أخطاء عن بُعد في localhost:8001 (تم تعيينه بنفس المنفذ في حاوية Docker) لتصحيح رمز التصحيح الذي يتم تشغيله على الوكيل. استخدم تكوين DEBUG CONFICER Jenkins Agent (Remote Debugger) لتوصيل مصحح أخطاء في Intellij.
يمكن بدء اختبارات واجهة المستخدم باستخدام UI Tests [module] (Firefox) أو UI Tests [module] (Chrome) . لاحظ أن كلا القاذفين يتطلبان تثبيت برامج تشغيل السيلينيوم المقابلة. إذا لم يتم تثبيت برامج التشغيل هذه في /opt/bin على جهازك المحلي ، فأنت بحاجة إلى تكييف تكوينات المشغل لمطابقة الإعداد الخاص بك.
تتطلب جميع اختبارات واجهة المستخدم التشغيل ضمن موضوع معين ضمن اختبار (IE ، Jenkins قيد الاختبار ، JUT) ، راجع مشروع Harness Test Test لمزيد من التفاصيل.
تحتوي بيئة التطوير هذه على تثبيت Jenkins مخصص حيث يمكنك نشر المكونات الإضافية المعدلة عليها ، حتى تتمكن من رؤية التغييرات الخاصة بك مباشرة في بعض الوظائف المسبقة التي تستخدم هذه المكونات الإضافية.
ابدأ وحدة تحكم Jenkins المقدمة في هذا المشروع (تحتاج إلى تثبيت Docker و Docker-Corm). افتح محطة وقم بتشغيل ./jenkins.sh في مجلد المستوى العلوي. هذا الأمر عبارة عن غلاف docker-compose up : يستخدم إعدادات المستخدم والمجموعة المناسبة بحيث يتم تعيين أذونات حجم Docker لمجلد Jenkins Home بشكل صحيح. ينشئ هذا الأمر حاوية Docker لوحدة التحكم Jenkins وواحدة لوكيل Java. سيتطلب ذلك بعض الوقت عند الاتصال بالمرة الأولى منذ أن تتألف صور Docker. بعد إنشاء الصور ، سيتم البدء في الحاوين التاليين:
يمكنك بعد ذلك فتح Jenkins في عنوان URL http: // localhost: 8080/. استخدم بيانات الاعتماد التالية لتسجيل الدخول كمسؤول:
يتم تثبيت الدليل الرئيسي لوحدة تحكم Jenkins (Jenkins_Home) كمجمع Docker. أي أنه مرئي على المضيف كدليل عادي على ./docker/volumes/jenkins-controller . سوف تنجو من الجلسات ويمكن تغييرها مباشرة على المضيف ، راجع الوثائق الرسمية للحصول على التفاصيل. هذا يساعد على فحص الملفات التي تم إنشاؤها بواسطة وحدة تحكم Jenkins.
نظرًا لمشكلة الأداء في البرنامج المساعد Jenkins 'Job DSL ، فإن إعداد مثيل Jenkins الجديد بطيء للغاية. لذلك ، من المنطقي إزالة جزء تكوين المهمة من ملف jenkins.yaml بعد إنشاء الوظائف. يمكنك jenkins-no-jobs.yaml محتوى الملف ./docker/volumes/jenkins-home/jenkins.yaml
المجلدات تحت ماكوس بطيئة جدا. على جهاز MacBook الذي يدير وظيفة Jenkins المقدمة في analysis-model في حاوية Docker أبطأ من تشغيل وظيفة Jenkins نفسها في حاوية Docker التي تعمل في جهاز Virtual Linux على نفس جهاز MacBook (يبدو نوعًا من السخيف؟).
بمجرد الانتهاء من تغييرات التطوير المحلية الخاصة بك (أي اختبارات الوحدة كلها خضراء) ، يجب عليك اختبار التغييرات الخاصة بك في Jenkins. يساعد هذا أيضًا في إعداد اختبار التكامل أو اختبار واجهة المستخدم لتغييرك.
إذا كان لديك تغييرات فقط في وحدة analysis-model (ولم تضيف أي طرق API جديدة) ، فأنت بحاجة إلى إعادة بناء وتثبيت Maven Module analysis-model.jar وبعد ذلك إعادة بناء برنامج Jenkins Wrapper Plugin analysis-model-api-plugin . ثم يحتاج هذا البرنامج المساعد إلى نشره على جنكينز.
تم analysis-model.jar هذه العملية عن طريق تشغيل analysis-model النصي ./bin/go.sh ثم سيقوم هذا البرنامج النصي ببناء المكون الإضافي الفعلي ونشره على Jenkins.
إذا كان لديك تغييرات فقط في البرنامج المساعد تحذير NG ، فأنت بحاجة إلى إعادة بناء warnings-ng.jpi ونشرها على Jenkins. يمكنك استخدام واحدة من البرامج النصية Shell التالية لهذه المهمة:
./bin/clean.sh : يبني المكون الإضافي باستخدام mvn clean install ونشره على النجاح في مثيل Jenkins../bin/go.sh : يبني المكون الإضافي باستخدام mvn clean install -DskipITs (يتخطى اختبارات التكامل) ونشره على النجاح في Jenkins Instace../bin/skip.sh : يبني المكون الإضافي باستخدام mvn clean install -DskipTests (يتخطى جميع الاختبارات والتحليل الثابت) ونشره على النجاح في مثيل Jenkins.تودو
إذا كان لديك تغييرات في أحد الإضافات Foresics (API أو تنفيذ GIT) ، فأنت بحاجة إلى إعادة بناء هذه الإضافات Jenkins ونشرها في مثيل Jenkins.
لتبسيط هذه العملية ، قم بتشغيل البرنامج ./go.sh .
قبل إجراء تغييرات خالية ، يرجى الاتصال بي. عادة ، من الممكن إجراء تغييرات متوافقة للخلف.
يمكن أيضًا بدء تشغيل البرامج النصية للبناء من القسم الأخير باستخدام أحد قاذفات Intellij Build and Deploy [module-name] . تقوم هذه القاذفات ببناء المكون الإضافي المقابل ونشره في Jenkins.
يمكن بدء اختبارات واجهة المستخدم باستخدام تكوين Launcher Intellij أو باستخدام برنامج نصي لسطر الأوامر. كما ذكرنا سابقًا ، تتطلب جميع اختبارات واجهة المستخدم الركض ضمن موضوع معين قيد الاختبار. في حالتنا ، نستخدم أحدث إصدار من Jenkins LTS ومجموعة من الإضافات المحددة مسبقًا من صورة Docker الخاصة بنا.
يمكن بدء اختبارات واجهة المستخدم باستخدام UI Tests Warnings (Firefox) أو UI Warnings Tests (Chrome) . لاحظ أن كلا القاذفين يتطلبان تثبيت برامج تشغيل السيلينيوم المقابلة. إذا لم يتم تثبيت برامج التشغيل هذه في /opt/bin على جهازك المحلي ، فأنت بحاجة إلى تكييف تكوينات المشغل لمطابقة الإعداد الخاص بك.
يمكنك أيضًا بدء اختبارات واجهة المستخدم باستخدام SHELL SHELL testFirefox.sh أو testChrome.sh . لاحظ أنك قد تحتاج إلى تكييف هذه البرامج النصية أيضًا (انظر القسم السابق).