
Hur GitLab med fastlane bygger, signerar och publicerar applikationer för iOS i App Store.
Nyligen hade vi en med GitLab och Här kommer vi att se hur man bygger och lanserar en iOS-applikation och publicerar den i TestFlight. Kolla in hur häftigt , 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 , 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 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, и если есть проблемы или вы хотите узнать больше, изучите их подробную .
I det här exemplet använder jag en strategi , men för verklig tillämpning kanske .
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 och , och vår interna uppgift .
Att konfigurera runnern är mycket enkelt. Följ de aktuella .
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 , 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 startApple-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 , särskilt i avsnittet om , 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 initfastlane 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-postadress2. 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 . Om du använder 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
end3. 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 .
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.ipaAllt ser bra ut! , 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 .
Om du har tvåfaktorsautentisering, skapa en variabel FASTLANE_SESSION (instruktioner där).
FASTLANE_USER och FASTLANE_PASSWORD
För att har kallat profil och certifikat på begäran, du behöver ställa in variabler FASTLANE_USER och FASTLANE_PASSWORD. Mer information . Detta behövs inte om du använder en annan signeringsmetod.
Avslutningsvis
Se hur allt fungerar .
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 för fastlane, ifall du vill använda CI_BUILD_ID (för inkrementella byggen) för att .
Ännu en cool funktion i fastlane är 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
