CI TeamCity - أتمتة عمليات بناء اختبار Android و UI

في هذه المقالة ، أوجه انتباهك إلى تعليمات تثبيت TeamCity وتكوينها لأتمتة تجميع واختبار مشاريع Android ضمن Windows.

سأنتبه أيضًا إلى ميزات إعداد البيئة لمشروع Android (الذي وجدته في عملية البحث) وأنواع مختلفة من الأشياء التي يمكن أن تساعد في جعل الحياة أسهل للمختبر والمطور المبتدئين.

الأهداف:


عند تحديث رمز المشروع ، يجب أن يحدث ما يلي:

  • مشروع بناء السيارات
  • تشغيل Autotests لواجهة المستخدم
  • تصدير ملفات التصحيح وتصحيح ملفات APK للاختبار اليدوي اللاحق
  • إبلاغ جميع أعضاء فريق التطوير بالنتائج

خطة:


  1. قم بتثبيت Java JDK وتكوينه
  2. قم بتثبيت Android SDK وتكوينه
  3. تحديد درجة منفصلة للتصحيح
  4. تحضير مشروع أندرويد
  5. قم بتثبيت خادم TeamCity وعامل البناء
  6. إعداد مشروع TeamCity → إنشاء لبناء المشروع والحصول على APK التثبيت
  7. تكوين خطوات البناء مع الاختبارات التلقائية لواجهة المستخدم

الجزء الرئيسي


1. تثبيت Java JDK وتكوينه على

عكس الاعتقاد الشائع حول تثبيت أحدث إصدار من Java ، ينشر JetBrains على موقعه الرسمي على الويب الإصدار الموصى به من Java SDK: link يقوم

بتثبيت الإصدار الموصى به: link

قم أيضًا بتثبيت متغيرات البيئة:

  • JAVA_HOME- المسار إلى المجلد باستخدام Java SKD لاستخدام CI.

    مثال: من

    C:\Java\jdk1.8.0_181
    الأفضل وضع متغيرات النظام.
  • المسار - المسار إلى المجلد مع Java SKD للاستخدام من سطر الأوامر.

    مثال: من

    C:\Java\jdk1.8.0_181\bin
    الأفضل وضع متغيرات المستخدم.

نتحقق من التثبيت:

في CMD في أي دليل ندخله: java -version

يجب أن تجيب Java أنه:



2. تثبيت وتهيئة Android SDK

لن نقوم بتثبيت أدوات Android SDK بشكل منفصل. يحظر Android إنشاء المشاريع من سطر الأوامر. سيكون من الملائم أيضًا تصحيح الأخطاء المحتملة إذا قمنا بتثبيت Android Studio على الفور.

قم بتثبيت أحدث إصدار: link

قم أيضًا بتثبيت متغيرات البيئة:

ANDROID_HOME
مثال: C:\Users\1\AppData\Local\Android\Sdk

ANDROID_AVD_HOME
مثال: C:\Users\1\.android\avd

المسار:

مثال: C:\Users\1\AppData\Local\Android\Sdk\platform-tools\- قم بتشغيل الأدوات المساعدة من وحدة التحكم من جانبنا ومن خلال CI.

تحقق: اكتب CMD: adb --help

احصل على معلومات حول الإصدار الحالي والأوامر المتاحة:



المسار:

مثال: C:\Users\1\AppData\Local\Android\Sdk\emulator\- بدء تشغيل المحاكي من وحدة التحكم من قبلنا و CI.

تحقق: نكتب في CMD emulator -version

نحصل على معلومات عن الإصدار الحالي:



3. تثبيت Gradle

يتم تضمين Gradle في Android Studio ، لكننا سنضع واحدة أخرى لتصحيح الأخطاء من وحدة التحكم.

النسخة ليست مهمة ، لأن من المفترض أن يتم إطلاق المشروع من خلال غلاف Gradle.

أقترح تثبيت نسخة مشابهة لتلك المستخدمة في المشروع ، على سبيل المثال Gradle 3.3. رابط .

نقوم أيضًا بتثبيت متغيرات البيئة:

GRADLE_HOME- ليست هناك حاجة ، لأن سيستخدم CI Gradle Android Studio.

