Publikujeme aplikácie iOS v App Store pomocou GitLab a fastlane.

Publikujeme aplikácie iOS v App Store pomocou GitLab a fastlane.

Ako GitLab s fastlane zostavuje, podpisuje a publikácia aplikácií pre iOS v App Store.

Nedávno sme mali príspevok o tom, ako rýchlo zostaviť a spustiť aplikáciu Android s GitLab a fastlane.Tu uvidíme, ako zostaviť a spustiť aplikáciu iOS a publikovať ju v TestFlight. Pozrite si, aké úžasné robím zmenu na iPade Pro s GitLab Web IDE, vezmem zostavenie a dostanem aktualizáciu testovacej verzie aplikácie na tom istom iPade Pro, kde som ju vyvinul.

Tu vezmeme jednoduchú aplikáciu pre iOS na Swift, s ktorou som nahrával video.

Pár slov o konfigurácii Apple Store

Potrebujeme aplikáciu v App Store, certifikáty distribúcie a profil inicializácie, aby sa všetko spojilo.

Najnáročnejšie je nastaviť práva na podpis v App Store. Dúfam, že s tým to zvládnete sami. Ak ste nováčik, ukážem vám správny smer, ale tu sa nebudeme rozprávať o nuansách správy certifikátov Apple, navyše sa neustále menia. Tento príspevok pomôže začať.

Moje aplikácie

Potrebujete aplikáciu v App Store Connect, aby ste mali ID pre konfiguráciu .xcodebuild. Profil a ID aplikácie spájajú zostavenia kódu, ceny a dostupnosť, a tiež konfiguráciu TestFlight pre distribúciu testovacích aplikácií medzi používateľmi. Nezverejňujte verejné testovanie, postačí aj súkromné, ak máte malú skupinu, jednoduché nastavenie a nepoužívate ďalšie oprávnenia od Apple.

Profil inicializácie

Okrem nastavenia aplikácie potrebujete certifikáty distribúcie a vývoja iOS vytvorené v sekcii Certificates, Identifiers & Profiles (Certifikáty, identifikátory a profily) v konzole Apple Developer. Všetky tieto certifikáty môžete spojiť v profile inicializácie.

Používateľom, ktorí sa budú autentifikovať, je potrebné umožniť vytváranie certifikátov, inak na etapách cert a sigh uvidíte chybu.

Iné možnosti

Okrem tejto jednoduchej metódy existujú aj iné spôsoby, ako nastaviť certifikáty a profily. Takže, ak pracujete inak, možno budete musieť prestavať. Najdôležitejšie je, že budete potrebovať konfiguráciu .xcodebuild, ktorá bude odkazovať na potrebné súbory, a kľúčová reťaz musí byť prístupná na počítači zostavenia pre používateľa, pod ktorým menom beží runner. Pre digitálny podpis používame fastlane, a ak sú nejaké problémy alebo chcete vedieť viac, preskúmajte ich podrobnosti. dokumentáciu o digitálnych podpisoch.

V tomto príklade používam prístup cert a sigh, ale na reálne použitie sa pravdepodobne viac hodí match.

Príprava GitLab a fastlane

Príprava CI Runner

Po zhromaždení všetkých týchto údajov prejdeme k konfigurácii GitLab runnera na zariadení MacOS. Našťastie, vyvíjať aplikácie iOS je možné len na MacOS. Ale všetko sa môže zmeniť, a ak čakáte na zmeny v tejto oblasti, sledujte projekty, ako napríklad xcbuild a isign, a našu internú úlohu gitlab-ce#57576.

Nastavenie runnera je veľmi jednoduché. Postupujte podľa aktuálnych inštrukcií na nastavenie GitLab Runner na macOS.

Poznámka. Runner musí používať spustiteľný program shell. To je nevyhnutné pre zostavenie iOS na macOS, aby pracoval priamo ako používateľ, a nie prostredníctvom kontajnerov. Ak používate shell, zostavenie a testovanie sa vykonávajú v mene používateľa runnera priamo na hostiteľovi zostavenia. To nie je tak bezpečné ako kontajnery, takže sa radšej pozrite na dokumentáciu o bezpečnosti, aby ste nič 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

Kľúčová väzba Apple by mala byť nastavená na tomto hoste s prístupom k kľúčom, ktoré potrebuje Xcode na zostavenie. Najjednoduchší spôsob, ako to otestovať, je prihlásiť sa ako používateľ, ktorý spustí zostavenie, a pokúsiť sa vykonať zostavenie ručne. Ak systém požiada o prístup k kľúčovej väzbe, vyberte "Vždy povoliť", aby CI fungovalo. Možno stojí za to sa prihlásiť a sledovať prvé pár pipeline, aby ste sa uistili, že už viac nepožadujú kľúčovú väzbu. Problém je, že Apple nám nejednoduší prácu s automatickým režimom, ale keď ho nastavíte, všetko bude v poriadku.

