Publikujeme aplikace iOS v App Store pomocí GitLab a fastlane

Publikujeme aplikace iOS v App Store pomocí GitLab a fastlane

Jak GitLab s fastlane vytváří, podepisuje a publikuje aplikace pro iOS v App Store.

Nedávno jsme měli příspěvek o tom, jak rychle vytvořit a spustit aplikaci Android s GitLab a fastlane. Zde uvidíme, jak vytvořit a spustit aplikaci iOS a publikovat ji na TestFlight. Podívejte se, jak skvělé činím změnu na iPadu Pro s GitLab Web IDE, vezmu sestavení a dostanu aktualizaci testovací verze aplikace na tom samém iPadu Pro, na kterém jsem ji vyvinul.

Zde vezmeme jednoduchou aplikaci pro iOS na Swift, 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 cert a sigh 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é dokumentaci o digitálních podpisích.

V tomto příkladu používám přístup cert a sigh, ale pro skutečné použití by asi bylo lepší použít match.

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 xcbuild a isign, a naši interní úlohu gitlab-ce#57576.

Nastavení runnera je velmi jednoduché. Sledujte aktuální pokyny pro nastavení GitLab Runner v macOS.

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 dokumentaci o bezpečnosti, 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 start

Klíč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 pokyny pro instalaci a spuštění fastlane, zejména v části o Gemfile, 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 init

fastlane 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á adresa

2. 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 cert a sigh. Pokud používáte match 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
end

3. 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 dokumentaci.

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.ipa

Všechno skvělé! Nastavujeme formát UTF-8 pro fastlane, jak se požaduje, 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 zde.

Pokud máte dvoufaktorovou autentifikaci, vytvořte proměnnou FASTLANE_SESSION (pokyny tam také).

FASTLANE_USER a FASTLANE_PASSWORD

Aby cert a sigh 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 zde. To není nutné, pokud používáte jinou metodu podepisování.

Na závěr

Podívejte se, jak to všechno funguje v mém jednoduchém příkladu.

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ě několik tipů na CI pro fastlane, pro jistotu. Možná budete chtít použít CI_BUILD_ID (pro inkrementální sestavení), abyste automaticky zvyšovali verzi.

Další skvělou funkcí fastlane je automatické snímky obrazovky 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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster