Objavljivanje iOS aplikacija u App Storeu s GitLabom i fastlaneom

Objavljivanje iOS aplikacija u App Storeu s GitLabom i fastlaneom

Kako GitLab s fastlaneom prikuplja, potpisuje i objavljuje iOS aplikacije u App Storeu.

Nedavno smo imali post o tome kako brzo izraditi i pokrenuti Android aplikaciju s GitLabom i brza staza. Ovdje ćemo vidjeti kako izgraditi i pokrenuti iOS aplikaciju i objaviti je na TestFlightu. Provjerite koliko je cool Radim promjenu na iPadu Pro s GitLab Web IDE, uzmem sklop i dobijem ažuriranje testne verzije aplikacije na istom iPadu Pro na kojem sam je razvio.

Ovdje ćemo uzeti jednostavna iOS aplikacija na Swiftu, s kojim sam snimila spot.

Nekoliko riječi o konfiguraciji Apple Storea

Trebat će nam aplikacija App Store, certifikati za distribuciju i profil za pružanje usluga da sve povežemo.

Najteža stvar ovdje je postavljanje prava potpisivanja u App Storeu. Nadam se da to možete sami shvatiti. Ako ste novi, uputit ću vas u pravom smjeru, ali ovdje nećemo govoriti o zamršenostima upravljanja Appleovim certifikatima, a oni se stalno mijenjaju. Ovaj će vam post pomoći da započnete.

Moje aplikacije

Trebate aplikaciju u App Store Connectu kako biste imali ID za konfiguraciju .xcodebuild. Profil i ID aplikacije kombiniraju izradu koda, cijene i dostupnost te konfiguraciju TestFlighta za distribuciju testnih aplikacija korisnicima. Nemojte provoditi javno testiranje, privatno testiranje će biti dovoljno ako imate malu grupu, jednostavno postavljanje i ne trebate dodatna dopuštenja od Applea.

Profil inicijalizacije

Osim postavljanja aplikacije, potrebni su vam iOS distribucijski i razvojni ključevi kreirani u odjeljku Certifikati, identifikatori i profili konzole Apple Developer. Svi ovi certifikati mogu se kombinirati u profil za pružanje usluga.

Korisnici koji će biti autentificirani moraju moći izraditi certifikate, u suprotnom slijede koraci cert i uzdah vidjet ćete grešku.

druge opcije

Osim ove jednostavne metode, postoje i drugi načini za konfiguriranje certifikata i profila. Dakle, ako radite drugačije, možda ćete se morati prilagoditi. Najvažnije je da vam je potrebna konfiguracija .xcodebuild, koji će upućivati ​​na potrebne datoteke, a privjesak ključeva mora biti dostupan na računalu za izradu za korisnika pod čijim se imenom runner pokreće. Za digitalni potpis koristimo fastlane, a ako ima problema ili želite saznati više, provjerite njihove detalje dokumentacija o digitalnim potpisima.

U ovom primjeru koristim pristup cert i uzdah, ali za stvarnu upotrebu vjerojatno je prikladniji utakmica.

Priprema GitLab i fastlane

Priprema CI Runner

Nakon što smo prikupili sve te podatke, prelazimo na konfiguraciju GitLab runnera na MacOS uređaju. Nažalost, iOS aplikacije možete izraditi samo na MacOS-u. Ali sve se može promijeniti, a očekujete li napredak na ovom području, obratite pažnju na projekte poput xcbuild и znak, i naš interni zadatak gitlab-ce#57576.

Postavljanje trkača je vrlo jednostavno. Prati struju upute za postavljanje GitLab Runnera na macOS.

