تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يُعد الدمج المستمر (CI) من الممارسات لتطوير البرامج، حيث يدمج مطوّرو البرامج تغييرات الرموز البرمجية بشكل متكرر في مستودع مركزي، وبعد ذلك يتم إجراء الإصدارات والاختبارات الآلية.
يمكنك إعداد نظام CI أساسي لمنع التغييرات الجديدة التي من شأنها أن تؤدي إلى كسر البنية بعد الدمج. يمكنك برمجة نظام CI أكثر تقدمًا لاختبار التطبيق
تلقائيًا والتأكد من أنه يعمل كما هو متوقع في البيئات المختلفة، مثل مستويات واجهة برمجة التطبيقات وأحجام الشاشة والأنظمة الأساسية.
الشكل 1. يحافظ نظام CI في مستودع الرموز البرمجية من خلال إجراء عمليات تحقّق قبل الدمج.
يوضح هذا المستند الاستراتيجيات الشائعة التي يستخدمها المطورون لإعداد أنظمة
CI فعالة لمشروعات Android. هذه الإرشادات عامة وتنطبق على
غالبية الحلول.
مثال نموذجي
يتّبع نظام CI النموذجي سير العمل أو مسار العمل، والذي قد يبدو على النحو التالي:
يرصد نظام CI تغييرًا في الرمز البرمجي، عادةً عندما ينشئ المطوّر طلب سحب، يُسمى أيضًا "قائمة التغيير" أو "طلب الدمج".
يوفر الخدمة خادمًا ويهيئه لتشغيل سير العمل.
وهو يجلب الرموز بالإضافة إلى أدوات مثل حزمة تطوير البرامج (SDK) لنظام التشغيل Android أو صور المحاكي عند الحاجة.
تنشئ المشروع المشروع من خلال تنفيذ أمر معين، على سبيل المثال /gradlew
build..
ينفّذ الاختبارات المحلية من خلال تنفيذ أمر معيّن، على سبيل المثال تشغيل /gradlew test.
جودة البرامج المحسّنة: يمكن أن تساعد أداة CI في تحسين جودة البرامج من خلال تحديد المشاكل وحلّها في وقت مبكر. ويمكن أن يساعد ذلك في الحدّ
من عدد الأخطاء في إصدارات البرامج وتحسين تجربة المستخدم
بشكل عام.
تقليل مخاطر تعطُّل الإصدارات: عند أتمتة عملية الإنشاء باستخدام أداة CI، يمكنك تجنُّب الإصدارات المعطلة بشكل أفضل من خلال حلّ المشاكل في وقت مبكر من العملية.
زيادة الثقة في الإصدارات: يمكن أن تساعد أداة CI في ضمان ثبات كل إصدار وجاهزيته للإنتاج. من خلال إجراء اختبارات آلية، يمكن لـ CI تحديد
أي مشكلات محتملة قبل إصدارها للجمهور.
تحسين التواصل والتعاون: من خلال توفير مكان مركزي لمطوّري البرامج لمشاركة الرموز ونتائج الاختبارات، يمكن أن تساعد أداة CI في تسهيل العمل معًا لدى المطوّرين وأعضاء الفريق الآخرين وتتبُّع مستوى التقدّم.
زيادة الإنتاجية: يمكن أن يساعد CI في زيادة إنتاجية المطورين من خلال برمجة المهام التي قد تستغرق وقتًا طويلاً وتكون عرضة للأخطاء.
محتوى إضافي للقراءة
لمزيد من المعلومات حول كيفية استخدام الدمج الثابت لتحسين تطوير تطبيقك، اقرأ الصفحات التالية:
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Continuous Integration basics\n\nContinuous Integration (CI) is a software development practice where developers\nfrequently merge their code changes into a central repository, after which\nautomated builds and tests run.\n\nYou can set up a basic CI system to prevent new changes that would break the\nbuild after merging in. You can program a more advanced CI system to\nautomatically test the app and make sure it behaves as expected in different\nenvironments, such as API levels, screen sizes, and platforms.\n**Figure 1.** A CI system keeps a code repository healthy by running checks before merging.\n\nThis document demonstrates common strategies developers use to set up effective\nCI systems for Android projects. These guidelines are generic and apply to the\nmajority of solutions.\n\nTypical example\n---------------\n\nA typical CI system follows a *workflow* or *pipeline*, which might look as\nfollows:\n\n1. The CI system detects a change in the code, usually when a developer creates a pull request, also called \"change list\" or \"merge request\".\n2. It provisions and initializes a server to run the workflow.\n3. It fetches the code as well as tools such as the Android SDK or emulator images if needed.\n4. It builds the project by running a given command, for example .`/gradlew\n build`.\n5. It runs the [local tests](/training/testing/local-tests) by running a given command, for example running .`/gradlew test`.\n6. It starts emulators and runs the [instrumented tests](/training/testing/instrumented-tests).\n7. It uploads artifacts such as test results and APKs.\n\n**Figure 2.** A basic CI workflow\n\nBenefits of CI\n--------------\n\nThe advantages of CI include:\n\n- **Improved quality of software**: CI can help to improve the quality of software by identifying and fixing problems early on. This can help to reduce the number of bugs in software releases and improve the overall user experience.\n- **Reduced risk of broken builds**: When you automate your build process with CI you can better avoid broken builds by resolving issues earlier in the process.\n- **Increased confidence in releases**: CI can help to ensure that each release is stable and ready for production. By running automated tests, CI can identify any potential problems before you release them to the public.\n- **Improved communication and collaboration**: By providing a central place for developers to share code and test results, CI can help to make it easier for developers and other team members to work together and track progress.\n- **Increased productivity**: CI can help to increase developer productivity by automating tasks that would otherwise be time-consuming and error-prone.\n\nFurther reading\n---------------\n\nMore more information on how you can use constant integration to improve\ndevelopment for your app, read the following pages:\n\n- **[CI Automation](/training/testing/continuous-integration/automation)**\n\n- **[CI Features](/training/testing/continuous-integration/features)**"]]