Objavljivanje iOS aplikacija u App Store-u uz GitLab i fastlane

Objavljivanje iOS aplikacija u App Store-u uz GitLab i fastlane

Kako GitLab sa fastlane-om prikuplja, potpisuje i objavljuje iOS aplikacije u App Store-u.

Nedavno smo imali post o tome kako brzo napraviti i pokrenuti android aplikaciju sa GitLabom i brza traka. Ovdje ćemo vidjeti kako napraviti i pokrenuti iOS aplikaciju i objaviti je na TestFlight-u. Provjerite kako je super Napravio sam promjenu na iPad Pro-u sa GitLab Web IDE, uzimam build i dobijam ažuriranje testne verzije aplikacije na istom iPad Pro na kojem sam je razvio.

Evo nas jednostavna iOS aplikacija u Swiftusa 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 cert i uzdah 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 dokumentacija digitalnog potpisa.

U ovom primjeru koristim pristup cert i uzdah, ali za stvarnu upotrebu, vjerovatno bolje utakmica.

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 xcbuild и dizajn, i naš interni zadatak gitlab-ce#57576.

Postavljanje trkača je vrlo jednostavno. Pratite ažurno upute za postavljanje GitLab Runner-a na macOS.

Bilješka. Trkač mora koristiti program za izvršavanje shell. Ovo je potrebno za izgradnju iOS-a na macOS-u za rad direktno kao korisnik, a ne preko 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 sigurnosnu dokumentacijutako 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 start

Apple 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 upute za instalaciju i pokretanje fastlaneaposebno u odjeljku o gemfile, 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 init

fastlane ć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("[email protected]") # Your Apple email address

2. 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 cert i uzdah. Ako koristite utakmica 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
end

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

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

Vse otlično! Postavili smo UTF-8 format za fastlane prema potrebi, 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 ovdje.

Ako imate dvofaktorsku autentifikaciju, kreirajte varijablu FASTLANE_SESSION (tamo uputstva).

FASTLANE_USER и FASTLANE_PASSWORD

da cert i uzdah koji se zove inicijalizacijski profil i certifikati na zahtjev, potrebno je postaviti varijable FASTLANE_USER и FASTLANE_PASSWORD... Detalji ovdje. Ovo nije potrebno ako koristite drugu metodu potpisivanja.

U zaključku

Možete vidjeti kako sve funkcionira u mom jednostavnom primjeru.

Nadam se da je ovo bilo od pomoći i inspirisalo vas da radite sa iOS buildovima u GitLab projektu. Evo još jednog CI savjeti za fastlane, za svaki slučaj. Možda želite da koristite CI_BUILD_ID (za inkrementalne gradnje) do verzija sa automatskim povećanjem.

Još jedna cool karakteristika fastlanea je automatske snimke ekrana 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

Dodajte komentar