Bilješka. Trkač mora koristiti izvršni program shell. Ovo je potrebno za izgradnju iOS-a na macOS-u kako bi radio izravno kao korisnik, a ne kroz spremnike. Ako koristite shell, izgradnja i testiranje izvode se kao korisnik pokretač, izravno na hostu za izgradnju. Nije tako siguran kao kontejneri, pa je bolje pregledavati sigurnosna dokumentacijada ti ništa ne nedostaje.

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 konfiguriran na ovom hostu s pristupom ključevima koje Xcode treba izgraditi. Najlakši način da to testirate je da se prijavite kao korisnik koji će pokrenuti izgradnju i pokušati je izgraditi ručno. Ako sustav traži pristup privjesku ključeva, odaberite Uvijek dopusti za rad CI-ja. Možda bi vrijedilo ući i promatrati prvih nekoliko cjevovoda kako bismo bili sigurni da više neće tražiti privjesak za ključeve. Problem je u tome što nam Apple ne olakšava korištenje automatskog načina rada, ali kad ga pokrenete, sve će biti u redu.

brza traka init

Da biste koristili fastlane u projektu, pokrenite fastlane init. Samo prati upute za instaliranje i pokretanje fastlanea, posebno u dijelu o Gemfile, jer trebamo brzo i predvidljivo pokretanje putem automatiziranog CI cjevovoda.

U direktoriju vašeg 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 i zatim stvoriti fastlane mapu u projektu s tri datoteke:

1. fastlane/Appfile

Ovdje nema ništa komplicirano. Samo provjerite jesu li vaš Apple ID i App ID točni.

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 puno ugrađenih značajki fastlanea, tako da je i ovdje sve jasno. Kreiramo jednu liniju koja prima certifikate, izvodi montažu i prenosi je na TestFlight. Ovaj proces možete podijeliti u različite zadatke ako je potrebno. Sve ove operacije (get_certificates, get_provisioning_profile, gym и upload_to_testflight) već su uključeni u fastlane.

Djelatnost get_certificates и get_provisioning_profile vezano za pristup potpisivanju cert i uzdah. Ako koristite utakmica ili što već, napravite 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 opcijska datoteka, ali izradio sam je ručno da promijenim zadani izlazni direktorij i smjestim izlaz u trenutnu mapu. Ovo pojednostavljuje CI. Ako ste zainteresirani, pročitajte gym i njegove parametre u dokumentacija.

https://docs.fastlane.tools/actions/gym/

Naša .gitlab-ci.yml

Dakle, imamo CI runner za projekt i spremni smo testirati cjevovod. Da vidimo što imamo unutra .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 u redu! Prema potrebi postavljamo format na UTF-8 za brzu traku, koristite strategiju clone s izvršavanjem programa shell, tako da imamo čist radni prostor za svaku montažu i jednostavno nazovite flappybuild brza traka, kao što se vidi gore. Kao rezultat, dobivamo montažu, potpis i implementaciju najnovije montaže u TestFlightu.

Također dobivamo 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 za simulator, samo dodajte cilj izgradnje koji ga proizvodi, a zatim ga uključite u stazu artefakta.

Ostale varijable okruženja

Ovdje postoji nekoliko varijabli okruženja koje čine da sve funkcionira.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Autentifikacija za fastlane potrebna je za autentifikaciju u App Storeu i prijenos na TestFlight. Da biste to učinili, stvorite lozinku za aplikaciju koja će se koristiti u CI-ju. pojedinosti здесь.

Ako imate dvofaktorsku provjeru autentičnosti, stvorite varijablu FASTLANE_SESSION (upute tamo).

FASTLANE_USER и FASTLANE_PASSWORD

Da cert i uzdah koji se zove inicijalizacijski profil i certifikati na zahtjev, trebate postaviti varijable FASTLANE_USER и FASTLANE_PASSWORD. pojedinosti здесь. Ovo nije potrebno ako koristite drugu metodu potpisivanja.

U zaključku

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

Nadam se da vam je ovo bilo od pomoći i da vas je inspiriralo da radite s verzijama iOS-a u GitLab projektu. Evo još jednog CI savjeti za brzu traku, za svaki slučaj. Možda želite koristiti CI_BUILD_ID (za inkrementalne nadogradnje) to automatski povećava verziju.

Još jedna cool značajka fastlanea je automatske snimke zaslona za App Store, koji se vrlo jednostavno postavljaju.

Recite nam u komentarima o svom iskustvu i podijelite svoje ideje za poboljšanje GitLaba za razvoj iOS aplikacija.

Izvor: www.habr.com

Dodajte komentar