انتشار برنامه های iOS در فروشگاه App با GitLab و fastlane

انتشار برنامه های iOS در فروشگاه App با GitLab و fastlane

چگونه GitLab با fastlane برنامه های iOS را جمع آوری، امضا و در اپ استور منتشر می کند.

اخیرا داشتیم پستی در مورد نحوه ساخت و اجرای سریع یک برنامه اندروید با GitLab و هواپیمای سریع. در اینجا نحوه ساخت و اجرای یک برنامه iOS و انتشار آن در TestFlight را خواهیم دید. ببینید چقدر باحاله من با GitLab Web IDE در حال ایجاد تغییر در iPad Pro هستم، من اسمبلی را می گیرم و نسخه آزمایشی برنامه را در همان iPad Pro که آن را توسعه داده ام به روز می کنم.

در اینجا خواهیم گرفت برنامه ساده iOS در سوئیفت، که با او فیلم را ضبط کردم.

چند کلمه در مورد پیکربندی فروشگاه اپل

ما به یک برنامه App Store، گواهی‌های توزیع، و یک نمایه تدارکاتی نیاز داریم تا همه چیز را به هم متصل کنیم.

سخت ترین کار در اینجا تنظیم حقوق ثبت نام در اپ استور است. امیدوارم خودت بتونی اینو بفهمی اگر تازه کار هستید، مسیر درست را به شما نشان خواهم داد، اما ما در اینجا در مورد پیچیدگی های مدیریت گواهینامه های اپل صحبت نخواهیم کرد و آنها دائما در حال تغییر هستند. این پست به شما در شروع کار کمک می کند.

برنامه های من

شما به یک برنامه در App Store Connect نیاز دارید تا یک شناسه برای پیکربندی داشته باشید .xcodebuild. نمایه و شناسه برنامه ترکیبی از ساخت کد، قیمت گذاری و در دسترس بودن، و پیکربندی TestFlight برای توزیع برنامه های آزمایشی بین کاربران است. آزمایش عمومی انجام ندهید، اگر گروه کوچکی دارید، راه اندازی آسان دارید و به مجوزهای اضافی از اپل نیاز ندارید، آزمایش خصوصی کافی است.

نمایه اولیه سازی

علاوه بر راه‌اندازی برنامه، به کلیدهای توزیع و توسعه iOS نیاز دارید که در بخش گواهی‌ها، شناسه‌ها و نمایه‌های کنسول برنامه‌نویس اپل ایجاد شده‌اند. همه این گواهینامه ها را می توان در یک نمایه تدارکات ترکیب کرد.

کاربرانی که احراز هویت می شوند باید بتوانند گواهی ایجاد کنند، در غیر این صورت مراحل گواهی و آه یک خطا خواهید دید

گزینه های دیگر

علاوه بر این روش ساده، راه‌های دیگری نیز برای پیکربندی گواهی‌ها و پروفایل‌ها وجود دارد. بنابراین، اگر متفاوت کار می کنید، ممکن است مجبور شوید وفق دهید. مهمترین چیز این است که شما نیاز به پیکربندی دارید .xcodebuild، که به فایل های لازم اشاره می کند و دسته کلید باید در رایانه ساخت برای کاربری که رانر تحت نام او اجرا می شود در دسترس باشد. برای امضای دیجیتال ما از fastlane استفاده می کنیم و اگر مشکلی وجود دارد یا می خواهید بیشتر بدانید، جزئیات آنها را بررسی کنید اسناد مربوط به امضای دیجیتال.

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

آماده سازی GitLab و fastlane

آماده سازی CI Runner

پس از جمع آوری تمام این داده ها، به پیکربندی GitLab runner در دستگاه MacOS می رویم. متأسفانه، شما فقط می توانید برنامه های iOS را در MacOS ایجاد کنید. اما همه چیز می تواند تغییر کند، و اگر انتظار پیشرفت در این زمینه را دارید، مراقب پروژه هایی مانند این باشید xcbuild и امضا کردنو وظیفه داخلی ما 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 برای ساخت نیاز دارد پیکربندی شود. ساده ترین راه برای آزمایش این است که به عنوان کاربری که بیلد را اجرا می کند وارد شوید و سعی کنید آن را به صورت دستی بسازید. اگر سیستم درخواست دسترسی به زنجیره کلید کرد، Always Allow for CI to work را انتخاب کنید. شاید ارزش آن را داشته باشد که وارد شوید و اولین دو خط لوله را مشاهده کنید تا مطمئن شوید که دیگر جاکلیدی را نمی‌خواهند. مشکل اینجاست که اپل استفاده از حالت خودکار را برای ما آسان نمی کند، اما زمانی که آن را راه اندازی کنید، همه چیز درست می شود.

fastlane init

برای استفاده از 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

اینجا هیچ چیز پیچیده ای نیست فقط مطمئن شوید که 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

همه عالی! در صورت نیاز فرمت را برای fastlane روی UTF-8 قرار دادیم، از استراتژی استفاده کنید 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 برای fastlane، فقط در مورد. ممکن است بخواهید استفاده کنید CI_BUILD_ID (برای ساخت های افزایشی) به نسخه افزایش خودکار.

یکی دیگر از ویژگی های جالب fastlane این است اسکرین شات های خودکار برای اپ استور، که راه اندازی آنها بسیار آسان است.

در نظرات درباره تجربه خود به ما بگویید و ایده های خود را برای بهبود GitLab برای توسعه برنامه iOS به اشتراک بگذارید.

منبع: www.habr.com

اضافه کردن نظر