
Kako GitLab s fastlaneom gradi, potpisuje i objavljuje aplikacije za iOS u App Store.
Nedavno smo imali s GitLabom i Ovdje ćemo vidjeti kako izgraditi i pokrenuti iOS aplikaciju i objaviti je na TestFlightu. Pogledajte koliko je sjajno , uzimam gradnju i dobivam ažuriranje testne verzije aplikacije na istom iPad Pro gdje sam je razvio.
Ovdje ćemo uzeti , s kojom sam snimao video.
Par riječi o konfiguraciji Apple Storea.
Treba nam aplikacija u App Storeu, certifikati za distribuciju i profil inicijalizacije da sve to povežemo zajedno.
Najteže je ovdje postaviti prava na potpisivanje u App Storeu. Nadam se da ćete to sami riješiti. Ako ste početnik, pokazat ću vam pravilan smjer, ali ovdje nećemo raspravljati o nijansama upravljanja Apple certifikatima, pogotovo jer se neprestano mijenjaju. Ovaj post će vam pomoći da krenete.
Moje aplikacije
Treba vam aplikacija u App Store Connect da biste imali ID za konfiguraciju. .xcodebuild. Profil i ID aplikacije povezuju gradnje koda, cijene i dostupnost, a također konfiguraciju TestFlighta za distribuciju testnih aplikacija među korisnicima. Ne radite javno testiranje, dovoljno je privatno ako imate malu grupu, jednostavnu postavku i ne trebaju vam dodatne dozvole od Applea.
Profil inicijalizacije
Osim postavki aplikacije, potrebni su vam ključevi za distribuciju i razvoj iOS-a, stvoreni u sekciji Certificates, Identifiers & Profiles (Certifikati, identifikatori i profili) u Apple Developer konzoli. Sve te certifikate možete spojiti u profilu inicijalizacije.
Korisnicima koji će proći autentifikaciju potrebna je mogućnost stvaranja certifikata, inače će na koracima vidjeti grešku.
Druge opcije
Osim ove jednostavne metode, postoje i drugi načini za postavljanje certifikata i profila. Dakle, ako radite drugačije, možda će biti potrebno prestrukturirati. Najvažnije je da će vam trebati konfiguracija .xcodebuild, koja će ukazivati na potrebne datoteke, a veznik ključeva mora biti dostupan na računalu s kojeg se gradi pod imenom korisnika pod kojim radi runner. Za digitalni potpis koristimo fastlane, a ako imate problema ili želite saznati više, istražite njihove detalje. .
U ovom primeru koristim pristup , ali za pravu primenu, verovatno, bolje bi bio .
Priprema GitLab i fastlane
Priprema CI Runner-a
Sakupivši sve te podatke, prelazimo na konfiguraciju GitLab runnera na MacOS uređaju. Nažalost, praviti iOS aplikacije moguće je samo na MacOS-u. No, sve se može promeniti, i ako očekujete pomake u ovoj oblasti — pratite projekte, kao što su i , i naš unutrašnji zadatak .
Podešavanje runner-a je veoma jednostavno. Pratite aktuelne .
Napomena. Runner mora koristiti izvršnu programsku shell. Ovo je obavezno za gradnju iOS-a u macOS-u, kako bi radio direktno kao korisnik, a ne kroz kontejnere. Ako koristite shell, gradnja i testiranje se vrše u ime korisnika runner-a, direktno na hostu za gradnju. Ovo nije tako sigurno kao kontejneri, pa je bolje da se upoznate sa , da ne propustite 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 startKljučna povezanost Apple-a mora biti podešena na ovom hostu sa pristupom ključevima koji su potrebni Xcode-u za gradnju. Najlakši način da to testirate je da se prijavite kao korisnik koji će pokrenuti gradnju i pokušate da izvršite gradnju ručno. Ako sistem zatraži pristup porodici ključeva, odaberite "Uvek dozvoli", kako bi CI radio. Možda bi trebalo da se prijavite i posmatrate prve nekoliko pipeline-a, da se uverite da više ne traže pristup ključeva. Problem je u tome što nam Apple ne olakšava rad u automatskom režimu, ali kada ga postavite, sve će biti u redu.
fastlane init
Da biste koristili fastlane u projektu, pokrenite fastlane init. Samo pratite , posebno u odeljku o , jer nam je potreban brz i predvidljiv pokret kroz automatski CI kanal.
U direktorijumu projekta pokrenite ove komande:
xcode-select --install
sudo gem install fastlane -NV
# Alternativno koristeći Homebrew
# brew cask install fastlane
fastlane initfastlane će zatražiti osnovnu konfiguraciju, a zatim će stvoriti u projektu folder fastlane sa tri datoteke:
1. fastlane/Appfile
Ovde nema ništa komplikovano. Samo proverite da su 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 adresa e-pošte2. fastlane/Fastfile
Fastfile definira korake izgradnje. Koristimo mnogo ugrađenih mogućnosti fastlane-a, tako da je ovdje sve jasno. Stvaramo jedan redak koji dobiva certifikate, izvršava izgradnju i prenosi je na TestFlight. Možete podijeliti ovaj proces u različite zadatke, ako je potrebno. Sve ove operacije (get_certificates, get_provisioning_profile, gym i upload_to_testflight) su već uključene u fastlane.
Radnje get_certificates i get_provisioning_profile vezane su uz pristup potpisivanju . Ako koristite ili nešto drugo, napravite promjene.
default_platform(:ios)
platform :ios do
desc "Izgradnja aplikacije"
lane :flappybuild do
get_certificates
get_provisioning_profile
gym
upload_to_testflight
end
end3. fastlane/Gymfile
Ovo je neobavezan datoteka, ali sam ga izradio ručno kako bih promijenio zadani izlazni direktorij i smjestio izlazne datoteke u trenutnu mapu. To pojednostavljuje 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-pokretač za projekat i spremni smo isprobati pipeline. 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 super! , koristimo strategiju clone s izvršnom prográmom shell, kako bismo imali čisto radno okruženje za svaku izgradnju, i jednostavno pozivamo flappybuild fastlane, kao što je prikazano iznad. Na kraju dobivamo izgradnju, potpisivanje i deploy posljednje izgradnje na TestFlight.
Također dobivamo artefakt i čuvamo ga zajedno s izgradnjom. Primijetite da je format .ipa — to je potpisana izvršna datoteka ARM koja se ne može pokrenuti u simulatoru. Ako želite izlaz za simulator, samo dodajte cilj izgradnje koji ga proizvodi, a zatim ga uključite u put do artefakta.
Druge varijable okruženja
Ovdje su dvije varijable okruženja koje sve pokreću.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD i FASTLANE_SESSION
Za autentifikaciju u App Store-u i prijenos na TestFlight potrebna je autentifikacija za fastlane. Za to stvorite lozinku za aplikaciju koja će se koristiti u CI. Detalji .
Ako imate dvostruku autentifikaciju, stvorite varijablu FASTLANE_SESSION (upute tu).
FASTLANE_USER i FASTLANE_PASSWORD
Da pozivali su profil inicijalizacije i certifikate prema zahtjevu, trebate postaviti varijable FASTLANE_USER i FASTLANE_PASSWORD. Detalji . To nije potrebno ako koristite drugu metodu potpisivanja.
Za kraj
Pogledajte kako sve to funkcionira .
Nadam se da je ovo bilo korisno i da sam vas inspirirao da radite s iOS buildovima u GitLab projektu. Evo još za fastlane, za svaki slučaj. Možda želite koristiti CI_BUILD_ID (za inkrementalne buildove), kako biste .
Još jedna cool mogućnost fastlane-a je za App Store, koje je vrlo jednostavno postaviti.
Podijelite u komentarima svoje iskustvo i ideje za poboljšanje GitLaba za razvoj iOS aplikacija.
Izvor: habr.com
