انشر تطبيقات iOS على متجر التطبيقات باستخدام GitLab و fastlane


كيف تجمع GitLab مع fastlane علامات نظام التشغيل iOS وتوقعها وتنشرها على متجر التطبيقات.


كان لدينا مؤخرًا منشور حول كيفية إنشاء تطبيق Android وتشغيله بسرعة باستخدام GitLab و fastlane. سنرى هنا كيفية إنشاء تطبيق iOS وتشغيله ونشره على TestFlight. تحقق من مدى روعة إجراء تغيير على iPad Pro باستخدام GitLab Web IDE ، وأخذ الإصدار والحصول على تحديث لإصدار الاختبار من التطبيق على نفس iPad Pro الذي طورته فيه.


هنا نأخذ تطبيق iOS البسيط على Swift الذي سجلت به مقطع فيديو.


بضع كلمات حول تكوين متجر أبل


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


أصعب شيء هنا هو تكوين حقوق التوقيع في متجر التطبيقات. آمل أن تتمكن من معرفة ذلك بنفسك. إذا كنت مبتدئًا ، فسأشير إليك في الاتجاه الصحيح ، لكننا هنا لن نتحدث عن تعقيدات إدارة شهادات Apple ، وأنها تتغير باستمرار. هذا المنشور سوف تبدأ.


طلباتي


تحتاج إلى تطبيق في App Store Connect بحيث يكون لديك معرف لتكوين .xcodebuild . يجمع ملف التعريف ومعرّف التطبيق بين تجميع الشفرة والتسعير وتوافرها ، بالإضافة إلى تكوين TestFlight لتوزيع تطبيقات الاختبار على المستخدمين. لا تقم بإجراء الاختبارات العامة ، فالخاص يكون كافيًا إذا كان لديك مجموعة صغيرة وإعداد بسيط ولا تحتاج إلى أذونات إضافية من Apple.


ملف تعريف التهيئة


بالإضافة إلى إعداد التطبيق ، ستحتاج إلى مفاتيح توزيع وتطوير iOS التي تم إنشاؤها في قسم الشهادات والمعرفات والتوصيفات من وحدة تحكم Apple Developer. يمكن دمج كل هذه الشهادات في ملف تعريف التهيئة.


يحتاج مستخدمو المصادقة إلى القدرة على إنشاء شهادات ، وإلا سترى خطأً في خطوات الشهادة والتنهد .


خيارات أخرى


إلى جانب هذه الطريقة البسيطة ، هناك طرق أخرى لتكوين الشهادات وملفات التعريف. لذلك ، إذا كنت تعمل بشكل مختلف ، فقد تضطر إلى إعادة البناء. الأهم من ذلك ، ستحتاج إلى تكوين .xcodebuild ، والذي .xcodebuild إلى الملفات الضرورية ، ويجب أن تكون سلسلة المفاتيح متوفرة على الكمبيوتر .xcodebuild للمستخدم الذي يعمل عداء باسمه. نحن نستخدم fastlane للتوقيعات الرقمية ، وإذا كانت هناك مشاكل أو إذا كنت تريد معرفة المزيد ، فراجع وثائقها التفصيلية حول التواقيع الرقمية .


في هذا المثال ، أستخدم نهج الشهادة والتنهد ، لكن بالنسبة للتطبيق الحقيقي ، من المحتمل أن تكون المطابقة أفضل.


إعداد GitLab و fastlane


إعداد عداء CI


بعد جمع كل هذه البيانات ، ننتقل إلى تهيئة عداء GitLab على جهاز MacOS. لسوء الحظ ، يعد إنشاء تطبيقات iOS حقيقيًا فقط على MacOS. ولكن يمكن أن تتغير الأمور ، وإذا كنت تنتظر التقدم في هذا المجال ، تابع مشاريع مثل xcbuild و isign ، ومهمتنا الداخلية ، gitlab-ce # 57576 .


إعداد عداء بسيط للغاية. اتبع الإرشادات الحالية لإعداد GitLab Runner على macOS .


المذكرة. يجب على العداء استخدام shell القابل للتنفيذ. هذا مطلوب لإنشاء نظام التشغيل iOS على نظام التشغيل macOS من أجل العمل مباشرة كمستخدم ، وليس من خلال الحاويات. إذا كنت تستخدم shell ، يتم إجراء التجميع والاختبار نيابةً عن مستخدم العداء ، مباشرة على مضيف التجميع. ليست آمنة مثل الحاويات ، لذلك من الأفضل التمرير عبر وثائق الأمان حتى لا تفوت أي شيء.


 sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64 sudo chmod +x /usr/local/bin/gitlab-runner cd ~ gitlab-runner install gitlab-runner start 

يجب تكوين Apple Keychain على هذا المضيف مع الوصول إلى المفاتيح التي يحتاجها Xcode. أسهل طريقة لاختبار ذلك هي تسجيل الدخول كمستخدم يبدأ الإنشاء ويحاول الإنشاء يدويًا. إذا طلب النظام الوصول إلى سلسلة المفاتيح ، فحدد دائمًا السماح لـ CI بالعمل. قد يكون من المفيد إدخال ومراقبة أول زوج من خطوط الأنابيب ، للتأكد من أنه لم يعد يطلب مجموعة من المفاتيح. المشكلة هي أن Apple لا تسهل علينا العمل مع الوضع التلقائي ، ولكن عندما تقوم بإصلاحه ، سيكون كل شيء على ما يرام.


