Šiame straipsnyje dalinamės iOS programų surinkimo ir pateikimo vartotojams patirtimi, kurią Plarium Krasnodar studija sukaupė derindama CI/CD.
Mokymai
Kiekvienas žmogus, vienaip ar kitaip susijęs su Apple įrenginių aplikacijų kūrimu, jau įvertino prieštaringą infrastruktūros patogumą. Sunkumai randami visur: nuo kūrėjo profilio meniu iki derinimo ir kūrimo įrankių.
Internete yra daugybė straipsnių apie „pagrindus“, todėl pabandysime pabrėžti pagrindinį dalyką. Štai ko jums reikia norint sėkmingai sukurti programą:
„macOS“ pagrindu veikiantis įrenginys, veikiantis kaip kūrimo serveris;
sukurtas kūrėjo sertifikatas, kuris toliau bus naudojamas paraiškai pasirašyti;
sukurta programa su unikalia ID (atkreiptinas dėmesys į Bundle Identifier svarbą, nes naudojant pakaitos ID neįmanoma naudotis daugeliu aplikacijos funkcijų, pvz.: Associated Domains, Push Notifications, Apple Sign In ir kt.);
Kūrėjo sertifikatas turi būti sugeneruotas naudojant „Keychain“ bet kuriame „MacOS“ įrenginyje. Labai svarbu yra sertifikato tipas. Priklausomai nuo taikomosios aplinkos (kūrimas, kokybės užtikrinimas, tarpininkavimas, gamyba), ji skirsis (kūrimas arba platinimas), taip pat programos parašo profilio tipas.
Pagrindiniai profilių tipai:
Kūrimas – skirtas kūrimo komandos paraiškai pasirašyti, naudojamas Kūrimo sertifikatas (tipo pavadinimas iPhone Developer: XXXXX);
Ad Hoc – skirtas pasirašyti bandomąją aplikaciją ir vidinį kokybės užtikrinimo skyriaus patikrinimą, naudojamas kūrėjo Distribution sertifikatas (tipo pavadinimas iPhone Distribution: XXXXX);
„App Store“ – išleista versija išoriniam testavimui per „TestFlight“ ir įkėlimui į „App Store“, naudojamas kūrėjo platinimo sertifikatas.
Taip pat nurodoma kuriant kūrimo ir ad hoc profilius įrenginių sąrašą, kuriame galite įdiegti versiją, kuri leidžia dar labiau apriboti vartotojų prieigą. „App Store“ profilyje nėra įrenginių sąrašo, nes prieigos kontrolę uždaro beta versijos testavimo metu tvarko „TestFlight“, kuris bus aptartas vėliau.
Aiškumo dėlei galite pateikti kūrėjo profilį žemiau esančios lentelės pavidalu. Taip lengviau suprasti, kokių parametrų mums reikia surinkimui ir iš kur juos gauti.
Asamblėja
Kad būtų lengviau atskirti mazgus pagal projektą ir aplinką, naudojame profilių pavadinimus, pvz ${ProjectName}_${Instance}, tai yra projekto pavadinimas + egzempliorius (priklauso nuo taikomosios aplinkos: Dev, QA, GD, Staging, Live ir pan.).
Kai importuojamas į kūrimo serverį, profilis pakeičia pavadinimą į unikalų ID ir perkeliamas į aplanką /Users/$Username/Library/MobileDevice/Provisioning Profiles (Kur $Username atitinka kūrimo serverio vartotojo abonemento pavadinimą).
Yra du būdai, kaip sukurti *.ipa failą – senas (PackageApplication) ir modernus (per XcAchive kūrimą ir eksportavimą). Pirmasis metodas laikomas pasenusiu, nes nuo 8.3 versijos programos failų pakavimo modulis buvo pašalintas iš Xcode platinimo. Norėdami jį naudoti, turite nukopijuoti modulį iš senojo Xcode (8.2 ir senesnės versijos) į aplanką: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
Dabar surinktas failas turi būti pristatytas galutiniam vartotojui, tai yra, įdiegtas įrenginyje.
Yra daug paslaugų, skirtų „Development“ ir „Ad Hoc“ versijų platinimui, pavyzdžiui, „HockeyApp“, „AppBlade“ ir kt., tačiau šiame straipsnyje kalbėsime apie atskirą serverį, skirtą programoms platinti.
Programos iOS diegimas vyksta 2 etapais:
Programos diegimo aprašo gavimas per elementų tarnybą.
*.ipa failo įdiegimas pagal manifeste nurodytą informaciją per HTTPS.
Taigi pirmiausia turime sugeneruoti diegimo aprašą (failo tipas *.plist) su komanda:
Kaip matote, manifeste yra beveik visi parametrai, susiję su programos kūrimu.
Programos versija ($AppVersion) galima patikrinti naudojant komandą:
defaults read $ProjectDir/Info CFBundleVersion
Parametras $ipaUrl yra tiesioginė nuoroda į *.ipa failo atsisiuntimą. Nuo septintosios iOS versijos programa turi būti įdiegta per HTTPS. Aštuntoje versijoje manifesto formatas šiek tiek pasikeitė: blokai su programų piktogramų nustatymais, pvz
<images>
<image>...</image>
</images>
Taigi, norint įdiegti programą, pakanka paprasto HTML puslapio su tokia nuoroda:
Kaip parametro reikšmė -p galite paimti vertę $AppPswd nešifruota (aiškia) forma.
Tačiau, kaip jau minėta, našumo požiūriu, altool autorizacijai geriau pasirinkti API raktą, nes skirtingos Xcode versijos turi tam tikrų problemų („nemato“ Keychain, autorizacijos klaidos įkėlimo metu ir kt.).
Tai viskas, iš tikrųjų. Linkiu visiems, kurie dalyvauja sėkmingai kuriant ir be problemų išleidžiant „App Store“.