Hvordan GitLab med fastlane indsamler, signerer og udgiver iOS-applikationer til App Store.
Vi havde for nylig
Her vil vi tage
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
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
I dette eksempel bruger jeg fremgangsmåden
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
Opsætning af løberen er meget enkel. Følg nuværende
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
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
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
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
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
Все отлично! 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
Hvis du har to-faktor-godkendelse, skal du oprette en variabel FASTLANE_SESSION
(instruktioner der).
FASTLANE_USER
и FASTLANE_PASSWORD
Det FASTLANE_USER
и FASTLANE_PASSWORD
. detaljer
Afslutningsvis
Du kan se, hvordan det hele fungerer
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_BUILD_ID
(til inkrementelle builds) til
En anden cool feature ved fastlane er
Fortæl os i kommentarerne om din oplevelse og del dine ideer til at forbedre GitLab til iOS-appudvikling.
Kilde: www.habr.com