Objavljivanje iOS aplikacija u App Store-u sa GitLab-om i fastlane-om

Objavljivanje iOS aplikacija u App Store-u sa GitLab-om i fastlane-om

Kako GitLab s fastlane gradi, potpisuje i objavljuje aplikacije za iOS u App Store.

Nedavno smo imali post o tome kako brzo izgraditi i pokrenuti Android aplikaciju s GitLabom i fastlane.Ovde ćemo videti kako izgraditi i pokrenuti iOS aplikaciju i objaviti je na TestFlightu. Pogledajte kako je sjajno koristim iPad Pro sa GitLab Web IDE, uzimam gradnju i dobijam ažuriranje beta verzije aplikacije na istom iPad Pro na kojem sam je razvio.

Ovde ćemo uzeti jednostavnu aplikaciju za iOS na Swiftu, sa kojom sam snimao video.

Par reči o konfiguraciji Apple Store-a

Biće nam potrebna aplikacija u App Store-u, distribucijski sertifikati i profil inicijalizacije, kako bismo sve to povezali.

Najteže ovde je postaviti prava na potpisivanje u App Store-u. Nadam se da ćete s tim sami izaći na kraj. Ako ste početnik, uputiću vas na pravi put, ali ovde nećemo govoriti o pojedinostima upravljanja Apple sertifikatima, posebno zato što se oni stalno menjaju. Ovaj post će vam pomoći da započnete.

Moje aplikacije

Potrebna vam je aplikacija u App Store Connect-u da biste imali ID za konfiguraciju .xcodebuild.Profil i ID aplikacije povezani su sa gradnjama koda, cijenama i dostupnošću, kao i konfiguracijom TestFlight-a za distribuciju testnih aplikacija među korisnicima. Ne radite javno testiranje, dovoljno je privatno, ako imate malu grupu, jednostavno postavljanje i nisu vam potrebne dodatne dozvole od Apple-a.

Profil inicijalizacije

Osim postavke aplikacije, potrebni su vam distribucijski i razvojni ključevi za iOS, kreirani u odeljku Certificates, Identifiers & Profiles (Sertifikati, identifikatori i profili) u Apple Developer konzoli. Svi ti sertifikati mogu se spojiti u profilu inicijalizacije.

Korisnicima koji će prolaziti autentifikaciju potrebna je mogućnost kreiranja sertifikata, inače ćete na fazama cert i sigh videti grešku.

Druge možnosti

Pored ovog jednostavnog metoda, postoje i drugi načini za postavljanje sertifikata i profila. Dakle, ako radite drugačije, možda ćete morati da se prilagodite. Najvažnije je da će vam biti potrebna konfiguracija .xcodebuild., koja će ukazivati na potrebne datoteke, a vezivanje ključeva treba da bude dostupno na računaru za gradnju za korisnika pod čijim imenom radi runner. Za digitalni potpis koristimo fastlane, a ako imate problema ili želite saznati više, istražite njihove detalje. dokumentacija o digitalnih potpisih.

U ovom primjeru koristim pristup cert i sigh, ali za stvarnu primjenu, vjerojatno bi bolje odgovarao match.

Priprema GitLab i fastlane

Priprema CI Runnera

Sakupivši sve te podatke, prelazimo na konfiguraciju GitLab runnera na uređaju MacOS. Nažalost, razvoj iOS aplikacija je stvarno moguć samo na MacOS-u. No, to se može promijeniti, i ako čekate pomake u ovom području, pratite projekte poput xcbuild in isign, i našeg internog zadatka gitlab-ce#57576.

Podešavanje runnera je vrlo jednostavno. Slijedite aktualne upute za podešavanje GitLab runnera u macOS-u.

Napomena. Runner treba koristiti izvršnu datoteku shell. To je obavezno za izgradnju iOS-a u macOS-u, da bi radio izravno kao korisnik, a ne kroz kontejnere. Ako koristite shell, izgradnja i testiranje se izvode u ime korisnika runnera, izravno na hostu za izgradnju. To nije tako sigurno kao kontejneri, pa je bolje pregledati dokumentaciju o sigurnosti, kako ne biste propustili ništa.

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

Appleova poveznica s ključevima treba biti postavljena na ovom hostu s pristupom ključevima koji su potrebni Xcodeu za izgradnju. Najjednostavniji način za testiranje toga je prijaviti se kao korisnik koji će pokrenuti izgradnju i pokušati izgraditi ručno. Ako sustav zatraži pristup poveznici s ključevima, odaberite „Uvijek dopuštati“ kako bi CI radio. Možda bi bilo dobro prijaviti se i pratiti prvih nekoliko pipelineova, kako biste se uvjerili da više ne traže ključnu poveznicu. Problem je u tome što Apple ne olakšava rad s automatskim načinom, ali kada ga postavite, sve će biti u redu.

fastlane init

Da biste koristili fastlane u projektu, pokrenite fastlane init. Samo slijedite upute za instalaciju i pokretanje fastlanea, posebno u odjeljku o Gemfile, jer nam je potreban brz i predvidiv početak putem automatskog CI kanala.

U direktoriju projekta pokrenite ove komande:

xcode-select --install
sudo gem install fastlane -NV
# Alternativno korištenjem Homebrew
# brew cask install fastlane
fastlane init

fastlane će zatražiti osnovnu konfiguraciju, a zatim će stvoriti u projektu mapu fastlane s tri datoteke:

1. fastlane/Appfile

Ovdje nema ništa komplicirano. Samo provjerite jesu li Apple ID i ID aplikacije ispravno navedeni.

app_identifier("com.vontrance.flappybird") # Identifikator paketa vaše aplikacije
apple_id("your-email@your-domain.com") # Vaša Apple email adresa

2. fastlane/Fastfile

Fastfile definira korake gradnje. Koristimo mnoge ugrađene mogućnosti fastlane, tako da je ovdje sve jasno. Stvaramo jedan red koji dobiva certifikate, izvršava gradnju i učitava je u TestFlight. Možete podijeliti ovaj proces u različite zadatke, ako je potrebno. Sve te operacije (get_certificates, get_provisioning_profile, gym in upload_to_testflight) su već uključene u fastlane.

Akcije get_certificates in get_provisioning_profile vezane su za pristup potpisivanju cert i sigh. Ako koristite match ili nešto drugo, izvršite promjene.

default_platform(:ios)

platform :ios do
  desc "Izgradite aplikaciju"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Ovo je opcionalna datoteka, ali sam je ručno stvorio kako bih promijenio zadanu izlaznu mapu i smjestio izlazne datoteke u trenutnu mapu. To olakšava CI. Ako vas zanima, pročitajte o gym i njegovim parametrima u dokumenti.

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

Naš .gitlab-ci.yml

Dakle, imamo CI trkač za projekt i spremni smo za testiranje pipelinea. Pogledajmo što imamo u .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

Sve je u redu! Postavljamo UTF-8 format za fastlane, kao što je potrebno, koristimo strategiju clone s izvršnom programom shell, kako bismo imali čisto radno okruženje za svaku gradnju, i jednostavno pozivamo flappybuild fastlane, kao što je navedeno gore. Na kraju dobivamo gradnju, potpisivanje i postavljanje posljednje gradnje u TestFlight.

Također dobivamo artefakt i čuvamo ga s gradnjom. Imajte na umu da je format .ipa — to je potpisana izvršna datoteka ARM koja se ne pokreće u simulatoru. Ako želite izlazne datoteke za simulator, jednostavno dodajte ciljni modul koji ga proizvodi, a zatim ga uključite u put do artefakta.

Druge varijable okruženja

Evo nekoliko varijabli okruženja na kojima sve radi.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD in FASTLANE_SESSION

Za autentifikaciju u App Store i učitavanje u TestFlight potrebna je autentifikacija za fastlane. Da biste to učinili, stvorite lozinku za aplikaciju koja će se koristiti u CI. Detalji ovde.

Ako imate dvofaktorsku autentifikaciju, stvorite varijablu FASTLANE_SESSION (upute su tamo).

FASTLANE_USER in FASTLANE_PASSWORD

Da cert i sigh dobili su inicijalizacijske profile i certifikate na zahtjev, potrebno je postaviti varijable FASTLANE_USER in FASTLANE_PASSWORD. Detalji ovde. To nije potrebno ako koristite drugu metodu potpisivanja.

Na záver

Oglejte si, kako vse to deluje v mojem preprostem primeru.

Upam, da je bilo to koristno in da sem vas navdihnil za delo z iOS zbirkami v projektu GitLab. Tukaj je še nekaj nasvetov za CI za fastlane, v primeru da boste želeli uporabiti CI_BUILD_ID (za inkrementalne zbirke), da samodejno inkrementirate različico.

Še ena odlična možnost fastlane je samodejno ustvarjanje posnetkov zaslona za App Store, ki jih je zelo enostavno nastaviti.

Delite svoje izkušnje v komentarjih in delite ideje za izboljšanje GitLab-a za razvoj iOS aplikacij.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster