Hur GitLab med fastlane samlar in, signerar och publicerar iOS-applikationer till App Store.
Vi hade nyligen
Här tar vi
Några ord om Apple Store-konfigurationen
Vi behöver en App Store-app, distributionscertifikat och en provisioneringsprofil för att knyta ihop allt.
Det svåraste här är att ställa in signeringsrättigheter i App Store. Jag hoppas att du kan reda ut detta själv. Om du är ny kommer jag att peka dig i rätt riktning, men vi kommer inte att prata om krångligheterna med att hantera Apple-certifikat här, och de förändras ständigt. Det här inlägget hjälper dig att komma igång.
Mina appar
Du behöver en app i App Store Connect så att du har ett ID för konfiguration .xcodebuild
. Profilen och applikations-ID kombinerar kodbyggen, prissättning och tillgänglighet, och TestFlight-konfiguration för att distribuera testapplikationer till användare. Gör inte offentliga tester, privata tester räcker om du har en liten grupp, enkel installation och inte behöver ytterligare behörigheter från Apple.
Initialiseringsprofil
Utöver appinställningen behöver du iOS-distributions- och utvecklingsnycklar skapade i avsnittet Certificates, Identifiers & Profiles på Apples utvecklarkonsol. Alla dessa certifikat kan kombineras till en provisioneringsprofil.
Användare som kommer att autentiseras måste kunna skapa certifikat, annars stegen
andra alternativ
Förutom denna enkla metod finns det andra sätt att konfigurera certifikat och profiler. Så om du arbetar annorlunda kan du behöva anpassa dig. Det viktigaste är att du behöver konfiguration .xcodebuild
, som kommer att peka på de nödvändiga filerna, och nyckelringen måste vara tillgänglig på byggdatorn för användaren under vars namn löparen körs. För digital signatur använder vi fastlane, och om det finns problem eller om du vill veta mer, kolla in deras uppgifter
I det här exemplet använder jag metoden
Förbereder GitLab och fastlane
Förbereder CI Runner
Efter att ha samlat in all denna data går vi vidare till konfigurationen av GitLab-löparen på MacOS-enheten. Tyvärr kan du bara skapa iOS-appar på MacOS. Men allt kan förändras, och om du förväntar dig framsteg på detta område, håll ett öga på projekt som
Att ställa in löparen är väldigt enkelt. Följ nuvarande
Notera. Löparen måste använda ett körbart program shell
. Detta krävs för att bygga iOS på macOS för att fungera direkt som användare snarare än genom behållare. Om du använder shell
, byggs och testas som löparanvändare, direkt på byggvärden. Det är inte lika säkert som behållare, så det är bättre att bläddra
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 måste konfigureras på denna värd med åtkomst till de nycklar som Xcode behöver bygga. Det enklaste sättet att testa detta är att logga in som den användare som ska köra bygget och försöka bygga det manuellt. Om systemet ber om nyckelringstillgång, välj Tillåt alltid för CI att fungera. Det kan vara värt att gå in och titta på de första par pipelines för att se till att de inte frågar efter nyckelringen längre. Problemet är att Apple inte gör det lätt för oss att använda Auto-läget, men när du väl kommer igång kommer allt att bli bra.
fastlane init
För att använda fastlane i ett projekt, kör fastlane init
. Bara följ
Kör dessa kommandon i din projektkatalog:
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init
fastlane kommer att fråga efter en grundläggande konfiguration och sedan skapa en fastlane-mapp i projektet med tre filer:
1. fastlane/Appfile
Det är inget komplicerat här. Se bara till att ditt Apple-ID och App-ID är korrekta.
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address
2. fastlane/Fastfile
Fastfile
definierar byggstegen. Vi använder många av fastlanes inbyggda funktioner, så allt är klart även här. Vi skapar en rad som tar emot certifikat, utför monteringen och laddar upp den till TestFlight. Du kan dela upp denna process i olika uppgifter om det behövs. Alla dessa operationer (get_certificates
, get_provisioning_profile
, gym
и upload_to_testflight
) ingår redan i fastlane.
Aktivitet get_certificates
и get_provisioning_profile
relaterat till signeringsmetoden
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
Detta är en valfri fil, men jag skapade den manuellt för att ändra standardutdatakatalogen och placera utdata i den aktuella mappen. Detta förenklar CI. Om du är intresserad, läs om gym
och dess parametrar i
https://docs.fastlane.tools/actions/gym/
Vårt .gitlab-ci.yml
Så vi har en CI-löpare för projektet och vi är redo att testa pipelinen. Låt oss se vad 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 körande program shell
, så att vi har en ren arbetsyta för varje montering, och ring helt enkelt flappybuild
fastlane, som ses ovan. Som ett resultat får vi montering, signatur och distribution av den senaste sammansättningen i TestFlight.
Vi får också artefakten och sparar den med monteringen. Observera att formatet .ipa
är en signerad ARM-körbar fil som inte körs i simulatorn. Om du vill ha utdata för simulatorn, lägg bara till byggmålet som producerar det och inkludera det sedan i artefaktvägen.
Andra miljövariabler
Det finns ett par miljövariabler här som gör att allt fungerar.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
и FASTLANE_SESSION
Autentisering för fastlane krävs för att autentisera i App Store och ladda upp till TestFlight. För att göra detta, skapa ett lösenord för applikationen som ska användas i CI. Detaljer
Om du har tvåfaktorsautentisering, skapa en variabel FASTLANE_SESSION
(instruktioner där).
FASTLANE_USER
и FASTLANE_PASSWORD
Att FASTLANE_USER
и FASTLANE_PASSWORD
. Detaljer
Sammanfattningsvis
Du kan se hur det hela fungerar
Jag hoppas att detta var till hjälp och inspirerade dig att arbeta med iOS-byggen i ett GitLab-projekt. Här är en annan CI_BUILD_ID
(för inkrementella byggnader) till
En annan cool funktion hos fastlane är
Berätta för oss i kommentarerna om din upplevelse och dela dina idéer för att förbättra GitLab för iOS-apputveckling.
Källa: will.com