Интишори барномаҳои iOS дар Store App бо GitLab ва fastlane

Интишори барномаҳои iOS дар Store App бо GitLab ва fastlane

Чӣ тавр GitLab бо fastlane замимаҳои iOS-ро дар Дӯкони App ҷамъоварӣ, имзо ва нашр мекунад.

Мо ба наздикӣ доштем дар бораи чӣ гуна зуд сохтан ва идора кардани барномаи Android интишор кунед бо GitLab ва парвози зуд. Дар ин ҷо мо мебинем, ки чӣ гуна як барномаи iOS-ро сохта ва идора кардан ва онро дар TestFlight нашр кардан мумкин аст. Санҷед, ки он чӣ қадар сард аст Ман дар iPad Pro бо GitLab Web IDE тағирот ворид мекунам, Ман маҷлисро мегирам ва навсозии версияи санҷишии барномаро дар ҳамон iPad Pro, ки ман онро таҳия кардаам, мегирам.

Ана мо мегирем барномаи оддии iOS дар Swift, ки ман бо ӯ видео сабт кардам.

Чанд сухан дар бораи конфигуратсияи Дӯкони Apple

Барои пайваст кардани ҳама чиз ба мо як барномаи App Store, сертификатҳои тақсимот ва профили таъминот лозим аст.

Чизи аз ҳама мушкил ин ҷо муқаррар кардани ҳуқуқи имзо дар Дӯкони App аст. Умедворам, ки шумо инро худатон фаҳмида метавонед. Агар шумо нав бошед, ман шуморо ба самти дуруст нишон медиҳам, аммо мо дар ин ҷо дар бораи нозукиҳои идоракунии сертификатҳои Apple сӯҳбат намекунем ва онҳо пайваста тағйир меёбанд. Ин паём ба шумо дар оғоз кардан кӯмак мекунад.

Барномаҳои ман

Ба шумо дар App Store Connect барнома лозим аст, то шумо ID-и конфигуратсия дошта бошед .xcodebuild. Профил ва ID-и барнома рамзҳо, нархгузорӣ ва дастрасӣ ва конфигуратсияи TestFlight-ро барои паҳн кардани барномаҳои санҷишӣ ба корбарон муттаҳид мекунад. Санҷиши оммавиро анҷом надиҳед, санҷиши хусусӣ кифоя аст, агар шумо гурӯҳи хурд дошта бошед, танзимоти осон дошта бошед ва ба иҷозати иловагӣ аз Apple ниёз надоред.

Профили ибтидоӣ

Илова ба танзими барнома, ба шумо калидҳои тақсимот ва таҳияи iOS лозим аст, ки дар бахши Сертификатҳо, Идентификаторҳо ва Профилҳо консоли Apple Developer сохта шудаанд. Ҳамаи ин сертификатҳоро метавон ба профили таъминот муттаҳид кард.

Истифодабарандагоне, ки тасдиқ карда мешаванд, бояд қобилияти эҷоди сертификатҳо дошта бошанд, дар акси ҳол қадамҳо тасдиқ ва оҳиста шумо хато мебинед.

имконоти дигар

Ба ғайр аз ин усули оддӣ, роҳҳои дигари танзими сертификатҳо ва профилҳо мавҷуданд. Ҳамин тавр, агар шумо ба таври дигар кор кунед, шояд шумо бояд мутобиқ шавед. Муҳимтар аз ҳама он аст, ки ба шумо конфигуратсия лозим аст .xcodebuild, ки ба файлҳои зарурӣ ишора мекунад ва занҷири калидӣ бояд дар компютери сохта барои корбаре дастрас бошад, ки даванда таҳти номи ӯ кор мекунад. Барои имзои рақамӣ мо fastlane-ро истифода мебарем ва агар мушкилоте вуҷуд дошта бошад ё шумо хоҳед, ки маълумоти бештар гиред, тафсилоти онҳоро тафтиш кунед ҳуҷҷатҳо дар бораи имзоҳои рақамӣ.