fastlane الحرف الأول


لاستخدام fastlane في المشروع ، قم بتشغيل fastlane init . ما عليك سوى اتباع التعليمات الخاصة بتثبيت وتشغيل fastlane ، وخاصة في قسم Gemfile ، لأننا نحتاج إلى تشغيل سريع ويمكن التنبؤ به من خلال خط أنابيب CI التلقائي.


في دليل المشروع ، قم بتشغيل هذه الأوامر:


 xcode-select --install sudo gem install fastlane -NV # Alternatively using Homebrew # brew cask install fastlane fastlane init 

سوف يطلب fastlane التكوين الأساسي ، ثم يقوم بإنشاء مجلد fastlane في المشروع بثلاثة ملفات:


1. fastlane/Appfile


لا شيء معقد هنا. فقط تأكد من صحة معرف التطبيق ومعرّف التطبيق.


 app_identifier("com.vontrance.flappybird") # The bundle identifier of your app apple_id("your-email@your-domain.com") # Your Apple email address 

2. fastlane/Fastfile


Fastfile يحدد خطوات البناء. نحن نستخدم العديد من ميزات fastlane المدمجة ، لذلك كل شيء واضح هنا أيضًا. قم بإنشاء سطر واحد يتلقى الشهادات ويقوم بإنشاء وتحميله في TestFlight. يمكنك تقسيم هذه العملية إلى مهام مختلفة ، إذا لزم الأمر. كل هذه العمليات ( get_certificates ، get_provisioning_profile ، gym و upload_to_testflight ) مدرجة بالفعل في fastlane.


get_provisioning_profile و get_provisioning_profile بنهج تسجيل الشهادة والتنهد . إذا كنت تستخدم التطابق أو أي شيء آخر ، فقم بإجراء تغيير.


 default_platform(:ios) platform :ios do desc "Build the application" lane :flappybuild do get_certificates get_provisioning_profile gym upload_to_testflight end end 

3. fastlane/Gymfile


هذا ملف اختياري ، لكنني قمت بإنشائه يدويًا لتغيير دليل الإخراج الافتراضي ووضع الإخراج في المجلد الحالي. هذا يبسط CI. إذا كنت مهتمًا ، اقرأ عن gym ومعلماتها في الوثائق .


 https://docs.fastlane.tools/actions/gym/ 

لدينا .gitlab-ci.yml


لذلك ، لدينا عداء CI للمشروع ، ونحن على استعداد لاختبار خط الأنابيب. دعونا نرى ما لدينا في .gitlab-ci.yml :


 stages: - build variables: LC_ALL: "en_US.UTF-8" LANG: "en_US.UTF-8" GIT_STRATEGY: clone build: stage: build script: - bundle install - bundle exec fastlane flappybuild artifacts: paths: - ./FlappyBird.ipa 

كل شيء رائع! لقد قمنا بتعيين تنسيق UTF-8 من أجل fastlane ، كما هو مطلوب ، استخدم استراتيجية clone مع shell القابل للتنفيذ حتى يكون لدينا مساحة عمل نظيفة لكل مجموعة ، وببساطة اتصل flappybuild ، كما هو موضح أعلاه. نتيجة لذلك ، نحصل على التجميع والتوقيع ونشر التجميع الأخير في TestFlight.


نحن أيضا الحصول على قطعة أثرية وحفظه مع التجمع. لاحظ أن تنسيق .ipa هو ARM موقع قابل للتنفيذ ولا يعمل في جهاز المحاكاة. إذا كنت تريد إخراج المحاكي ، فما عليك سوى إضافة هدف التجميع الذي ينتجه ، ثم قم بتضمينه في المسار إلى قطعة أثرية.


متغيرات البيئة الأخرى


هناك عدة متغيرات البيئة التي يعمل كل شيء.


FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD و FASTLANE_SESSION


تتطلب المصادقة في App Store والتحميل إلى TestFlight المصادقة على fastlane. للقيام بذلك ، قم بإنشاء كلمة مرور للتطبيق الذي سيتم استخدامه في CI. التفاصيل هنا .


إذا كان لديك مصادقة FASTLANE_SESSION ، FASTLANE_SESSION بإنشاء المتغير FASTLANE_SESSION (الإرشادات هناك).


FASTLANE_USER و FASTLANE_PASSWORD


لكي يتمكن سيرت والتنهد من استدعاء ملف تعريف التهيئة والشهادات عند الطلب ، يجب تعيين متغيرات FASTLANE_PASSWORD و FASTLANE_PASSWORD . التفاصيل هنا . هذا ليس ضروريًا إذا كنت تستخدم طريقة توقيع مختلفة.


في الختام


يمكنك أن ترى كيف يعمل كل شيء في بلدي مثال بسيط .


آمل أن يكون هذا مفيدًا وألهمك للعمل مع تطبيقات iOS في مشروع GitLab. فيما يلي بعض النصائح الإضافية الخاصة بـ CI لـ fastlane ، فقط في حالة. قد ترغب في استخدام CI_BUILD_ID (للبنيات المتزايدة) لزيادة الإصدار تلقائيًا .


ميزة أخرى رائعة من fastlane هي لقطات شاشة تلقائية لمتجر التطبيقات ، والتي يسهل إعدادها.


شارك تجاربك في التعليقات وشارك الأفكار لتحسين تطبيق GitLab لتطوير تطبيقات iOS.

Source: https://habr.com/ru/post/ar444170/


All Articles