Publicera iOS-appar till App Store med GitLab och fastlane

Publicera iOS-appar till App Store med GitLab och fastlane

Hur GitLab med fastlane samlar in, signerar och publicerar iOS-applikationer till App Store.

Vi hade nyligen inlägg om hur man snabbt bygger och kör en Android-applikation med GitLab och omkörningsfilen. Här kommer vi att se hur man bygger och kör en iOS-app och publicerar den till TestFlight. Kolla hur coolt det är Jag gör en förändring på en iPad Pro med GitLab Web IDE, jag tar monteringen och får en uppdatering till testversionen av applikationen på samma iPad Pro där jag utvecklade den.

Här tar vi enkel iOS-app på Swift, som jag spelade in videon med.

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 cert och suck du kommer att se ett fel.

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 dokumentation om digitala signaturer.

I det här exemplet använder jag metoden cert och suck, men för verklig användning är den förmodligen bättre lämpad matcha.

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 xcbuild и skyltoch vår interna uppgift gitlab-ce#57576.

Att ställa in löparen är väldigt enkelt. Följ nuvarande instruktioner för att ställa in GitLab Runner på macOS.

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 säkerhetsdokumentationså att du inte missar något.

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 instruktioner för att installera och köra fastlane, särskilt i avsnittet om Gemfiles, eftersom vi behöver snabb och förutsägbar lansering genom en automatiserad CI-pipeline.

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 cert och suck. Om du använder matcha eller vad som helst, gör ändringar.

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

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

Все отлично! Vi ställer in formatet till UTF-8 för fastlane efter behov, använd strategi 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 här.

Om du har tvåfaktorsautentisering, skapa en variabel FASTLANE_SESSION (instruktioner där).

FASTLANE_USER и FASTLANE_PASSWORD

Att cert och suck kallas initialiseringsprofilen och certifikat på begäran, måste du ställa in variablerna FASTLANE_USER и FASTLANE_PASSWORD. Detaljer här. Detta är inte nödvändigt om du använder en annan signeringsmetod.

Sammanfattningsvis

Du kan se hur det hela fungerar i mitt enkla exempel.

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 tips för fastlane, för säkerhets skull. Du kanske vill använda CI_BUILD_ID (för inkrementella byggnader) till automatiskt öka versionen.

En annan cool funktion hos fastlane är automatiska skärmdumpar för App Store, som är mycket enkla att ställa in.

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

Lägg en kommentar