Дар ин мисол ман равишро истифода мебарам тасдиқ ва оҳиста, аммо барои истифодаи воқеӣ эҳтимолан беҳтар мувофиқ аст гӯгирд.

Омода кардани GitLab ва fastlane

Омода кардани CI Runner

Ҳамаи ин маълумотҳоро ҷамъ карда, мо ба конфигуратсияи давандаи GitLab дар дастгоҳи MacOS мегузарем. Мутаассифона, шумо метавонед танҳо дар MacOS барномаҳои iOS созед. Аммо ҳама чиз метавонад тағир ёбад ва агар шумо пешрафтро дар ин соҳа интизор бошед, ба лоиҳаҳои монанди инҳо диққат диҳед 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 бояд созад, танзим карда шавад. Роҳи осонтарини санҷиши ин ворид шудан ба сифати корбаре мебошад, ки сохтмонро иҷро мекунад ва кӯшиш мекунад, ки онро дастӣ созад. Агар система дастрасии занҷири калидиро талаб кунад, Ҳамеша иҷозат доданро барои кор кардани 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

Дар ин ҷо ҳеҷ чизи мураккаб нест. Танҳо боварӣ ҳосил кунед, ки ID Apple ва 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

Все отлично! Мо форматро ба UTF-8 барои fastlane мувофиқи лозим таъин кардем, стратегияро истифода баред clone бо барномаи иҷрошаванда shell, то ки мо барои ҳар як анҷуман фазои тоза дошта бошем ва танҳо занг занем flappybuild fastlane, тавре ки дар боло дида мешавад. Дар натиҷа, мо ҷамъоварӣ, имзо ва ҷойгиркунии маҷлиси охиринро дар TestFlight мегирем.

Мо инчунин артефактро мегирем ва онро бо маҷлис захира мекунем. Лутфан қайд кунед, ки формат .ipa иҷрошавандаи имзошудаи ARM аст, ки дар симулятор кор намекунад. Агар шумо хоҳед, ки барои симулятор баромад кунед, танҳо ҳадафи сохтани онро илова кунед ва сипас онро ба роҳи артефакт дохил кунед.

Дигар тағирёбандаҳои муҳити зист

Дар ин ҷо якчанд тағирёбандаҳои муҳити зист мавҷуданд, ки ҳама чизро кор мекунанд.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Барои тасдиқи аутентификатсия дар Store App ва боргузорӣ ба TestFlight, тасдиқи fastlane лозим аст. Барои ин, барои барномае, ки дар CI истифода мешавад, парол эҷод кунед. Тафсилот дар ин ҷо.

Агар шумо аутентификатсияи ду-омил дошта бошед, тағирёбанда эҷод кунед FASTLANE_SESSION (дастурҳо дар он ҷо).

FASTLANE_USER и FASTLANE_PASSWORD

он тасдиқ ва оҳиста профили оғозёбӣ ва сертификатҳо бо дархост, шумо бояд тағирёбандаҳоро таъин кунед FASTLANE_USER и FASTLANE_PASSWORD... Тафсилот дар ин ҷо. Агар шумо усули дигари имзоро истифода баред, ин шарт нест.

Дар охир

Шумо метавонед бубинед, ки ин ҳама чӣ гуна кор мекунад дар мисоли оддии ман.

Умедворам, ки ин муфид буд ва ба шумо илҳом бахшид, ки бо сохтани iOS дар лоиҳаи GitLab кор кунед. Ана дигараш Маслиҳатҳои CI барои fastlane, танҳо дар сурати. Шояд шумо мехоҳед истифода баред CI_BUILD_ID (барои сохтани афзоянда) ба версияи худкор афзоиш меёбад.

Хусусияти дигари ҷолиби fastlane ин аст скриншотҳои автоматӣ барои Дӯкони App, ки насб кардан хеле осон аст.

Дар шарҳҳо дар бораи таҷрибаи худ ба мо бигӯед ва ғояҳои худро оид ба беҳтар кардани GitLab барои таҳияи барномаҳои iOS мубодила кунед.

Манбаъ: will.com

Илова Эзоҳ