Publikování aplikací pro iOS do App Store pomocí GitLab a fastlane

Publikování aplikací pro iOS do App Store pomocí GitLab a fastlane

Jak GitLab s fastlane shromažďuje, 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 pro Android s GitLab a fastlane. Zde uvidíme, jak vytvořit a spustit aplikaci pro iOS a publikovat ji na TestFlight. Podívejte se, jak cool Provádím změnu na iPadu Pro s GitLab Web IDE, vezmu sestavení a získám aktualizaci na testovací verzi aplikace na stejném iPadu Pro, kde jsem ji vyvinul.

Tady bereme jednoduchá aplikace pro iOS ve Swiftuse kterým jsem natočil video.

Pár slov o konfiguraci Apple Store

Potřebujeme aplikaci v App Storu, distribuční certifikáty a zřizovací profil, abychom vše spojili dohromady.

Nejobtížnější je zde nastavit oprávnění k podpisu v App Store. Doufám, že na to přijdete sami. Pokud jste noví, nasměruji vás správným směrem, ale nebudeme se zde bavit o složitosti správy certifikátů Apple a neustále se mění. Tento příspěvek vám pomůže začít.

Moje aplikace

Potřebujete aplikaci v App Store Connect, abyste měli ID ke konfiguraci .xcodebuild. Profil aplikace a ID kombinují sestavení kódu, cenu a dostupnost a konfiguraci TestFlight pro distribuci testovacích aplikací uživatelům. Nedělejte veřejné testování, soukromé testování stačí, pokud máte malou skupinu, jednoduché nastavení a nepotřebujete další oprávnění od Applu.

Profil poskytování

Kromě nastavení aplikace potřebujete distribuční a vývojové klíče iOS vytvořené v části Certifikáty, identifikátory a profily v Apple Developer Console. Všechny tyto certifikáty lze kombinovat v zřizovacím profilu.

Uživatelé, kteří budou autentizováni, potřebují možnost vytvářet certifikáty, jinak se postupuje podle kroků cert a povzdech uvidíte chybu.

další možnosti

Kromě této jednoduché metody existují další způsoby, jak nastavit certifikáty a profily. Pokud tedy pracujete jinak, možná se budete muset přenastavit. Nejdůležitější je, že budete potřebovat konfiguraci .xcodebuild, který bude ukazovat na potřebné soubory, a klíčenka musí být dostupná na sestavení počítači pro uživatele, pod jehož jménem běžec běží. Pro digitální podepisování používáme fastlane, a pokud máte problémy nebo chcete vědět více, podívejte se na jejich podrobné informace dokumentace digitálního podpisu.

V tomto příkladu používám přístup cert a povzdech, ale pro reálné použití se asi hodí lépe zápas.

Příprava GitLab a fastlane

Příprava CI Runner

Po shromáždění všech těchto dat přejdeme ke konfiguraci běhu GitLab na zařízení MacOS. Bohužel vytváření aplikací pro iOS je možné pouze na MacOS. Vše se ale může změnit, a pokud čekáte pokrok v této oblasti, sledujte projekty jako xcbuild и designa náš vnitřní úkol gitlab-ce#57576.

Nastavení běhounu je velmi snadné. Sledujte aktuální pokyny pro nastavení GitLab Runner na macOS.

Poznámka. Běžec musí použít spouštěcí program shell. Je povinné sestavit iOS na macOS, aby fungoval přímo jako uživatel a ne prostřednictvím kontejnerů. Pokud používáte shell, sestavení a testování se provádí jako běžecký uživatel přímo na hostiteli sestavení. Není to tak bezpečné jako kontejnery, takže raději otočte bezpečnostní dokumentaceaby vám nic neuniklo.

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 musí být nastaven na tomto hostiteli s přístupem ke klíčům, které Xcode potřebuje sestavit. Nejjednodušší způsob, jak to otestovat, je přihlásit se jako uživatel, který spustí sestavení, a zkusit sestavení ručně. Pokud systém požádá o přístup ke klíčence, vyberte „Vždy povolit“, aby CI fungovalo. Možná by stálo za to jít dovnitř a podívat se na první pár potrubí, abyste se ujistili, že už nebudou chtít klíčenku. Potíž je v tom, že nám Apple neusnadňuje práci s automatickým režimem, ale když si ho nastavíte, bude vše v pořádku.

