Publikovanie aplikácií pre iOS v App Store pomocou GitLab a fastlane

Publikovanie aplikácií pre iOS v App Store pomocou GitLab a fastlane

Ako GitLab s fastlane zhromažďuje, podpisuje a publikuje iOS aplikácie v App Store.

Nedávno sme mali príspevok o tom, ako rýchlo vytvoriť a spustiť aplikáciu pre Android s GitLab a rýchly pruh. Tu uvidíme, ako vytvoriť a spustiť aplikáciu pre iOS a zverejniť ju na TestFlight. Pozrite sa, aké je to cool Robím zmenu na iPad Pro s GitLab Web IDE, beriem zostavu a dostanem aktualizáciu na testovaciu verziu aplikácie na tom istom iPade Pro, kde som ju vyvinul.

Tu si vezmeme jednoduchá aplikácia pre iOS na Swift, s ktorým som natáčal video.

Niekoľko slov o konfigurácii Apple Store

Budeme potrebovať aplikáciu App Store, distribučné certifikáty a profil poskytovania, aby sme všetko spojili.

Najťažšie je tu nastavenie podpisových práv v App Store. Dúfam, že na to prídete sami. Ak ste nový, nasmerujem vás správnym smerom, ale nebudeme sa tu baviť o zložitosti správy certifikátov Apple, ktorá sa neustále mení. Tento príspevok vám pomôže začať.

Moje aplikácie

Potrebujete aplikáciu v App Store Connect, aby ste mali ID na konfiguráciu .xcodebuild. Profil a ID aplikácie kombinujú zostavy kódu, ceny a dostupnosť a konfiguráciu TestFlight na distribúciu testovacích aplikácií používateľom. Nerobte verejné testovanie, súkromné ​​testovanie bude stačiť, ak máte malú skupinu, jednoduché nastavenie a nepotrebujete ďalšie povolenia od Apple.

Inicializačný profil

Okrem nastavenia aplikácie potrebujete distribučné a vývojové kľúče iOS vytvorené v sekcii Certifikáty, identifikátory a profily v konzole Apple Developer. Všetky tieto certifikáty je možné skombinovať do profilu poskytovania.

Používatelia, ktorí budú autentifikovaní, musia mať možnosť vytvárať certifikáty, inak postupujte podľa krokov cert a povzdych uvidíte chybu.

ďalšie možnosti

Okrem tejto jednoduchej metódy existujú aj iné spôsoby konfigurácie certifikátov a profilov. Ak teda pracujete inak, možno sa budete musieť prispôsobiť. Najdôležitejšia vec je, že potrebujete konfiguráciu .xcodebuild, ktorý bude ukazovať na potrebné súbory a kľúčenka musí byť dostupná na zostavovacom počítači pre používateľa, pod menom ktorého bežec beží. Pre digitálny podpis používame fastlane a ak sa vyskytnú problémy alebo sa chcete dozvedieť viac, pozrite si ich podrobnosti dokumentáciu o digitálnych podpisoch.

V tomto príklade používam prístup cert a povzdych, ale na skutočné použitie je pravdepodobne vhodnejší zápas.

Príprava GitLab a fastlane

Príprava CI Runner

Po zhromaždení všetkých týchto údajov prejdeme ku konfigurácii bežca GitLab na zariadení MacOS. Bohužiaľ, aplikácie pre iOS môžete vytvárať iba na MacOS. Všetko sa však môže zmeniť a ak očakávate pokrok v tejto oblasti, sledujte projekty ako xcbuild и znameniea našou vnútornou úlohou gitlab-ce#57576.

Nastavenie bežca je veľmi jednoduché. Sledujte prúd pokyny na nastavenie GitLab Runner v systéme macOS.

Poznámka. Bežec musí použiť spustiteľný program shell. Je to potrebné na zostavenie systému iOS na macOS, aby fungoval priamo ako používateľ a nie prostredníctvom kontajnerov. Ak používate shellzostavovanie a testovanie sa vykonáva ako používateľ runner, priamo na hostiteľovi zostavy. Nie je to také bezpečné ako kontajnery, takže je lepšie prehľadávať bezpečnostnú dokumentáciuaby vám nič neušlo.

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í byť na tomto hostiteľovi nakonfigurovaný s prístupom ku kľúčom, ktoré Xcode potrebuje na zostavenie. Najjednoduchší spôsob, ako to otestovať, je prihlásiť sa ako používateľ, ktorý spustí zostavenie a pokúsiť sa ho zostaviť manuálne. Ak systém požiada o prístup ku kľúčenke, vyberte možnosť Vždy povoliť, aby CI fungovala. Možno by stálo za to ísť dnu a pozrieť si prvých pár potrubí, aby ste sa uistili, že už nebudú pýtať kľúčenku. Problém je v tom, že Apple nám neuľahčuje používanie automatického režimu, ale keď ho spustíte, všetko bude v poriadku.

fastlane init

Ak chcete použiť fastlane v projekte, spustite fastlane init. Stačí nasledovať pokyny na inštaláciu a prevádzku fastlane, najmä v časti o Gemfile, pretože potrebujeme rýchle a predvídateľné spustenie prostredníctvom automatizovaného kanála CI.

V adresári projektu spustite tieto príkazy:

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

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

1. fastlane/Appfile

Nie je tu nič zložité. Len sa uistite, že vaše Apple ID a App ID sú správne.

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 zostavenia. Používame veľa vstavaných funkcií fastlane, takže aj tu je všetko jasné. Vytvoríme jednu linku, ktorá dostane certifikáty, vykoná montáž a nahrá ju do TestFlight. V prípade potreby môžete tento proces rozdeliť na rôzne úlohy. Všetky tieto operácie (get_certificates, get_provisioning_profile, gym и upload_to_testflight) sú už zahrnuté v fastlane.

Činnosť get_certificates и get_provisioning_profile súvisiace s prístupom k podpisovaniu cert a povzdych. Ak používate zápas alebo čokoľvek, urobte zmeny.

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 voliteľný súbor, ale vytvoril som ho manuálne, aby som zmenil predvolený výstupný adresár a umiestnil výstup do aktuálneho priečinka. To zjednodušuje CI. Ak máte záujem, prečítajte si o gym a jeho parametre v dokumentáciu.

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

Naše .gitlab-ci.yml

Takže máme CI runner pre projekt a sme pripravení otestovať plynovod. Pozrime sa, čo v sebe 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

Все отлично! Pre fastlane sme podľa potreby nastavili formát na UTF-8, použite stratégiu clone s vykonávaním programu shell, aby sme mali na každú montáž čistý pracovný priestor a jednoducho zavolajte flappybuild fastlane, ako je vidieť vyššie. Výsledkom je zostavenie, podpis a nasadenie najnovšej zostavy v TestFlight.

Získame aj artefakt a uložíme ho s montážou. Upozorňujeme, že formát .ipa je podpísaný spustiteľný súbor ARM, ktorý sa nespúšťa v simulátore. Ak chcete výstup pre simulátor, stačí pridať cieľ zostavenia, ktorý ho vytvára, a potom ho zahrnúť do cesty artefaktu.

Ďalšie premenné prostredia

Existuje niekoľko premenných prostredia, vďaka ktorým všetko funguje.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Overenie pre fastlane je potrebné na overenie v App Store a nahranie do TestFlight. Za týmto účelom vytvorte heslo pre aplikáciu, ktorá sa bude používať v CI. Podrobnosti tu.

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

FASTLANE_USER и FASTLANE_PASSWORD

Že cert a povzdych s názvom inicializačný profil a certifikáty na požiadanie, je potrebné nastaviť premenné FASTLANE_USER и FASTLANE_PASSWORD. Podrobnosti tu. Toto nie je potrebné, ak používate iný spôsob podpisovania.

na záver

Môžete vidieť, ako to celé funguje v mojom jednoduchom príklade.

Dúfam, že to bolo užitočné a inšpirovalo vás to k práci so zostavami iOS v projekte GitLab. Tu je ďalší CI tipy pre fastlane, pre každý prípad. Možno budete chcieť použiť CI_BUILD_ID (pre prírastkové zostavy) do automaticky zvyšovať verziu.

Ďalšou skvelou vlastnosťou fastlane je automatické snímky obrazovky pre App Store, ktorých nastavenie je veľmi jednoduché.

Povedzte nám v komentároch o svojich skúsenostiach a podeľte sa o svoje nápady na zlepšenie GitLab pre vývoj aplikácií pre iOS.

Zdroj: hab.com

Pridať komentár