Publikojmë aplikacionet iOS në App Store me GitLab dhe fastlane.

Publikojmë aplikacionet iOS në App Store me GitLab dhe fastlane.

Si si GitLab me fastlane ndihmon në ndërtimin, nënshkrimin dhe publikimin e aplikacioneve për iOS në App Store.

Së fundmi patëm një postim mbi sesi të ndërtosh dhe lancosh një aplikacion Android me GitLab dhe fastlane. Këtu do të shohim si të ndërtosh dhe lançosh një aplikacion iOS dhe ta publikosh në TestFlight. Shiko sa e shkëlqyer është kur bëj një ndryshim në iPad Pro me GitLab Web IDE, marr ndërtimin dhe marr një përditësim të versionit të testit të aplikacionit në të njëjtin iPad Pro ku e kam zhvilluar.

Këtu do të marrim një aplikacion të thjeshtë për iOS në Swift, me të cilin kam regjistruar videon.

Disa fjalë për konfigurimin e Apple Store

Na nevojitet njĂ« aplikacion nĂ« App Store, certifikatat e shpĂ«rndarjes dhe profili i inicializimit, pĂ«r t’i lidhur tĂ« gjitha sĂ« bashku.

MĂ« e vĂ«shtira kĂ«tu Ă«shtĂ« tĂ« konfigurosh tĂ« drejtat e nĂ«nshkrimit nĂ« App Store. Shpresoj qĂ« me kĂ«tĂ« tĂ« jeni nĂ« gjendje tĂ« merrni vesh vetĂ«. NĂ«se jeni fillestar, do t’ju jap udhĂ«zime tĂ« nevojshme, por kĂ«tu nuk do flasim pĂ«r hollĂ«sitĂ« e menaxhimit tĂ« certifikatave Apple, ndonjĂ«herĂ« ato ndryshojnĂ« shpesh. Ky post do t'ju ndihmojĂ« tĂ« filloni.

Aplikacionet e mia

Nevojitet një aplikacion në App Store Connect, që të keni një ID për konfigurimin .xcodebuild. Profili dhe ID i aplikacionit bashkojnë ndërtimet e kodit, çmimet dhe disponueshmërinë, gjithashtu dhe konfigurimin e TestFlight për shpërndarjen e aplikacioneve testuese midis përdoruesve. Mos e bëni testimin publik, mjafton ai privat nëse keni një grup të vogël, konfigurim të thjeshtë dhe nuk keni nevojë për leje shtesë nga Apple.

Profili i inicializimit

Përveç konfigurimit të aplikacionit, ju nevojiten çelësat e shpërndarjes dhe zhvillimit iOS, të krijuar në seksionin Certifikatat, Identifikatorët & Profillet në konsolën e Zhvilluesit të Apple. Të gjitha këto certifikata mund të bashkohen në profilin e inicializimit.

Përdoruesit që do të kalojnë autentikimin kanë nevojë për aftësinë për të krijuar certifikata, përndryshe në fazat cert dhe sigh do të shihni një gabim.

Opsione të tjera

Përveç këtij metodi të thjeshtë, ka edhe mënyra të tjera për të konfiguruar certifikatat dhe profillet. Pra, nëse punoni ndryshe, ndoshta do të duhet të ristrukturoni. E rëndësishmja është që ju nevojitet konfigurimi .xcodebuild, e cila do të tregojë skedarët e nevojshëm, dhe lidhja e çelësave duhet të jetë e aksesueshme në kompjuterin e ndërtimit për përdoruesin nën emrin e të cilit punon runneri. Për nënshkrimin dixhital, ne përdorim fastlane, dhe nëse keni probleme ose dëshironi të mësoni më shumë, shqyrtoni dokumentacionin e tyre të detajuar për nënshkrimet dixhitale.

Në këtë shembull, po përdor qasjen cert dhe sigh, por për aplikimin real, ndoshta është më mirë të përdoret përputhje.

Përgatitja e GitLab dhe fastlane

Përgatitja e CI Runner

Pas mbledhjes sĂ« tĂ« gjitha kĂ«tyre tĂ« dhĂ«nave, kalojmĂ« nĂ« konfigurimin e GitLab-runners nĂ« pajisjen MacOS. FatkeqĂ«sisht, ndĂ«rtimi i aplikacioneve iOS Ă«shtĂ« realisht i mundur vetĂ«m nĂ« MacOS. Por gjithçka mund tĂ« ndryshojĂ«, dhe nĂ«se po prisni lĂ«vizje nĂ« kĂ«tĂ« fushĂ«, — ndiqni projektet, si xcbuild dhe isign, dhe detyra jonĂ« tĂ« brendshme gitlab-ce#57576.

Të konfigurosh runnerin është shumë e thjeshtë. Ndiqni udhëzimet aktuale për konfigurimin e GitLab Runner në macOS.

Shënim. Runneri duhet të përdorë programin ekzekutiv shell. Kjo është e nevojshme për ndërtimin e iOS në macOS, që të punojë drejtpërdrejt si përdorues, e jo përmes kontejnerëve. Nëse po përdorni shell, ndërtimi dhe testimi kryhen në emër të përdoruesit të runner-it, direkt në hostin e ndërtimit. Kjo nuk është aq e sigurt sa kontejnerët, prandaj është më mirë ta shqyrtoni. dokumentacionin mbi sigurinë, për të mos humbur asgjë.

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

Cilësimi i çelësit Apple duhet të jetë i konfiguruar në këtë host me qasje në çelësat që i nevojiten Xcode për ndërtimin. Mënyra më e lehtë për ta testuar këtë është të hyni si përdoruesi që do të bëjë ndërtimin dhe të provoni të ekzekutoni ndërtimin manualisht. Nëse sistemi kërkon qasje në çelësin e çelësit, zgjidhni 'Lejo gjithmonë', që CI të funksionojë. Ndoshta ia vlen të hyni dhe të vëzhgoni disa nga pipeline-t e para, për të siguruar që ata nuk kërkojnë më çelësin e çelësit. Problemi është se Apple nuk e lehtëson punën tonë me modalitetin automatike, por kur ta keni vendosur, gjithçka do të shkojë mirë.

fastlane init

Për të përdorur fastlane në projekt, ekzekutoni fastlane init. Thjesht ndiqni udhëzimet për instalimin dhe ekzekutimin e fastlane-ë, veçanërisht në seksionin mbi Gemfile, sepse na nevojitet një nisje e shpejtë dhe e parashikueshme përmes një konvejeri automatizimi CI.

Në katalogun e projektit, ekzekutoni këto komandë:

xcode-select --install
sudo gem install fastlane -NV
# Alternativisht, duke përdorur Homebrew
# brew cask install fastlane
fastlane init

fastlane do të kërkojë konfigurimin bazë dhe pastaj do të krijojë një folder fastlane në projekt me tre skedarë:

1. fastlane/Appfile

Këtu nuk ka asgjë të komplikuar. Thjesht kontrolloni që Apple ID dhe ID e aplikacionit të jenë të saktë.

app_identifier("com.vontrance.flappybird") # Identifikuesi i paketës së aplikacionit tuaj
apple_id("your-email@your-domain.com") # Adresa juaj e emailit të Apple

2. fastlane/Fastfile

Fastfile përcakton hapat e ndërtimit. Ne përdorim shumë funksionalitete të ndërtuara në fastlane, kështu që këtu gjithashtu është e qartë. Krijojmë një linjë që merr certifikatat, realizon ndërtimin dhe e ngarkon atë në TestFlight. Mund ta ndani këtë proces në detyra të ndryshme, nëse nevojitet. Të gjitha këto operacione (get_certificates, get_provisioning_profile, gym dhe upload_to_testflight) janë tashmë të përfshira në fastlane.

Veprime get_certificates dhe get_provisioning_profile lidhen me qasjen e nënshkrimit cert dhe sigh. Nëse përdorni përputhje apo diçka tjetër, bëni ndryshimet.

default_platform(:ios)

platform :ios do
  desc "Ndërto aplikacionin"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Ky është një skedar joobligator, por unë e krijova manualisht për të ndryshuar katalografin e daljes së paracaktuar dhe për ta vendosur daljen në dosjen aktuale. Kjo e thjeshton CI. Nëse jeni të interesuar, lexoni për gym dhe parametrat e tij në dokumentacion.

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

Platforma jonë .gitlab-ci.yml

Pra, kemi një CI-runner për projektin dhe jemi gati të provojmë pipeline-in. Le të shohim çfarë kemi në .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

E gjitha shkoi mirë! Ne caktuam formatin UTF-8 për fastlane, ashtu siç kërkohet, përdorim strategjinë clone me programin ekzekutues shell, për të pasur një hapësirë pune të pastër për çdo ndërtim, dhe thjesht thërrasim flappybuild fastlane, siç e shihni më sipër. Në fund, ne marrim një ndërtim, nënshkrim dhe shpërndarje të ndërtimit të fundit në TestFlight.

Po ashtu marrim një artefakt dhe e ruajmë me ndërtimin. Vini re se formati .ipa është një skedar ekzekutiv i nënshkruar ARM, i cili nuk ekzekutohet në simulator. Nëse dëshironi daljen për simulatorin, thjesht shtoni një target ndërtimi që e prodhon atë dhe pastaj përfshini atë në rrugën e artefaktit.

Variablat e tjera të ambientit

Këtu ka disa variabla ambienti, në të cilat gjithçka funksionon.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD dhe FASTLANE_SESSION

Për autentifikim në App Store dhe ngarkim në TestFlight, kërkohet autentifikimi për fastlane. Kjo do të thotë të krijoni një fjalëkalim për aplikacionin që do të përdoret në CI. Detajet këtu.

Nëse keni autentifikim me dy faktorë, krijoni një variabël FASTLANE_SESSION (udhtimet janë gjithashtu aty).

FASTLANE_USER dhe FASTLANE_PASSWORD

Për cert dhe sigh kanë thirrur profilin dhe certifikatat sipas kërkesës, duhet të caktoni variablat FASTLANE_USER dhe FASTLANE_PASSWORD. Detajet këtu. Kjo nuk është e nevojshme nëse përdorni një metodë tjetër nënshkrimi.

Në përfundim

Mund të shihni se si funksionon kjo në shembullin tim të thjeshtë.

Shpresoj se kjo ishte e dobishme dhe ju frymëzoi të punoni me ndërtimet iOS në projektin GitLab. Ja disa këshilla për CI për fastlane, për rastin që dëshironi të përdorni CI_BUILD_ID (për ndërtimet incrementale), për të incrementuar automatikisht versionin.

Një mundësi tjetër e shkëlqyer e fastlane është screenshot-et automatike për App Store, që janë shumë të lehta për tu konfiguruar.

Tregoni në komente për experience tuaj dhe ndani ide për përmirësimin e GitLab për zhvillimin e aplikacioneve iOS.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster