Чӣ тавр GitLab бо fastlane замимаҳои iOS-ро дар Дӯкони App ҷамъоварӣ, имзо ва нашр мекунад.
Мо ба наздикӣ доштем
Ана мо мегирем
Чанд сухан дар бораи конфигуратсияи Дӯкони 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 созед. Аммо ҳама чиз метавонад тағир ёбад ва агар шумо пешрафтро дар ин соҳа интизор бошед, ба лоиҳаҳои монанди инҳо диққат диҳед
Ҷойгир кардани даванда хеле содда аст. Ҷараёнро пайгирӣ кунед
Шарҳ. Даванда бояд барномаи иҷрошавандаро истифода барад 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
. Танҳо пайравӣ кунед
Дар феҳристи лоиҳаи худ ин фармонҳоро иҷро кунед:
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
Все отлично! 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_BUILD_ID
(барои сохтани афзоянда) ба
Хусусияти дигари ҷолиби fastlane ин аст
Дар шарҳҳо дар бораи таҷрибаи худ ба мо бигӯед ва ғояҳои худро оид ба беҳтар кардани GitLab барои таҳияи барномаҳои iOS мубодила кунед.
Манбаъ: will.com