Vi publicerar iOS-appar i App Store med GitLab och fastlane

Vi publicerar iOS-appar i App Store med GitLab och fastlane

Hur GitLab med fastlane bygger, signerar och publicerar applikationer för iOS i App Store.

Nyligen hade vi en post om hur man snabbt bygger och lanserar en Android-applikation med GitLab och fastlane.Här kommer vi att se hur man bygger och lanserar en iOS-applikation och publicerar den i TestFlight. Kolla in hur häftigt jag gör en ändring på iPad Pro med GitLab Web IDE, tar en byggnad och får en uppdatering av testversionen av applikationen på samma iPad Pro där jag utvecklade den.

Här kommer vi att ta en enkel iOS-applikation på Swift, som jag spelade in en video med.

Några ord om Apple Store-konfigurationen

Vi behöver en app i App Store, distributionscertifikat och en initieringsprofil för att knyta allt samman.

Det svåraste här är att ställa in signeringsrättigheter i App Store. Jag hoppas att ni kan klara av det själva. Om du är nybörjare kommer jag att ge dig den nödvändiga riktningen, men här kommer vi inte att prata om detaljerna kring hantering av Apple-certifikat, eftersom de ständigt förändras. Den här posten kommer att hjälpa dig att komma igång.

Mina applikationer

Du behöver en applikation i App Store Connect för att ha ett ID för konfigurationen .xcodebuild. Profilen och applikations-ID:t kopplar samman kodbyggen, priser och tillgänglighet, samt TestFlight-konfigurationen för att distribuera testapplikationer till användare. Gör inget offentligt test, ett privat test räcker om du har en liten grupp, enkel konfiguration och inte behöver ytterligare behörigheter från Apple.

Initieringsprofil

Förutom att sätta upp applikationen behöver du distributions- och utvecklingsnycklar för iOS, skapade i avsnittet Certifikat, identifierare & profiler (Certificates, Identifiers & Profiles) i Apple Developer-konsolen. Alla dessa certifikat kan sammanfogas i en initieringsprofil.

Användare som ska autentiseras behöver möjlighet att skapa certifikat, annars kommer du att se ett fel vid cert och sigh. Andra alternativ

Förutom denna enkla metod finns det andra sätt att konfigurera certifikat och profiler. Så om du arbetar på ett annat sätt kan det hända att du behöver omstrukturera. Det viktigaste är att du behöver en konfiguration

, som pekar på nödvändiga filer, och nyckelringen måste vara tillgänglig på byggdatorn för användaren vars namn som köraren arbetar under. För digital signering använder vi fastlane, och om det finns problem eller om du vill veta mer, titta på deras detaljer. .xcodebuild, которая будет указывать на нужные файлы, а связка ключей должна быть доступна на компьютере сборки для пользователя, под чьим именем работает раннер. Для цифровой подписи мы используем fastlane, и если есть проблемы или вы хотите узнать больше, изучите их подробную dokumentation om digitala signaturer.

I det här exemplet använder jag en strategi cert och sigh., men för verklig tillämpning kanske match.

Förberedelse av GitLab och fastlane

Förberedelse av CI Runner

När vi har samlat all denna information går vi över till att konfigurera GitLab-runnern på en MacOS-enhet. Tyvärr kan iOS-appar endast skapas på MacOS. Men allt kan förändras, och om du väntar på framsteg på detta område, håll dig uppdaterad med projekt som xcbuild och isign, och vår interna uppgift gitlab-ce#57576.

Att konfigurera runnern är mycket enkelt. Följ de aktuella instruktionerna för att konfigurera GitLab Runner i macOS.

Observera. Runnern måste använda körsättet shell. Detta är nödvändigt för iOS-bygge i macOS, för att arbeta direkt som användare, istället för genom containrar. Om du använder shell, utförs bygget och testningen under runneranvändarens namn, direkt på byggvärden. Detta är inte lika säkert som containrar, så det är bäst att bläddra igenom dokumentationen om säkerhet, så 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-kontot måste vara konfigurerat på denna värd med tillgång till de nycklar som krävs av Xcode för bygget. Det enklaste sättet att testa detta är att logga in som den användare som kommer att köra bygget och försöka genomföra bygget manuellt. Om systemet ber om tillgång till kontot väljer du "Alltid tillåt" så att CI fungerar. Det kan vara värt att logga in och observera de första paar pipelines, för att se till att de inte längre begär kontot. Problemet är att Apple inte gör det enkelt för oss att använda automatisk metod, men när du väl har fått det att fungera, kommer allt att vara bra.

