Objavljivanje iOS aplikacija u App Store uz GitLab i fastlane

Objavljivanje iOS aplikacija u App Store uz GitLab i fastlane

Kako GitLab s fastlaneom 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 fastlaneom.Ovdje ćemo vidjeti kako izgraditi i pokrenuti iOS aplikaciju i objaviti je na TestFlightu. Pogledajte koliko je sjajno mijenjam na iPad Pro s GitLab Web IDE-om, uzimam gradnju i dobivam ažuriranje testne verzije aplikacije na istom iPad Pro gdje sam je razvio.

Ovdje ćemo uzeti jednostavnu aplikaciju za iOS na Swiftu, 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 cert i sigh 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. dokumentaciju o digitalnim potpisima.

U ovom primeru koristim pristup cert i sigh, ali za pravu primenu, verovatno, bolje bi bio match.

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 xcbuild i isign, i naš unutrašnji zadatak gitlab-ce#57576.

Podešavanje runner-a je veoma jednostavno. Pratite aktuelne upute za podešavanje GitLab Runner-a u macOS-u.

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 dokumentacijom o bezbednosti, 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 start

Ključ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 upute za instalaciju i pokretanje fastlane-a, posebno u odeljku o Gemfile, 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 init

fastlane ć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šte

2. 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 cert i sigh. Ako koristite match 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
end

3. 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 dokumentaciju.

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.ipa

Sve je super! Postavljamo UTF-8 format za fastlane, kao što je potrebno, 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 ovdje.

Ako imate dvostruku autentifikaciju, stvorite varijablu FASTLANE_SESSION (upute tu).

FASTLANE_USER i FASTLANE_PASSWORD

Da cert i sigh pozivali su profil inicijalizacije i certifikate prema zahtjevu, trebate postaviti varijable FASTLANE_USER i FASTLANE_PASSWORD. Detalji ovdje. To nije potrebno ako koristite drugu metodu potpisivanja.

Za kraj

Pogledajte kako sve to funkcionira u mom jednostavnom primjeru.

Nadam se da je ovo bilo korisno i da sam vas inspirirao da radite s iOS buildovima u GitLab projektu. Evo još savjeta za CI za fastlane, za svaki slučaj. Možda želite koristiti CI_BUILD_ID (za inkrementalne buildove), kako biste automatski povećali verziju.

Još jedna cool mogućnost fastlane-a je automatsko pravljenje snimaka ekrana 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

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster