ویژگی های CI

موارد زیر برخی از ویژگی هایی است که می توانید در اکثر سیستم های CI بیابید.

محیط زیست

انتخاب و درک محیط سخت افزاری و نرم افزاری که سیستم در آن گردش کار را اجرا می کند، مهم است. ملاحظات مهم برای برنامه های اندروید عبارتند از:

  • پلتفرم : لینوکس، مک، ویندوز و نسخه های آنها.
  • حافظه موجود : ساخت برنامه‌ها و شبیه‌سازهای در حال اجرا می‌توانند از مقدار زیادی RAM استفاده کنند و اغلب لازم است پارامترهایی مانند اندازه پشته JVM را تغییر دهید تا از خطاهای خارج از حافظه جلوگیری شود.
  • نرم‌افزار از پیش نصب‌شده : سیستم‌های CI معمولاً تصاویر را با مجموعه‌ای از ابزارهای موجود از قبل در دسترس هستند، مانند کیت توسعه جاوا (JDK)، کیت توسعه نرم‌افزار اندروید (SDK)، ابزارهای ساخت، پلتفرم‌ها و شبیه‌سازها.
  • معماری Runner و مجموعه دستورالعمل : ARM، x86. این در هنگام استفاده از شبیه سازها مهم است.
  • متغیرهای محیطی : برخی از آنها توسط سیستم CI تنظیم می‌شوند (به عنوان مثال: ANDROID_HOME ) و شما می‌توانید متغیرهای خود را طوری تنظیم کنید که، برای مثال، از اعتبارنامه‌های کدگذاری سخت در گردش کار خود اجتناب کنید.

بسیاری از جنبه های دیگر وجود دارد که باید در نظر بگیرید، مانند تعداد هسته های موجود، و اینکه آیا مجازی سازی برای اجرای شبیه سازها فعال است یا خیر.

گزارش ها و گزارش ها

هنگامی که یک مرحله با شکست مواجه می شود، سیستم CI به شما اطلاع می دهد و معمولاً به شما اجازه ادغام تغییر را نمی دهد. برای اینکه بفهمید چه مشکلی رخ داده است، به دنبال خطاها در گزارش‌ها بگردید.

علاوه بر این، ساخت و آزمایش گزارش هایی تولید می کند که معمولاً به عنوان مصنوعات آن ساختمان خاص ذخیره می شوند. بسته به سیستم CI، می توانید از افزونه ها برای تجسم نتایج آن گزارش ها استفاده کنید.

زمان اجرای کش و CI

سیستم های CI از یک build cache برای سرعت بخشیدن به فرآیند استفاده می کنند. در ساده‌ترین شکل، آن‌ها تمام فایل‌های کش Gradle را پس از یک ساخت موفق ذخیره می‌کنند و آنها را قبل از یک فایل جدید بازیابی می‌کنند. این به ویژگی کش ساخت Gradle متکی است و باید در پروژه شما فعال شود.

برخی از راه‌های بهبود زمان اجرا و قابلیت اطمینان عبارتند از:

  • ماژول ها : تشخیص اینکه کدام ماژول ها تحت تأثیر یک تغییر قرار می گیرند و فقط آن ها را ساخته و آزمایش می کنند.
  • رد شدن از حافظه پنهان : اگر ساخت شامل اسکریپت هایی است که توسعه دهنده آن ها را اصلاح کرده است، کش های ساخت را نادیده بگیرید. ساختن از ابتدا امن تر است.
  • تست‌های شارد : به‌ویژه تست‌های ابزاردار، می‌توان تست‌های تکه‌ای را در چند دستگاه مختلف انجام داد. این توسط رانر اندروید، دستگاه های مدیریت شده Gradle و آزمایشگاه تست Firebase پشتیبانی می شود.
  • Shard builds : می توانید بیلد را در چندین نمونه سرور به اشتراک بگذارید.
  • حافظه پنهان از راه دور : همچنین می توانید از حافظه پنهان Gradle از راه دور استفاده کنید.

تست های ناموفق را دوباره امتحان کنید

پوسته پوسته شدن به تست ها یا ابزارهایی اطلاق می شود که به طور متناوب شکست می خورند. همیشه باید سعی کنید مشکلاتی را که ساختارها و تست‌های پوسته پوسته ایجاد می‌کنند پیدا کرده و برطرف کنید، اما بازتولید برخی از آنها دشوار است، مخصوصاً هنگام اجرای آزمایش‌های ابزاردار. یک استراتژی متداول این است که هر زمان که اجرای آزمایشی با شکست مواجه شد، تا حداکثر تعداد دفعات تکرار، دوباره امتحان کنید.

هیچ راه واحدی برای پیکربندی تلاش های مجدد وجود ندارد، زیرا می توانند در سطوح مختلف رخ دهند. جدول زیر اقداماتی را که ممکن است در پاسخ به شکست تست پوسته پوسته انجام دهید، تشریح می کند:

شکست

اقدام

شبیه ساز برای یک ثانیه پاسخ نمی دهد و باعث ایجاد مهلت زمانی می شود

تست شکست خورده را دوباره اجرا کنید

شبیه ساز بوت نشد

کل کار را دوباره اجرا کنید

در مرحله تسویه کد یک خطای اتصال وجود داشت

گردش کار را مجدداً راه اندازی کنید

مهم است که وارد سیستم شوید و ردیابی کنید که کدام قسمت‌های سیستم ضعیف هستند و فقط با تکیه بر تلاش‌های مجدد، روی اطمینان و سریع نگه داشتن CI سرمایه‌گذاری کنید.