سؤال

المكون الإضافي GIT لهدسون يعمل بشكل جيد. ومع ذلك ، يجب على برنامج Build Script تحديث رقم الإصدار في الملفات الموجودة في المستودع والالتزام والاستعادة إلى المستودع.

عندما تستطلع Hudson بجوار التحقق من التغييرات ، فإنها تنتقل إلى حلقة لا حصر لها لأنها ترى أن الالتزام "تغيير" يبني مرة أخرى ، وهو ما يرتكب تغييرًا ، لذلك يبني مرة أخرى ، ثم يرتكب تغييرًا آخر ، إلخ ... يمكنك الحصول عليه الفكرة.

لقد توقفت عن ذلك ، ركضت "سجل git" في كل مستودع وقارنت أحدث معرفات الالتزام هي نفسها بالضبط باستخدام رأس Git ls-tree

أيضا ، يدير هدسون هذا الأمر للتحقق من التغييرات:

GIT FETCH +Refs/Heads/: المرجع/عن بعد/الأصل/GIT LS-TREE HEAD

نظرًا لأن Hudson نفسها دفعت الالتزام من مستودع مساحة عمله ، ويبدو أن نتائج LS-TRee ، كيف يمكن أن يحدد هذا الأمر أنه كان هناك تغيير؟

يبدو أنه يجب أن يتم تخزين نتائج LS-Tree قبل القيام بالبناء والمقارنة مع ما لن يكون له أحدث الالتزام. آه. يمكنني محاولة إيقاف تشغيل الالتزام لاختبار هذه النظرية.

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

كيف يمكن اصلاح هذا؟ أيه أفكار؟

واين

هل كانت مفيدة؟

المحلول 2

والجواب هو!...

قام شخص ما بتشويه المكون الإضافي Git Hudson بالفعل لإضافة هذه الميزة التي تعمل بشكل جيد. ومع ذلك ، اضطررت إلى سحب المصدر وإصلاح بعض المشكلات البسيطة.

الآن يعمل بشكل جميل. يرتكب البناء ، ويعود المكون الإضافي GIT إلى المستودع دون حلقات ، معتقدًا أنه قد تغير مرة أخرى.

رائع!

إذا احتاج شخص آخر إلى هذا البحث عن شوكة Tickzoom الخاصة بـ Hudson-Git-Plugin على github.com ولكن تحقق من معرفة ما إذا كان قد تم دمجه بالفعل في المشروع الرئيسي. وقال الالتزام إنه كان مهتمًا ويخطط للجمع بين الشوك.

واين

نصائح أخرى

يجب ألا يكون لدى نظام البناء أي تفاعل في الكتابة مع نظام التحكم في المراجعة. بالتأكيد لا ينبغي يدفع هذه التغييرات تلقائيا.

قد يكون نظام البناء الخاص بك يطلب جيت (عبر git describe, ، على سبيل المثال) ما هي المراجعة الحالية. أي شيء آخر لا لزوم له وعرضة للخطأ.

شيء آخر قد تفكر فيه هو عدم الاقتراع عن التغييرات. هذا يبدو وكأنه وسيلة سخيفة للعمل. (من المسلم به ، أنا مستخدم BuildBot ثقيل اعتاد تمامًا على تشغيل كل شيء على الأحداث.)

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top