
Kako GitLab sa fastlane-om prikuplja, potpisuje i objavljuje iOS aplikacije u App Store-u.
Nedavno smo imali sa GitLabom i . Ovdje ćemo vidjeti kako napraviti i pokrenuti iOS aplikaciju i objaviti je na TestFlight-u. Provjerite kako je super , uzimam build i dobijam ažuriranje testne verzije aplikacije na istom iPad Pro na kojem sam je razvio.
Evo nas sa kojim sam snimio video.
Nekoliko riječi o konfiguraciji Apple Store-a
Trebat će nam aplikacija u App Store-u, certifikati o distribuciji i profil pružanja usluga da sve povežemo.
Najteže je ovdje postaviti dozvole za potpisivanje u App Store-u. Nadam se da ćete ovo sami shvatiti. Ako ste novi, uputit ću vas u pravom smjeru, ali ovdje nećemo govoriti o zamršenostima upravljanja Apple certifikatima, a oni se stalno mijenjaju. Ovaj post će vam pomoći da započnete.
Moje aplikacije
Potrebna vam je aplikacija u App Store Connect kako biste imali ID za konfiguraciju .xcodebuild. Profil aplikacije i ID kombinuju izradu koda, cijene i dostupnost te TestFlight konfiguraciju za distribuciju testnih aplikacija korisnicima. Nemojte raditi javno testiranje, privatno testiranje je dovoljno ako imate malu grupu, jednostavno postavljanje i ne trebate dodatne dozvole od Apple-a.
Provisioning Profile
Pored podešavanja aplikacije, potrebni su vam iOS distributivni i razvojni ključevi kreirani u odjeljku Certifikati, identifikatori i profili na Apple Developer Console. Svi ovi certifikati mogu se kombinirati u profilu za proviziju.
Korisnicima koji će biti autentificirani potrebna je mogućnost kreiranja certifikata, inače koraci vidjet ćete 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 ćete se morati prilagoditi. Ono što je najvažnije, trebat će vam konfiguracija .xcodebuild, koji će ukazivati na potrebne datoteke, a privezak ključeva mora biti dostupan na build računaru za korisnika pod čijim imenom trkač radi. Koristimo fastlane za digitalno potpisivanje, a ako imate problema ili želite saznati više, pogledajte njihov detalj .
U ovom primjeru koristim pristup , ali za stvarnu upotrebu, vjerovatno bolje .
Priprema GitLaba i fastlanea
Priprema CI Runner-a
Nakon što smo prikupili sve ove podatke, prelazimo na konfiguraciju GitLab trkača na MacOS uređaju. Nažalost, pravljenje iOS aplikacija moguće je samo na MacOS-u. Ali sve se može promijeniti, a ako čekate napredak u ovoj oblasti, pratite projekte poput и , i naš interni zadatak .
Postavljanje trkača je vrlo jednostavno. Pratite ažurno .
Bilješka. Trkač mora koristiti program za izvršavanje shellOvo je potrebno za izgradnju iOS-a u macOSda radi direktno kao korisnik, a ne putem kontejnera. Ako koristite shell, izgradnja i testiranje se obavljaju kao korisnik runnera, direktno na hostu izgradnje. Nije tako bezbedno kao kontejneri, pa je bolje da ga okrenete tako da ništa ne propustite.
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 startApple Keychain mora biti postavljen na ovom hostu s pristupom ključevima koje Xcode treba da napravi. Najlakši način da ovo testirate je da se prijavite kao korisnik koji će pokrenuti gradnju i pokušati ručno da izgradi. Ako sistem traži pristup privjesku ključeva, odaberite "Uvijek dozvoli" da CI radi. Možda bi bilo vrijedno ući i pogledati prvi par cjevovoda kako bi bili sigurni da više ne traže privjesak za ključeve. Problem je u tome što nam Apple ne olakšava rad sa automatskim načinom rada, ali kada ga postavite, sve će biti u redu.
fastlane init
Da biste koristili fastlane u projektu, pokrenite fastlane init. Samo prati posebno u odjeljku o , jer nam je potrebno brzo i predvidljivo lansiranje kroz automatski CI cevovod.
U direktoriju projekta pokrenite ove naredbe:
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane initfastlane će zatražiti osnovnu konfiguraciju, a zatim kreirati fastlane folder u projektu sa tri datoteke:
1. fastlane/Appfile
Nema tu ništa komplikovano. Samo provjerite jesu li vaš Apple ID i App ID ispravni.
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("your-email@your-domain.com") # Your Apple email address2. fastlane/Fastfile
Fastfile definira korake izgradnje. Koristimo dosta ugrađenih funkcija fastlane-a, tako da je i ovdje sve jasno. Kreiramo jednu liniju koja prima certifikate, gradi je i postavlja na TestFlight. Po potrebi ovaj proces možete podijeliti na različite zadatke. Sve ove operacijeget_certificates, get_provisioning_profile, gym и upload_to_testflight) su već uključeni u fastlane.
Akcije get_certificates и get_provisioning_profile povezan sa pristupom potpisivanja . Ako koristite ili nešto drugo, izvršite promjene.
default_platform(:ios)
platform :ios do
desc "Build the application"
lane :flappybuild do
get_certificates
get_provisioning_profile
gym
upload_to_testflight
end
end3. fastlane/Gymfile
Ovo je opcionalna datoteka, ali sam je kreirao ručno da promijenim zadani izlazni direktorij i stavim izlaz u trenutnu mapu. Ovo pojednostavljuje CI. Ako ste zainteresovani, pročitajte o gym i njegovi parametri u .
https://docs.fastlane.tools/actions/gym/Naša .gitlab-ci.yml
Dakle, imamo CI runner za projekat i spremni smo da testiramo cevovod. Hajde da vidimo šta imamo .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.ipaVse otlično! , koristimo strategiju clone sa izvršnim programom shelltako da imamo čist radni prostor za svaku izgradnju i samo pozovite flappybuild fastlane kao što se vidi gore. Kao rezultat, dobijamo sklapanje, potpis i implementaciju najnovijeg sklopa u TestFlight-u.
Dobijamo i artefakt i spremamo ga sa sklopom. Imajte na umu da format .ipa je potpisana ARM izvršna datoteka koja se ne izvodi u simulatoru. Ako želite izlaz simulatora, samo dodajte cilj izgradnje koji ga proizvodi, a zatim ga uključite u putanju artefakta.
Druge varijable okruženja
Ovdje postoji nekoliko varijabli okruženja na kojima sve radi.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION
Za autentifikaciju u App Store i otpremanje na TestFlight, potrebna vam je autentifikacija za fastlane. Da biste to učinili, kreirajte lozinku aplikacije koja će se koristiti u CI. Detalji .
Ako imate dvofaktorsku autentifikaciju, kreirajte varijablu FASTLANE_SESSION (tamo uputstva).
FASTLANE_USER и FASTLANE_PASSWORD
da koji se zove inicijalizacijski profil i certifikati na zahtjev, potrebno je postaviti varijable FASTLANE_USER и FASTLANE_PASSWORD... Detalji . Ovo nije potrebno ako koristite drugu metodu potpisivanja.
U zaključku
Možete vidjeti kako sve funkcionira .
Nadam se da je ovo bilo od pomoći i inspirisalo vas da radite sa iOS buildovima u GitLab projektu. Evo još jednog za fastlane, za svaki slučaj. Možda želite da koristite CI_BUILD_ID (za inkrementalne gradnje) do .
Još jedna cool karakteristika fastlanea je za App Store, koje je vrlo lako postaviti.
Recite nam svoje iskustvo u komentarima i podijelite ideje za poboljšanje GitLab-a za razvoj iOS aplikacija.
izvor: www.habr.com