fastlane init

För att använda fastlane i projektet, kör fastlane init. Följ bara installations- och körinstruktionerna för fastlane, särskilt i avsnittet om Gemfile, eftersom vi behöver snabb och förutsägbar körning genom den automatiska CI-pipelinen.

I projektkatalogen kör dessa kommandon:

xcode-select --install
sudo gem install fastlane -NV
# Alternativt via Homebrew
# brew cask install fastlane
fastlane init

fastlane kommer att be om grundläggande konfiguration och sedan skapa en mapp i projektet som heter fastlane med tre filer:

1. fastlane/Appfile

Här är det inget komplicerat. Kontrollera bara att Apple ID och app-ID är korrekt angivna.

app_identifier("com.vontrance.flappybird") # Paketidentifier för din app
apple_id("your-email@your-domain.com") # Din Apple-e-postadress

2. fastlane/Fastfile

Fastfile definierar byggstegen. Vi använder många inbyggda funktioner i fastlane, så allt här är också tydligt. Vi skapar en rad som hämtar certifikat, utför bygget och laddar upp det till TestFlight. Du kan dela upp den här processen i olika uppgifter om det behövs. Alla dessa operationer (get_certificates, get_provisioning_profile, gym och upload_to_testflight) ingår redan i fastlane.

Åtgärder get_certificates och get_provisioning_profile är relaterade till signeringsmetoden cert och sigh.. Om du använder match eller något annat, gör ändringar.

default_platform(:ios)

platform :ios do
  desc "Bygg applikationen"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Det här är en valfri fil, men jag skapade den manuellt för att ändra standardutgångskatalogen och placera utdata i den aktuella mappen. Det förenklar CI. Om du är intresserad, läs om gym och dess parametrar i dokumentationen.

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

Vår .gitlab-ci.yml

Så vi har en CI-körning 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

Allt ser bra ut! Vi ställer in UTF-8 format för fastlane, precis som krävs, använder strategin clone med körprogrammet shell, så att vi har ett rent arbetsutrymme för varje byggnad, och helt enkelt anropar flappybuild fastlane, som syns ovan. Resultatet är att vi får bygget, signeringen och distributionen av den senaste bygget till TestFlight.

Vi får även artefakten och sparar den med bygget. Observera att formatet .ipa är en signerad körbar ARM-fil som inte körs på simulatorn. Om du vill ha utdata för simulatorn, lägg bara till en byggmål som producerar den och inkludera den i artefaktens sökväg.

Andra miljövariabler

Här finns ett par miljövariabler som allt fungerar på.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD och FASTLANE_SESSION

För autentisering i App Store och uppladdning till TestFlight krävs autentisering för fastlane. Skapa ett app-specifikt lösenord som ska användas i CI. Mer information här.

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

FASTLANE_USER och FASTLANE_PASSWORD

För att cert och sigh. har kallat profil och certifikat på begäran, du behöver ställa in variabler FASTLANE_USER och FASTLANE_PASSWORD. Mer information här. Detta behövs inte om du använder en annan signeringsmetod.

Avslutningsvis

Se hur allt fungerar i mitt enkla exempel.

Jag hoppas att detta var användbart och att jag har inspirerat dig att arbeta med iOS-byggnader i GitLab-projektet. Här är några fler CI-tips för fastlane, ifall du vill använda CI_BUILD_ID (för inkrementella byggen) för att automatiskt inkrementera versionen.

Ännu en cool funktion i fastlane är automatiska skärmbilder för App Store, som är väldigt enkelt att konfigurera.

Berätta gärna i kommentarerna om din erfarenhet och dela idéer för att förbättra GitLab för iOS-utveckling.

Källa: habr.com

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster