
Kako GitLab s fastlane gradi, potpisuje i objavljuje aplikacije za iOS u App Store.
Nedavno smo imali s GitLabom i Ovde ćemo videti kako izgraditi i pokrenuti iOS aplikaciju i objaviti je na TestFlightu. Pogledajte kako je sjajno , uzimam gradnju i dobijam ažuriranje beta verzije aplikacije na istom iPad Pro na kojem sam je razvio.
Ovde ćemo uzeti , 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 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. .
U ovom primjeru koristim pristup , ali za stvarnu primjenu, vjerojatno bi bolje odgovarao .
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 in , i našeg internog zadatka .
Podešavanje runnera je vrlo jednostavno. Slijedite aktualne .
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 , 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 startAppleova 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 , posebno u odjeljku o , 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 initfastlane ć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 adresa2. 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 . Ako koristite 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
end3. 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 .
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.ipaSve je u redu! , 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 .
Ako imate dvofaktorsku autentifikaciju, stvorite varijablu FASTLANE_SESSION (upute su tamo).
FASTLANE_USER in FASTLANE_PASSWORD
Da dobili su inicijalizacijske profile i certifikate na zahtjev, potrebno je postaviti varijable FASTLANE_USER in FASTLANE_PASSWORD. Detalji . To nije potrebno ako koristite drugu metodu potpisivanja.
Na záver
Oglejte si, kako vse to deluje .
Upam, da je bilo to koristno in da sem vas navdihnil za delo z iOS zbirkami v projektu GitLab. Tukaj je še nekaj za fastlane, v primeru da boste želeli uporabiti CI_BUILD_ID (za inkrementalne zbirke), da .
Še ena odlična možnost fastlane je 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
