
Jak GitLab s fastlane vytváří, podepisuje a publikuje aplikace pro iOS v App Store.
Nedávno jsme měli s GitLab a . Zde uvidíme, jak vytvořit a spustit aplikaci iOS a publikovat ji na TestFlight. Podívejte se, jak skvělé , vezmu sestavení a dostanu aktualizaci testovací verze aplikace na tom samém iPadu Pro, na kterém jsem ji vyvinul.
Zde vezmeme , se kterou jsem natáčel video.
Pár slov o konfiguraci Apple Store
Budeme potřebovat aplikaci v App Store, distribuční certifikáty a iniciační profil, abychom všechno spojili.
Nejvíce komplikované je nastavit práva na podepisování v App Store. Doufám, že s tím si poradíte sami. Pokud jste nováček, ukážu vám správný směr, ale zde nebudeme mluvit o jemnostech správy certifikátů Apple, které se navíc neustále mění. Tento příspěvek pomůže s nástupem do věci.
Moje aplikace
Potřebujete aplikaci v App Store Connect, abyste měli ID pro konfiguraci .xcodebuild. Profil a ID aplikace spojují sestavení kódu, ceny a dostupnost, a také konfiguraci TestFlight pro distribuci testovacích aplikací mezi uživateli. Nedělejte veřejné testování, stačí soukromé, pokud máte malou skupinu, jednoduché nastavení a nepotřebujete další oprávnění od Apple.
Iniciační profil
Kromě nastavení aplikace potřebujete distribuční a vývojové klíče iOS vytvořené v sekci Certificates, Identifiers & Profiles (Certifikáty, identifikátory a profily) v konzoli Apple Developer. Všechny tyto certifikáty lze spojit v iniciačním profilu.
Uživatelé, kteří budou procházet autentizací, potřebují možnost vytvářet certifikáty, jinak na krocích uvidíte chybu.
Jiné možnosti
Kromě této jednoduché metody existují i jiné způsoby, jak nastavit certifikáty a profily. Pokud pracujete jinak, možná budete muset přestavět. Nejvíce důležité je, že budete potřebovat konfiguraci .xcodebuild, která bude odkazovat na potřebné soubory, a klíčový řetězec musí být dostupný na počítači, kde probíhá sestavení, pro uživatele, pod jehož jménem běží něco. Pro digitální podpis používáme fastlane, a pokud máte problémy nebo se chcete dozvědět více, podívejte se na jejich podrobné .
V tomto příkladu používám přístup , ale pro skutečné použití by asi bylo lepší použít .
Příprava GitLab a fastlane
Příprava CI Runner
Po shromáždění všech těchto dat přejděte k konfiguraci GitLab runnera na zařízení MacOS. Bohužel, aplikace iOS se skutečně dají vytvářet pouze na MacOS. Ale všechno se může změnit, a pokud čekáte na pokroky v této oblasti, sledujte projekty jako a , a naši interní úlohu .
Nastavení runnera je velmi jednoduché. Sledujte aktuální .
Poznámka. Runner musí používat spouštěcí program shell. To je povinné pro sestavování iOS v macOS, aby fungoval přímo jako uživatel, a ne přes kontejnery. Pokud používáte shell, je sestavování a testování prováděno jménem uživatele runnera přímo na hostitelském stroji. To není tak bezpečné jako kontejnery, takže byste měli prostudovat , abyste nic nezmeškali.
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 startKlíčový řetězec Apple musí být nastaven na tomto hostu s přístupem ke klíčům, které potřebuje Xcode pro sestavení. Nejjednodušší způsob, jak to otestovat, je přihlásit se jako uživatel, který spustí sestavení, a pokusit se provést sestavení ručně. Pokud systém vyžaduje přístup k klíčovému řetězci, vyberte "Vždy povolit", aby CI fungovalo. Možná by stálo za to se přihlásit a sledovat prvních pár pipeline, abyste se ujistili, že už více nevyžadují klíčový řetězec. Problém je v tom, že Apple nám nezjednodušuje práci s automatickým módem, ale když jej nastavíte, všechno bude v pořádku.
fastlane init
Abyste mohli použít fastlane v projektu, spusťte fastlane init. Jen sledujte , zejména v části o , protože potřebujeme rychlé a předvídatelné spuštění přes automatizovaný CI kanál.
V adresáři projektu spusťte tyto příkazy:
xcode-select --install
sudo gem install fastlane -NV
# Alternativně pomocí Homebrew
# brew cask install fastlane
fastlane initfastlane požádá o základní konfiguraci a poté vytvoří v projektu složku fastlane se třemi soubory:
1. fastlane/Appfile
Tady není nic složitého. Jen zkontrolujte, že Apple ID a ID aplikace jsou uvedeny správně.
app_identifier("com.vontrance.flappybird") # Identifikátor balíčku vaší aplikace
apple_id("your-email@your-domain.com") # Vaše Apple e-mailová adresa2. fastlane/Fastfile
Fastfile definuje kroky sestavení. Používáme mnoho vestavěných funkcí fastlane, takže zde je to také jasné. Vytvoříme jeden řádek, který získává certifikáty, provádí sestavení a nahrává je do TestFlight. Můžete tento proces rozdělit na různé úkoly, pokud je to potřeba. Všechny tyto operace (get_certificates, get_provisioning_profile, gym a upload_to_testflight) jsou již součástí fastlane.
Akce get_certificates a get_provisioning_profile souvisejí s přístupem k podpisu . Pokud používáte nebo něco jiného, upravte to.
default_platform(:ios)
platform :ios do
desc "Sestavte aplikaci"
lane :flappybuild do
get_certificates
get_provisioning_profile
gym
upload_to_testflight
end
end3. fastlane/Gymfile
Je to volitelný soubor, ale vytvořil jsem ho ručně, abych změnil výchozí výstupní adresář a umístil výstupy do aktuální složky. To usnadňuje CI. Pokud vás to zajímá, přečtěte si o gym a jeho parametrech v .
https://docs.fastlane.tools/actions/gym/Naše .gitlab-ci.yml
Takže máme CI běžící pro projekt a jsme připraveni vyzkoušet pipeline. Podíváme se, co máme v .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.ipaVšechno skvělé! , používáme strategii clone s vykonávacím programem shell, abychom měli čistý pracovní prostor pro každé sestavení, a jednoduše voláme flappybuild fastlane, jak je vidět výše. V důsledku toho dostáváme sestavení, podpis a nasazení posledního sestavení do TestFlight.
Také získáváme artefakt a ukládáme ho se sestavením. Všimněte si, že formát .ipa — je podepsaný spustitelný soubor ARM, který nelze spustit v simulátoru. Pokud chcete výstupy pro simulátor, stačí přidat cílové sestavení, které je vyrábí, a pak je zahrnout do cesty k artefaktu.
Další proměnné prostředí
Zde je pár proměnných prostředí, na kterých vše funguje.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD a FASTLANE_SESSION
Pro autentifikaci v App Store a nahrání do TestFlight je potřeba autentifikace pro fastlane. K tomu vytvořte heslo aplikace, které bude použito v CI. Podrobnosti .
Pokud máte dvoufaktorovou autentifikaci, vytvořte proměnnou FASTLANE_SESSION (pokyny tam také).
FASTLANE_USER a FASTLANE_PASSWORD
Aby byly vyžadovány profily inicializace a certifikáty na vyžádání, je potřeba nastavit proměnné FASTLANE_USER a FASTLANE_PASSWORD. Podrobnosti . To není nutné, pokud používáte jinou metodu podepisování.
Na závěr
Podívejte se, jak to všechno funguje .
Doufám, že to bylo užitečné a inspiroval jsem vás k práci se sestaveními iOS v projektu GitLab. Tady je ještě pro fastlane, pro jistotu. Možná budete chtít použít CI_BUILD_ID (pro inkrementální sestavení), abyste .
Další skvělou funkcí fastlane je pro App Store, které se velmi snadno nastavují.
Podělte se v komentářích o své zkušenosti a o nápady na zlepšení GitLab pro vývoj aplikací iOS.
Zdroj: habr.com
