
Ako GitLab s fastlane zostavuje, podpisuje a publikácia aplikácií pre iOS v App Store.
Nedávno sme mali s GitLab a Tu uvidíme, ako zostaviť a spustiť aplikáciu iOS a publikovať ju v TestFlight. Pozrite si, aké úžasné , vezmem zostavenie a dostanem aktualizáciu testovacej verzie aplikácie na tom istom iPade Pro, kde som ju vyvinul.
Tu vezmeme , 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 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. .
V tomto príklade používam prístup , ale na reálne použitie sa pravdepodobne viac hodí .
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 a , a našu internú úlohu .
Nastavenie runnera je veľmi jednoduché. Postupujte podľa aktuálnych .
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 , 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 startKľúč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 , najmä v sekcii o , 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 initfastlane 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á adresa2. 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 . Ak používate 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
end3. 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 .
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.ipaVšetko je skvelé! , 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 .
Ak máte dvojfaktorovú autentifikáciu, vytvorte premennú FASTLANE_SESSION (pokyny tam sú).
FASTLANE_USER a FASTLANE_PASSWORD
Aby vyžiadali profil inicializácie a certifikáty na požiadanie, potrebujete nastaviť premenné FASTLANE_USER a FASTLANE_PASSWORD. Podrobnosti . To nie je potrebné, ak používate inú metódu podpisovania.
Na záver
Pozrite sa, ako to všetko funguje .
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 pre fastlane, pre každý prípad. Možno budete chcieť použiť CI_BUILD_ID (pre inkrementálne zostavy), aby .
Ešte jedna skvelá funkcia fastlane je 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
