چگونه GitLab با fastlane برنامه های iOS را جمع آوری، امضا و در اپ استور منتشر می کند.
اخیرا داشتیم
در اینجا خواهیم گرفت
چند کلمه در مورد پیکربندی فروشگاه اپل
ما به یک برنامه App Store، گواهیهای توزیع، و یک نمایه تدارکاتی نیاز داریم تا همه چیز را به هم متصل کنیم.
سخت ترین کار در اینجا تنظیم حقوق ثبت نام در اپ استور است. امیدوارم خودت بتونی اینو بفهمی اگر تازه کار هستید، مسیر درست را به شما نشان خواهم داد، اما ما در اینجا در مورد پیچیدگی های مدیریت گواهینامه های اپل صحبت نخواهیم کرد و آنها دائما در حال تغییر هستند. این پست به شما در شروع کار کمک می کند.
برنامه های من
شما به یک برنامه در App Store Connect نیاز دارید تا یک شناسه برای پیکربندی داشته باشید .xcodebuild
. نمایه و شناسه برنامه ترکیبی از ساخت کد، قیمت گذاری و در دسترس بودن، و پیکربندی TestFlight برای توزیع برنامه های آزمایشی بین کاربران است. آزمایش عمومی انجام ندهید، اگر گروه کوچکی دارید، راه اندازی آسان دارید و به مجوزهای اضافی از اپل نیاز ندارید، آزمایش خصوصی کافی است.
نمایه اولیه سازی
علاوه بر راهاندازی برنامه، به کلیدهای توزیع و توسعه iOS نیاز دارید که در بخش گواهیها، شناسهها و نمایههای کنسول برنامهنویس اپل ایجاد شدهاند. همه این گواهینامه ها را می توان در یک نمایه تدارکات ترکیب کرد.
کاربرانی که احراز هویت می شوند باید بتوانند گواهی ایجاد کنند، در غیر این صورت مراحل
گزینه های دیگر
علاوه بر این روش ساده، راههای دیگری نیز برای پیکربندی گواهیها و پروفایلها وجود دارد. بنابراین، اگر متفاوت کار می کنید، ممکن است مجبور شوید وفق دهید. مهمترین چیز این است که شما نیاز به پیکربندی دارید .xcodebuild
، که به فایل های لازم اشاره می کند و دسته کلید باید در رایانه ساخت برای کاربری که رانر تحت نام او اجرا می شود در دسترس باشد. برای امضای دیجیتال ما از fastlane استفاده می کنیم و اگر مشکلی وجود دارد یا می خواهید بیشتر بدانید، جزئیات آنها را بررسی کنید
در این مثال من از رویکرد استفاده می کنم
آماده سازی GitLab و fastlane
آماده سازی CI Runner
پس از جمع آوری تمام این داده ها، به پیکربندی GitLab runner در دستگاه MacOS می رویم. متأسفانه، شما فقط می توانید برنامه های iOS را در 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 برای ساخت نیاز دارد پیکربندی شود. ساده ترین راه برای آزمایش این است که به عنوان کاربری که بیلد را اجرا می کند وارد شوید و سعی کنید آن را به صورت دستی بسازید. اگر سیستم درخواست دسترسی به زنجیره کلید کرد، Always Allow for CI to work را انتخاب کنید. شاید ارزش آن را داشته باشد که وارد شوید و اولین دو خط لوله را مشاهده کنید تا مطمئن شوید که دیگر جاکلیدی را نمیخواهند. مشکل اینجاست که اپل استفاده از حالت خودکار را برای ما آسان نمی کند، اما زمانی که آن را راه اندازی کنید، همه چیز درست می شود.
fastlane init
برای استفاده از fastlane در یک پروژه، اجرا کنید fastlane init
. فقط دنبال کن
در پوشه پروژه خود، این دستورات را اجرا کنید:
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init
fastlane یک پیکربندی اولیه را می خواهد و سپس یک پوشه fastlane در پروژه با سه فایل ایجاد می کند:
1. fastlane/Appfile
اینجا هیچ چیز پیچیده ای نیست فقط مطمئن شوید که Apple ID و App ID شما صحیح است.
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address
2. fastlane/Fastfile
Fastfile
مراحل ساخت را مشخص می کند. ما از بسیاری از ویژگی های داخلی fastlane استفاده می کنیم، بنابراین همه چیز در اینجا نیز واضح است. ما یک خط ایجاد می کنیم که گواهی ها را دریافت می کند، اسمبلی را انجام می دهد و آن را در TestFlight آپلود می کند. در صورت لزوم می توانید این فرآیند را به وظایف مختلف تقسیم کنید. تمام این عملیات (get_certificates
, get_provisioning_profile
, gym
и upload_to_testflight
) قبلاً در fastlane گنجانده شده اند.
فعالیت get_certificates
и 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
همه عالی! clone
با اجرای برنامه shell
، به طوری که برای هر مونتاژ یک فضای کاری تمیز داشته باشیم و به سادگی تماس بگیرید flappybuild
fastlane، همانطور که در بالا مشاهده می شود. در نتیجه، ما مونتاژ، امضا و استقرار آخرین اسمبلی را در TestFlight دریافت می کنیم.
آرتیفکت را هم می گیریم و با اسمبلی ذخیره می کنیم. لطفا توجه داشته باشید که فرمت .ipa
یک فایل اجرایی ARM امضا شده است که در شبیه ساز اجرا نمی شود. اگر خروجی برای شبیه ساز می خواهید، فقط هدف ساختی را که آن را تولید می کند، اضافه کنید و سپس آن را در مسیر مصنوع قرار دهید.
سایر متغیرهای محیطی
چند متغیر محیطی در اینجا وجود دارد که باعث می شود همه چیز کار کند.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
и FASTLANE_SESSION
احراز هویت برای fastlane برای احراز هویت در App Store و آپلود در TestFlight لازم است. برای انجام این کار، یک رمز عبور برای برنامه ایجاد کنید که در CI استفاده می شود. جزئیات
اگر احراز هویت دو مرحله ای دارید، یک متغیر ایجاد کنید FASTLANE_SESSION
(دستورالعمل وجود دارد).
FASTLANE_USER
и FASTLANE_PASSWORD
که FASTLANE_USER
и FASTLANE_PASSWORD
. جزئیات
در نتیجه
شما می توانید ببینید که چگونه همه کار می کند
امیدوارم این مفید بوده باشد و الهام بخش شما برای کار با بیلدهای iOS در پروژه GitLab باشد. اینم یکی دیگه CI_BUILD_ID
(برای ساخت های افزایشی) به
یکی دیگر از ویژگی های جالب fastlane این است
در نظرات درباره تجربه خود به ما بگویید و ایده های خود را برای بهبود GitLab برای توسعه برنامه iOS به اشتراک بگذارید.
منبع: www.habr.com