Automatický release iOS aplikací pomocí Bitrise a Fastlane
8. 9. 2022 | Marcel, iOS developer z Dactyl GroupAutomatizujte a zrychlujte! V tomto článku se zaměříme na službu Bitrise a především na její využití ve spojení s nástrojem Fastlane. Vysvětlíme si, o co se jedná a pečlivě vás navedeme nastavením pro testování, sestavení i publikaci iOS aplikace.
Článek pozvolna navazuje na náš předchozí blog o Fastlane. Pokud ještě nevíte, o co běží, určitě se mrkněte. V následujících řádcích už totiž počítáme s plně funkčním Fastlane v existujícím projektu.
Co je to Bitrise?
Bitrise je služba otevírající dveře bezmezným možnostem v oblasti CI (continuous integration) a CD (continuous delivery). Dnes už se jedná o neodmyslitelnou součást každého iterativního vývoje. Díky kombinaci CI/CD mohou vývojové týmy spolehlivěji a rychleji vydávat nové verze aplikací jak pro testování, tak i do produkčního prostředí.
Bitrise umožňuje velmi rychlou integraci CI/CD do existujících projektů přes příjemné webové prostředí. V případě potřeby lze službu také zprovoznit přímo na vlastním serveru pomocí dostupných CLI nástrojů. Bitrise také umožňuje aplikace flexibilně testovat, archivovat a publikovat bez ohledu na nástroje využité k vývoji.
My si představíme použití této služby především pro potřeby iOS projektů.
Začínáme! Založení projektu a nastavení SSH klíče
Jako základ si vytvoříme Bitrise projekt a spárujeme ho s repozitářem, ve kterém se náš projekt nachází. Úvodní nastavení si můžeme usnadnit propojením Bitrise účtu s některou z populárních Git služeb, jako je například GitLab či GitHub. Můžeme si tak vybrat konkrétní repozitář bez potřeby manuální konfigurace.
Aby Bitrise získal k repozitáři přístup, musíme nejprve nastavit přístupový SSH klíč. Pokud má propojený Git účet k repozitáři administrativní přístup, služba Bitrise se o nastavení SSH klíče dokáže postarat sama. Pokud ho ale nemá, je nutné si svůj vlastní SSH klíč vytvořit a přidat ho jak na naši Git službu, tak i na Bitrise.
Nastavení vlastního SSH klíče se nevyhneme ani v případě, že se náš projekt skládá z několika repozitářů (např. Git submodulů). V takovém případě potřebujeme SSH klíč, který má přístup do všech potřebných repozitářů.
Bitrise během samotného vytvoření automaticky detekuje typ projektu (např. iOS nebo Android) a poskytne nám základní konfiguraci, která obsahuje testování i sestavení aplikace. Následně si vše můžeme upravit podle našich potřeb.
Code Signing
Jelikož se nacházíme v prostředí iOS, musíme před další konfigurací Bitrise projektu vyřešit otázku podepisování aplikace. K dispozici máme sice hned několik způsobů, nejjednodušší je ale využít Xcode a volbu automatického podepisování v kombinaci s přístupem do App Store Connect pomocí API klíče. K tomu budeme potřebovat následující:
- App Store Connect API klíč s oprávněním Admin
- Certifikát vhodný pro export aplikace do TestFlight
Návod na získání a zprovoznění App Store Connect klíče je dostupný přímo v dokumentaci Bitrise. Správu vývojářských certifikátů nám výrazně usnadní nástroj Fastlane match, který dokáže zpřístupnit potřebné certifikáty přímo v naší Keychain. Správný certifikát vyexportujeme jako soubor P12 a v sekci Code Signing ho nahrajeme na Bitrise.
Pokud v Xcode využíváte manuální nastavení podepisování, musíte na Bitrise nahrát společně s certifikátem i potřebné provisioning profily.
Workflows
Bitrise nám na hostitelském stroji dovoluje spustit téměř vše, co potřebujeme. Základním stavebním kamenem jsou ovšem tzv. kroky, které si sami zvolíme podle potřeb aktuálního projektu. V nabídce najdeme široký výběr často využívaných kroků, proto obvykle není nutné psát vlastní script pro běžné situace spojené s vývojem aplikací.
Vlastní krok si ale v případě potřeby můžete vytvořit a následně ho i sdílet s Bitrise komunitou.
Jednotlivé kroky splňují vždy pouze jeden úkol, proto je zpravidla potřeba jich k dosažení cíle využít rovnou několik. Výsledný celek – tzv. workflow – je tak v konečném důsledku poskládaný a nastavený udělat vše, co po něm potřebujeme.
Je načase se podívat, jak se vytváří workflow pro automatické sestavení, testování a publikaci iOS aplikace na TestFlight. Bitrise nám už při úvodní konfiguraci vytvořil ukázkový workflow a my ho použijeme jako základ pro náš vlastní. Pojmenujeme si ho jako TestFlight.
Nastavení workflow: Git repozitář a aktivace SSH klíče
Většinu původních kroků v nově vytvořeném workflow smažeme a ponecháme pouze Activate SSH key a Git Clone Repository, které jsou nezbytné pro stáhnutí našeho projektu na Bitrise stroj.
Instalace CocoaPods
Pokud v projektu využíváme CocoaPods, nesmíme také zapomenout na jejich instalaci. K tomu nám pomůže krok s názvem Run CocoaPods install.
Spuštění unit testů
Než se pustíme do archivace a publikace beta verze naší aplikace do TestFlight, je nejprve vhodné spustit sadu unit a případně také UI testů. Automatizované testování zajistí, že každá nová verze nebude mít v aplikaci narušené klíčové části. My tak nemusíme trávit tolik času manuálním testováním – samozřejmě pouze za předpokladu, že jsou testy správně napsané.
Tento krok vyžaduje několik vstupních parametrů. Patří sem například Xcode schéma a projekt použitý při testování. Hodnoty pro tyto parametry si můžeme definovat jako proměnné v záložce Env Vars.
Archivace a publikace
Určitě nechceme publikovat jakoukoliv verzi aplikace, u které testy odhalily nějaké mouchy. Zamezíme tomu jednoduše. Ujistíme se, že jsme u všech dalších kroků vypnuli možnost Run if previous Step failed.
Pokud testování proběhne bez problémů, můžeme jásat a přejít k archivaci aplikace.
Pro naše účely použijeme Fastlane, který jsme si nastavili už dříve. Pokud v Xcode využíváme volbu automatického podepisování, je nejprve nutné zajistit dostupnost provisioning profilů na stroji, kde náš workflow poběží. K tomu nám poslouží krok Manage iOS Code Signing, který nakonfigurujeme tak, aby využíval náš dříve přidaný App Store Connect API klíč.
Následně přidáme krok Set Xcode Project Build Number. Zvýšíme tím build verzi pro nadcházející archivaci a také vytvoříme prostor pro bezproblémové přijetí aplikace na TestFlight.
Konečně se dostáváme do finiše. Zbývá nám už pouze spustit lane dle našeho výběru pomocí kroku Fastlane a je hotovo. Jednoduše, přehledně, a hlavně efektivně.
Webhook
Velké kouzlo CI/CD služby nepochybně spočívá v pohodlné automatizaci, kterou nám přináší. Abychom se po úvodním nastavení vyhnuli dalšímu zbytečnému manuálnímu zásahu, doporučujeme ještě nastavit Webhook. Ten našemu řešení zajistí automatické spuštění specifických workflows po vybrané akci v našem repozitáři (např. push do dev větve). Jak si ho nastavit pro vaši Git službu najdete přehledně na webu Bitrise.
Článek pro vás připravil Marcel, iOS developer z Dactyl Group.