fastlane init

Chcete-li v projektu použít fastlane, spusťte fastlane init. Prostě následuj pokyny pro instalaci a provoz fastlanezejména v části o gemfile, protože potřebujeme rychlé a předvídatelné spuštění prostřednictvím automatického kanálu CI.

V adresáři projektu spusťte tyto příkazy:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

fastlane si vyžádá základní konfiguraci a poté v projektu vytvoří složku fastlane se třemi soubory:

1. fastlane/Appfile

Není tu nic složitého. Jen se ujistěte, že vaše Apple ID a App ID jsou správné.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile definuje kroky sestavení. Používáme spoustu vestavěných funkcí fastlane, takže i zde je vše jasné. Vytvoříme jednu linku, která obdrží certifikáty, sestaví a nahraje ji do TestFlight. V případě potřeby můžete tento proces rozdělit na různé úkoly. Všechny tyto operaceget_certificates, get_provisioning_profile, gym и upload_to_testflight) jsou již součástí fastlane.

Činnost get_certificates и get_provisioning_profile spojené s přístupem k podpisu cert a povzdech. Pokud používáte zápas nebo něco jiného, ​​proveďte změny.

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

Toto je volitelný soubor, ale vytvořil jsem jej ručně, abych změnil výchozí výstupní adresář a vložil výstup do aktuální složky. To zjednodušuje CI. Máte-li zájem, přečtěte si o gym a jeho parametry v dokumentace.

https://docs.fastlane.tools/actions/gym/

Naše .gitlab-ci.yml

Takže pro projekt máme CI runner a jsme připraveni otestovat potrubí. Podívejme se, co máme .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

Vynikající! Podle potřeby jsme nastavili formát UTF-8 pro fastlane, používáme strategii clone se spuštěným programem shellabychom měli čistý pracovní prostor pro každou stavbu a stačí zavolat flappybuild fastlane, jak je vidět výše. Výsledkem je sestavení, podpis a nasazení nejnovějšího sestavení v TestFlight.

Získáme také artefakt a uložíme ho s montáží. Všimněte si, že formát .ipa je podepsaný spustitelný soubor ARM, který nelze spustit v simulátoru. Pokud chcete výstup simulátoru, stačí přidat cíl sestavení, který jej vytváří, a poté jej zahrnout do cesty artefaktu.

Další proměnné prostředí

Existuje zde několik proměnných prostředí, na kterých vše funguje.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

K ověření v App Store a nahrání do TestFlight potřebujete ověření pro fastlane. Chcete-li to provést, vytvořte heslo aplikace, které se bude používat v CI. Podrobnosti zde.

Pokud máte dvoufaktorové ověřování, vytvořte proměnnou FASTLANE_SESSION (tam je návod).

FASTLANE_USER и FASTLANE_PASSWORD

Že cert a povzdech s názvem inicializační profil a certifikáty na vyžádání, je třeba nastavit proměnné FASTLANE_USER и FASTLANE_PASSWORD. Podrobnosti zde. Toto není potřeba, pokud používáte jinou metodu podepisování.

Konečně,

Můžete se podívat, jak to celé funguje v mém jednoduchém příkladu.

Doufám, že to bylo užitečné a inspirovalo vás k práci s iOS buildy v projektu GitLab. Tady je další CI tipy pro fastlane, pro každý případ. Možná budete chtít použít CI_BUILD_ID (pro přírůstkové sestavení) do verze s automatickým přírůstkem.

Další skvělou vlastností fastlane je automatické snímky obrazovky pro App Store, které lze velmi snadno nastavit.

Sdělte nám své zkušenosti v komentářích a podělte se o nápady na vylepšení GitLabu pro vývoj aplikací pro iOS.

Zdroj: www.habr.com

Přidat komentář