GRADLE_USER_HOME

مثال: c:/gradle-cache

الفعلي لـ Windows Server ، مثل بدونه ، أثناء تجميع المشروع ، سيتم تخزين جميع مكتبات Gradle التي تم تنزيلها فيهاC:\Windows\System32\config\systemprofile\.gradleعلاوة على ذلك ، لن تتمكن CI من الوصول إلى هذه الملفات.

المسار:

C:\Gradle\gradle-3.3\bin- المسار إلى مجلد Gradle للاستخدام المريح من سطر الأوامر.

تحقق: نكتب في CMD gradle -v

نتلقى معلومات حول الإصدار الحالي:



4. إعداد مشروع Android

4.1. إنشاء مشروع تجريبي في Android Studio.

اكتب النشاط - نشاط التنقل السفلي. سيكون مفيدًا لاحقًا لإنشاء اختبار واجهة المستخدم.

4.2. قم بتعطيل Gradle Daemon على أساس مستمر حتى لا يفرخ Gradle Daemon في CI:

أضف في الملف gradle.properties:
add org.gradle.daemon=false

4.3. نضيف أيضًا إلى الملف .gitignore(حسب ذوقك) حتى لا تترك الملفات الإضافية في VCS. 4.4. أنشئ ملف تخزين مفاتيح (أو استخدم ملفًا موجودًا) في مجلد المشروع. رابط .

.gradle
.idea
/build/
local.properties





4.5. أضف روابط إلى ملف تخزين المفاتيح إلى Gradle حتى نتمكن من إنشاء ملف APK كامل.

مثال:

android{  
    ... //  
    signingConfigs {
        release {
            storeFile file("keystorefile.jks") //        
            storePassword "Password" //  
            keyAlias "android" // keyAlias,     
            keyPassword "Password" //  APK
        }
    }

    ... //  
     buildTypes {
        release {
            ... //  
            signingConfig signingConfigs.release //  APK
        }
    }
} 

4.6. لاختبار صحة النظام ، سنقوم بتجميع مشروع جديد من سطر الأوامر. أدخل CMD:

cd < >

على سبيل المثال: C:\Users\1\Documents\GitHub\Command2

اذهب إلى المشروع.

أدخل: نحن في

gradlew assembleDebug

انتظار الانتهاء من التجميع.

إذا كان كل شيء على ما يرام ، فإننا نحصل على نتيجة ناجحة.



نذهب إلى مجلد المشروع: app\build\outputs\apk\debug

يحتوي على ملف APK جديد يمكن تثبيته على الجهاز والتحقق مما إذا كان كل شيء يعمل.

4.7. سوف نتحقق أيضًا مما إذا تم إطلاق أدوات SDK ومدير AVD.

4.7.1. قم بتشغيل Android Studio وإنشاء محاكي. يمكنك ، بالطبع ، إنشائه في سطر الأوامر ، ولكن لدينا shell UI المثبت ، فمن الخطيئة عدم استخدامه.

الأدوات → AVD Manager:



يجب أن يكون إصدار SDK من المحاكي الذي تم إنشاؤه على الأقل بحجم مشروع SDK الخاص بنا.

4.7.2. إنشاء محاكي. دعونا نتحقق من إطلاقه من وحدة التحكم. ندخل في سطر الأوامر:

start /min emulator -avd < >

مثال:

start /min emulator -avd Pixel_2_API_25

لاحظ أننا نستخدم وظيفة /minلبدء المحاكي في الخلفية. خلاف ذلك ، لم يكن ليسمح بإدخال أوامر جديدة في CMD.
الجهاز يعمل:



4.7.3. نتحقق من تثبيت APK المجمعة.

ندخل في CMD:

adb install <path_to_apk>

مثال:

adb install C:\Users\1\Documents\GitHub\Command2\app\release\app-release.apk

بنجاح:



4.7.4. نتحقق من إطلاق APK المثبت.

ندخل في CMD:

adb shell monkey -p < > -c android.intent.category.LAUNCHER 1

مثال:

adb shell monkey -p com.panarik.command -c android.intent.category.LAUNCHER 1

بدأ التطبيق:



4.7.5. نقوم بتحميل المشروع إلى مستودع بعيد ، على سبيل المثال ، إلى GitHub. تحقق مما إذا كان سيتم تنزيل المشروع:

تثبيت Git BASH (إذا استخدمنا Git VCS). رابط .

نحن نستنسخ المشروع من الريبو البعيد. أدخل في وحدة التحكم Git BASH:

git clone < .git>

مثال:

git clone https://github.com/panarik/Command2.git

نرى النتيجة. تم نسخ المشروع إلى مجلد محلي:



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

5. تثبيت TeamCity Server و Build Agent

لن أصف عملية التثبيت بالتفصيل. هو في الدليل الرسمي والعديد من المصادر الأخرى. منفذ خادم TeamCity أقترح تعيين غير قياسي ، بحيث يكون من الصعب حساب عمليات مسح المنفذ.

6. تكوين مشروع TeamCity → البناء

في الإعدادات العامة ، تحتاج فقط إلى تعيين المسار إلى إخراج APK:

مثال:

app\build\outputs\apk\release\app-release.apk



6.1. إعداد جذور TeamCity VCS

كل شيء قياسي. في مشروعنا ، نستخدم Git ، لذلك نقوم بإدخاله ورابط إلى الريبو البعيد. مثال:

https://github.com/panarik/Command2.git



6.2. تكوين بناء TeamCity

أضف خطوة بناء ، والتي ستجمع المشروع وتعرض APK. في مشروعنا نستخدم Gradle.

أدخل في حقل Gradle المهام:

clean build assembleDebug --no-daemon(- لا يوجد برنامج خفي في حالة حدوث ذلك ، ويجب أن يعمل هذا كملف ثانوي للملف الذي قمنا به في القسم 4.2)



انقر فوق تشغيل ، نحصل على APK.

7. تكوين خطوات البناء باستخدام الاختبارات التلقائية لواجهة المستخدم

وصلنا إلى الجزء الأكثر إثارة للاهتمام ، وهو الإطلاق التلقائي لاختبارات واجهة المستخدم.

سيتم تشغيل الخطوات باستخدام ملفات .BAT. إنه أكثر ملاءمة لكتابة التعليمات البرمجية وتغييرها بسرعة دون الحاجة إلى الانتقال إلى واجهة مستخدم TeamCity ، إلخ.

7.1. أولاً ، قم بإنشاء خطوة بناء مع تشغيل المحاكي.

يمكنك جعل عنوان URL لـ BATnik تمامًا ، من أجل الراحة ، لقد جعلت البيئة في TeamCity BAT_FILESمع المسار إلى المجلد باستخدام BATniks:



نكتب رمز بدء المحاكي في الملف.

مثال:

start /min "emulator" /D "C:\Users\1\AppData\Local\Android\Sdk\emulator" emulator.exe -avd Pixel_2_API_25 -no-snapshot-save -no-boot-anim
قائمة من الأوامر والمعلمات على موقع قبالة: الارتباط .

7.2. قم بإنشاء خطوة بناء مع توقف مؤقت أثناء تحميل المحاكي. يمكنك على الفور تسجيل الخطوة الأولى في .BAT ، ولكنها ستكون أكثر وضوحًا.

مثال على هذا الفريق الذي قام بالتجسس على الإنترنت:

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'

من واجهة المستخدم سيبدو كالتالي:



قائمة بجميع الفرق على الموقع: رابط.

7.3. قم بإجراء الاختبار.

أيضا من سطر الأوامر. كل شيء فردي هنا.

أمر مثال:

gradlew connectedDebugAndroidTest

7.4. نوقف المحاكي.

أمر مثال:

adb -s emulator-5554 emu kill

اكتملت العملية.

يمكنك أيضًا تحميل التقرير في خطوة منفصلة. بشكل افتراضي ، يتم حفظه في مجلد المشروع.

شكرا جزيلا لكم على اهتمامكم!

إذا كان لدى أي شخص نصيحة بشأن تحسين الرمز للخطوات ، واقتراحات للتحسين ، فسأكون ممتنًا جدًا.

All Articles