fastlane init

Aby ste mohli používať fastlane v projekte, spustite fastlane init. Jednoducho postupujte podľa inštrukcií na inštaláciu a spustenie fastlane, najmä v sekcii o Gemfile, pretože potrebujeme rýchle a predvídateľné spúšťanie cez automatický CI kanál.

V priečinku projektu spustite tieto príkazy:

xcode-select --install
sudo gem install fastlane -NV
# Alternatívne pomocou Homebrew
# brew cask install fastlane
fastlane init

fastlane požaduje základnú konfiguráciu a potom vytvorí v projekte priečinok fastlane s tromi súbormi:

1. fastlane/Appfile

Tu nie je nič zložité. Stačí skontrolovať, či sú Apple ID a ID aplikácie zadané správne.

app_identifier("com.vontrance.flappybird") # Identifikátor balíčka vašej aplikácie
apple_id("your-email@your-domain.com") # Vaša Apple e-mailová adresa

2. fastlane/Fastfile

Fastfile definuje kroky zostavy. Používame množstvo vstavaných funkcií fastlane, takže aj tu je všetko jasné. Vytvoríme jednu líniu, ktorá získa certifikáty, vykoná zostavenie a nahrá ho do TestFlight. Môžete tento proces rozdeliť na rôzne úlohy, ak potrebujete. Všetky tieto operácie (get_certificates, get_provisioning_profile, gym a upload_to_testflight) sú už zahrnuté vo fastlane.

Akcie get_certificates a get_provisioning_profile súvisia s prístupom k podpisovaniu cert a sigh. Ak používate match alebo niečo iné, vykonajte zmeny.

default_platform(:ios)

platform :ios do
  desc "Zostavte aplikáciu"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Je to voliteľný súbor, ale vytvoril som ho ručne, aby som zmenil predvolený výstupný adresár a umiestnil výstupy do aktuálneho priečinka. To uľahčuje CI. Ak vás to zaujíma, čítajte o gym a jeho parametroch v dokumenácie.

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

Naša .gitlab-ci.yml

Takže máme CI-bežca pre projekt a sme pripravení vyskúšať pipeline. Pozrime sa, čo 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šetko je skvelé! Nastavujeme formát UTF-8 pre fastlane, ako je požadované, používame stratégiu klon s vykonateľným programom shell, aby sme mali čistý pracovný priestor pre každé zostavenie, a jednoducho voláme flappybuild fastlane, ako je vidieť vyššie. Nakoniec dostaneme zostavenie, podpis a nasadenie poslednej zostavy do TestFlight.

Získavame aj artefakt a uchovávame ho so zostavením. Všimnite si, že formát .ipa — je to podpísaný vykonateľný súbor ARM, ktorý sa nespustí v simulátore. Ak chcete výstup pre simulátor, jednoducho pridajte cieľ zostavenia, ktorý ho generuje, a potom ho zahrňte do cesty k artefaktu.

Ďalšie premenné prostredia

Tu je pár premenných prostredia, na ktorých všetko funguje.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD a FASTLANE_SESSION

Na autentifikáciu v App Store a nahrávanie do TestFlight je potrebná autentifikácia pre fastlane. Na to vytvorte heslo pre aplikáciu, ktoré sa bude používať v CI. Podrobnosti tu.

Ak máte dvojfaktorovú autentifikáciu, vytvorte premennú FASTLANE_SESSION (pokyny tam sú).

FASTLANE_USER a FASTLANE_PASSWORD

Aby cert a sigh vyžiadali profil inicializácie a certifikáty na požiadanie, potrebujete nastaviť premenné FASTLANE_USER a FASTLANE_PASSWORD. Podrobnosti tu. To nie je potrebné, ak používate inú metódu podpisovania.

Na záver

Pozrite sa, ako to všetko funguje v mojej jednoduchéj ukážke.

Dúfam, že to bolo užitočné a inšpiroval som vás pracovať so zostavami iOS v projekte GitLab. Tu je ešte niekoľko tipov na CI pre fastlane, pre každý prípad. Možno budete chcieť použiť CI_BUILD_ID (pre inkrementálne zostavy), aby automaticky zvyšoval verziu.

Ešte jedna skvelá funkcia fastlane je automatické snímky obrazovky pre App Store, ktoré sa veľmi jednoducho nastavujú.

Podeľte sa v komentároch o svoju skúsenosť a navrhnite nápady na zlepšenie GitLab pre vývoj aplikácií iOS.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster