Як GitLab з fastlane збірае, падпісвае і публікуе прыкладанні для iOS у App Store.
Нядаўна ў нас быў
Тут мы возьмем
Пару слоў аб канфігурацыі Apple Store
Нам спатрэбіцца дадатак у App Store, сертыфікаты распаўсюджвання і профіль ініцыялізацыі, каб звязаць усё разам.
Самае складанае тут - наладзіць правы на подпіс у App Store. Спадзяюся, з гэтым вы разбярэцеся самі. Калі вы пачатковец, я пакажу патрэбны кірунак, але тут мы не будзем казаць аб тонкасцях кіравання сертыфікатамі Apple, да таго ж яны ўвесь час змяняюцца. Гэты пост дапаможа пачаць справу.
Мае прыкладання
Трэба дадатак у App Store Connect, каб у вас быў ID для канфігурацыі .xcodebuild
. Профіль і ID прыкладання аб'ядноўваюць зборкі кода, кошты і даступнасць, а таксама канфігурацыю TestFlight для распаўсюджвання тэставых прыкладанняў сярод карыстачоў. Не рабіце агульнадаступнае тэставанне, хопіць і прыватнага, калі ў вас маленькая група, простая настройка і не патрэбны дадатковыя дазволы ад Apple.
Профіль ініцыялізацыі
Акрамя сетапа прыкладання вам патрэбныя ключы распаўсюджвання і распрацоўкі iOS, створаныя ў падзеле Certificates, Identifiers & Profiles (Сертыфікаты, ідэнтыфікатары і профілі) у кансолі Apple Developer. Усе гэтыя сертыфікаты можна аб'яднаць у профілі ініцыялізацыі.
Карыстачам, якія будуць праходзіць аўтэнтыфікацыю, патрэбная магчымасць ствараць сертыфікаты, інакш на этапах.
Іншыя варыянты
Акрамя гэтага простага метаду, ёсць і іншыя спосабы наладзіць сертыфікаты і профілі. Так што, калі працуеце інакш, магчыма, давядзецца перабудоўвацца. Самае галоўнае - вам спатрэбіцца канфігурацыя .xcodebuild
, якая будзе паказваць на патрэбныя файлы, а звязак ключоў павінна быць даступная на кампутары зборкі для карыстальніка, пад чыім імем працуе раннер. Для лічбавага подпісу мы выкарыстоўваем fastlane, і калі ёсць праблемы ці вы хочаце даведацца больш, вывучыце іх падрабязную
У гэтым прыкладзе я выкарыстоўваю падыход
Падрыхтоўка GitLab і fastlane
Падрыхтоўка CI Runner
Сабраўшы ўсе гэтыя дадзеныя, пераходзім да канфігурацыі GitLab-Раннер на прыладзе 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 павінна быць наладжана на гэтым хасце з доступам да ключоў, якія патрэбныя Xcode для зборкі. Самы просты спосаб гэта пратэставаць - увайсці як карыстач, які запусціць зборку, і паспрабаваць выканаць зборку ўручную. Калі сістэма запытае доступ да звязку ключоў, абярыце "Заўсёды дазваляць", каб CI працаваў. Магчыма, варта ўвайсці і паназіраць за першай парай пайплайнаў, - пераканацца, што яны больш не просяць звязкі ключоў. Бяда ў тым, што Apple не спрашчае нам працу з аўтаматычным рэжымам, але калі вы яго наладзіце, усё будзе нармальна.
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 і 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
Для аўтэнтыфікацыі ў App Store і загрузкі ў TestFlight патрэбна аўтэнтыфікацыя для fastlane. Для гэтага стварыце пароль для прыкладання, які будзе выкарыстоўвацца ў CI. Падрабязнасці
Калі ў вас двухфактарная аўтэнтыфікацыя, стварыце зменную FASTLANE_SESSION
(інструкцыі там жа).
FASTLANE_USER
и FASTLANE_PASSWORD
Каб FASTLANE_USER
и FASTLANE_PASSWORD
. Падрабязнасці
У заключэнне
Паглядзець, як усё гэта працуе, можна
Спадзяюся, гэта было карысна, і я натхніў вас працаваць са зборкамі iOS у праекце GitLab. Вось яшчэ CI_BUILD_ID
(для інкрыментных зборак), каб
Яшчэ адна крутая магчымасць fastlane
Раскажыце ў каментарах аб сваім досведзе і падзяліцеся ідэямі па паляпшэнні GitLab для распрацоўкі прыкладанняў iOS.
Крыніца: habr.com