Udgivelse af iOS-applikationer til App Store med GitLab og fastlane

Udgivelse af iOS-applikationer til App Store med GitLab og fastlane

Hvordan GitLab med fastlane indsamler, signerer og udgiver iOS-applikationer til App Store.

Vi havde for nylig indlæg om, hvordan man hurtigt bygger og kører en Android-applikation med GitLab og overhalingsbanen. Her vil vi se, hvordan man bygger og kører en iOS-app og udgiver den til TestFlight. Tjek hvor fedt det er Jeg laver en ændring på en iPad Pro med GitLab Web IDE, tager jeg montagen og får en opdatering til testversionen af ​​applikationen på den samme iPad Pro, hvor jeg udviklede den.

Her vil vi tage simpel iOS-app på Swift, som jeg optog videoen med.

Et par ord om Apple Store-konfigurationen

Vi skal bruge en App Store-app, distributionscertifikater og en klargøringsprofil for at binde alt sammen.

Det sværeste her er at oprette signeringsrettigheder i App Store. Jeg håber, du selv kan finde ud af dette. Hvis du er ny, vil jeg pege dig i den rigtige retning, men vi vil ikke tale om forviklingerne ved at administrere Apple-certifikater her, og de ændrer sig konstant. Dette indlæg hjælper dig med at komme i gang.

Mine apps

Du skal bruge en app i App Store Connect, så du har et ID til konfiguration .xcodebuild. Profilen og applikations-id'et kombinerer kodeopbygninger, priser og tilgængelighed og TestFlight-konfiguration til distribution af testapplikationer til brugere. Foretag ikke offentlig test, privat test vil være tilstrækkeligt, hvis du har en lille gruppe, nem opsætning og ikke har brug for yderligere tilladelser fra Apple.

Initialiseringsprofil

Ud over app-opsætningen skal du bruge iOS-distributions- og udviklingsnøgler, der er oprettet i sektionen Certifikater, id'er og profiler i Apples udviklerkonsol. Alle disse certifikater kan kombineres til en klargøringsprofil.

Brugere, der vil blive godkendt, skal kunne oprette certifikater, ellers trinene cert og suk vil du se en fejl.

andre muligheder

Udover denne enkle metode er der andre måder at konfigurere certifikater og profiler på. Så hvis du arbejder anderledes, skal du måske tilpasse dig. Det vigtigste er, at du har brug for konfiguration .xcodebuild, som vil pege på de nødvendige filer, og nøgleringen skal være tilgængelig på byggecomputeren for den bruger, under hvis navn runneren kører. Til digital signatur bruger vi fastlane, og hvis der er problemer, eller du vil vide mere, så tjek deres detaljer dokumentation om digitale signaturer.

I dette eksempel bruger jeg fremgangsmåden cert og suk, men til rigtig brug er den nok bedre egnet match.

Forberedelse af GitLab og fastlane

Forberedelse af CI Runner

Efter at have samlet alle disse data, går vi videre til konfigurationen af ​​GitLab-løberen på MacOS-enheden. Desværre kan du kun lave iOS-apps på MacOS. Men alt kan ændre sig, og hvis du forventer fremskridt på dette område, så hold øje med projekter som f.eks xcbuild и skilt, og vores interne opgave gitlab-ce#57576.

Opsætning af løberen er meget enkel. Følg nuværende instruktioner til opsætning af GitLab Runner på macOS.

Bemærk. Løberen skal bruge et eksekverbart program shell. Dette er påkrævet for at bygge iOS på macOS for at fungere direkte som bruger i stedet for gennem containere. Hvis du bruger shell, bygning og test udføres som runner-bruger, direkte på build-værten. Det er ikke så sikkert som containere, så det er bedst at gennemse sikkerhedsdokumentationså du ikke går glip af noget.

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 skal konfigureres på denne vært med adgang til de nøgler, som Xcode skal bygge. Den nemmeste måde at teste dette på er at logge ind som den bruger, der skal køre buildet og prøve at bygge det manuelt. Hvis systemet beder om adgang til nøglering, skal du vælge Tillad altid, at CI fungerer. Det kan være værd at gå ind og se de første par pipelines for at sikre, at de ikke beder om nøgleringen længere. Problemet er, at Apple ikke gør det nemt for os at bruge Auto-tilstand, men når først du får det i gang, vil alt være godt.

fastlane init

Kør for at bruge fastlane i et projekt fastlane init. Bare følg med instruktioner til at installere og køre fastlane, især i afsnittet om Gemfile, fordi vi har brug for hurtig og forudsigelig lancering gennem en automatiseret CI-pipeline.

Kør disse kommandoer i din projektmappe:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

fastlane vil bede om en grundlæggende konfiguration og derefter oprette en fastlane-mappe i projektet med tre filer:

1. fastlane/Appfile

Der er ikke noget kompliceret her. Bare sørg for, at dit Apple ID og App ID er korrekte.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile definerer byggetrinene. Vi bruger mange fastlanes indbyggede funktioner, så alt er klart også her. Vi opretter én linje, der modtager certifikater, udfører samlingen og uploader den til TestFlight. Du kan om nødvendigt opdele denne proces i forskellige opgaver. Alle disse operationer (get_certificates, get_provisioning_profile, gym и upload_to_testflight) er allerede inkluderet i fastlane.

Aktivitet get_certificates и get_provisioning_profile relateret til underskriftstilgangen cert og suk. Hvis du bruger match eller hvad som helst, foretag ændringer.

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

Dette er en valgfri fil, men jeg oprettede den manuelt for at ændre standardoutputbiblioteket og placere outputtet i den aktuelle mappe. Dette forenkler CI. Hvis du er interesseret, så læs om gym og dens parametre i dokumentation.

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

Vores .gitlab-ci.yml

Så vi har en CI-løber til projektet, og vi er klar til at teste pipelinen. Lad os se, hvad vi har i .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

Все отлично! Vi indstiller formatet til UTF-8 for fastlane efter behov, brug strategi clone med eksekverende program shell, så vi har et rent arbejdsområde til hver forsamling, og ring blot flappybuild fastlane, som set ovenfor. Som et resultat får vi montering, underskrift og implementering af den seneste assembly i TestFlight.

Vi får også artefakten og gemmer den sammen med samlingen. Bemærk venligst, at formatet .ipa er en signeret ARM eksekverbar, der ikke kører i simulatoren. Hvis du vil have output til simulatoren, skal du blot tilføje det byggemål, der producerer det, og derefter inkludere det i artefaktstien.

Andre miljøvariabler

Der er et par miljøvariabler her, der får alt til at fungere.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Godkendelse til fastlane er påkrævet for at godkende i App Store og uploade til TestFlight. For at gøre dette skal du oprette en adgangskode til applikationen, der skal bruges i CI. detaljer her.

Hvis du har to-faktor-godkendelse, skal du oprette en variabel FASTLANE_SESSION (instruktioner der).

FASTLANE_USER и FASTLANE_PASSWORD

Det cert og suk kaldet initialiseringsprofilen og certifikater efter anmodning, skal du indstille variablerne FASTLANE_USER и FASTLANE_PASSWORD. detaljer her. Dette er ikke nødvendigt, hvis du bruger en anden signeringsmetode.

Afslutningsvis

Du kan se, hvordan det hele fungerer i mit simple eksempel.

Jeg håber, at dette var nyttigt og inspirerede dig til at arbejde med iOS-builds i et GitLab-projekt. Her er en anden CI tips til fastlane, for en sikkerheds skyld. Du vil måske bruge CI_BUILD_ID (til inkrementelle builds) til automatisk forøgelse af version.

En anden cool feature ved fastlane er automatiske skærmbilleder til App Store, som er meget nemme at sætte op.

Fortæl os i kommentarerne om din oplevelse og del dine ideer til at forbedre GitLab til iOS-appudvikling.

Kilde: www.habr.com

Tilføj en kommentar