Katika makala hii, tunashiriki uzoefu wa kukusanyika na kuwasilisha maombi ya iOS kwa watumiaji, ambayo studio ya Plarium Krasnodar imekusanya katika mchakato wa kurekebisha CI/CD.
Mafunzo ya
Kila mtu ambaye kwa njia moja au nyingine anahusika katika uundaji wa programu za vifaa vya Apple tayari amethamini urahisi wa utata wa miundombinu. Ugumu unapatikana kila mahali: kutoka kwa menyu ya wasifu wa msanidi programu hadi utatuzi na zana za ujenzi.
Kuna vifungu vingi kuhusu "misingi" kwenye mtandao, kwa hivyo tutajaribu kuonyesha jambo kuu. Hivi ndivyo unahitaji ili kuunda programu yako kwa mafanikio:
programu iliyoundwa na ya kipekee ID (umuhimu wa Kitambulisho cha Bundle unapaswa kuzingatiwa, kwa sababu matumizi ya kitambulisho cha kadi-mwitu hufanya kuwa vigumu kutumia vipengele vingi vya programu, kwa mfano: Vikoa Vinavyohusishwa, Arifa za Push, Apple Ingia na wengine);
Cheti cha msanidi lazima kitolewe kupitia Keychain kwenye kifaa chochote cha macOS. Aina ya cheti ni muhimu sana. Kulingana na mazingira ya maombi (Dev, QA, Staging, Production) itatofautiana (Maendeleo au Usambazaji), kama itakavyokuwa aina ya wasifu wa saini ya programu.
Aina kuu za wasifu:
Maendeleo - iliyokusudiwa kutia saini ombi la timu ya ukuzaji, cheti cha Maendeleo kinatumika (jina la aina ya iPhone Developer: XXXXX);
Ad Hoc - iliyokusudiwa kutia saini ombi la majaribio na uthibitishaji wa ndani na idara ya QA, cheti cha Usambazaji cha msanidi kinatumika (aina ya jina la Usambazaji wa iPhone: XXXXX);
Duka la Programu - muundo wa toleo la majaribio ya nje kupitia TestFlight na upakiaji kwenye Duka la Programu, cheti cha Usambazaji cha msanidi kinatumika.
Wakati wa kutengeneza wasifu wa Maendeleo na Ad Hoc, inaonyeshwa pia orodha ya kifaa, ambayo unaweza kusakinisha jengo, ambayo inakuwezesha kuzuia zaidi upatikanaji wa watumiaji. Hakuna orodha ya vifaa katika wasifu wa Duka la Programu, kwa kuwa udhibiti wa ufikiaji wakati wa majaribio ya beta ya watu wachache hushughulikiwa na TestFlight, ambayo itajadiliwa baadaye.
Kwa uwazi, unaweza kuwasilisha wasifu wa msanidi programu kwa namna ya jedwali lililo hapa chini. Hii hurahisisha kuelewa ni vigezo gani tunahitaji kwa mkusanyiko na mahali pa kuvipata.
Mkutano
Ili kurahisisha kutenganisha makusanyiko kwa mradi na mazingira, tunatumia majina ya wasifu kama ${ProjectName}_${Instance}, yaani, jina la mradi + mfano (inategemea mazingira ya maombi: Dev, QA, GD, Staging, Live, na kadhalika).
Inapoingizwa kwenye seva ya ujenzi, wasifu hubadilisha jina lake kuwa kitambulisho cha kipekee na huhamishwa hadi kwenye folda /Users/$Username/Library/MobileDevice/Provisioning Profiles (Wapi $Username inalingana na jina la akaunti ya mtumiaji wa seva ya ujenzi).
Kuna njia mbili za kujenga faili ya * .ipa - urithi (PackageApplication) na ya kisasa (kupitia uundaji na usafirishaji wa XcAchive). Njia ya kwanza inachukuliwa kuwa ya kizamani, kwani tangu toleo la 8.3 moduli ya ufungaji wa faili ya programu imeondolewa kutoka kwa usambazaji wa Xcode. Ili kuitumia, unahitaji kunakili moduli kutoka kwa Xcode ya zamani (toleo la 8.2 na mapema) hadi folda: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
-scheme - mpango uliotumika, ulioainishwa katika mradi.
-derivedDataPath — njia ya kupakua programu iliyokusanywa (*.programu).
CODE_SIGN_IDENTITY — jina la akaunti ya msanidi programu, ambalo linaweza kuthibitishwa katika Keychain (Msanidi wa iPhone: XXXX XXXXXXX, bila Kitambulisho cha Timu kwenye mabano).
PROVISIONING_PROFILE - Kitambulisho cha Profaili cha kusaini programu, ambayo inaweza kupatikana kwa amri:
cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'
Ikiwa programu hutumia wasifu wa ziada (kwa mfano, kwa Arifa za Push), basi badala ya PROVISIONING_PROFILE onyesha:
Hata hivyo, njia hii inachukuliwa kuwa ya kizamani kutoka kwa mtazamo wa Apple. Ni muhimu kupata *.ipa kwa kusafirisha kutoka kwa kumbukumbu ya programu.
$Method — njia ya uwasilishaji, inalingana na aina ya wasifu wa saini ya programu, yaani, kwa Maendeleo, thamani itatengenezwa, kwa Ad Hoc - ad-hoc, na kwa App Store - app store.
$BundleID - Kitambulisho cha programu, ambacho kimeainishwa katika mipangilio ya programu. Unaweza kuangalia na amri:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId - jina la msanidi programu na mipangilio sahihi ya kitambulisho cha wasifu ambayo ilitumiwa hapo awali na lazima ilingane na thamani katika mipangilio ya kuhamisha.
$TeamID — Kitambulisho cha tarakimu kumi kwenye mabano baada ya jina la msanidi programu, mfano: Msanidi wa iPhone: …… (XXXXXXXXXX); inaweza kuangaliwa katika Keychain.
Ifuatayo, kwa kutumia amri ya kuuza nje, tunapata faili muhimu ya *.ipa:
Sasa faili iliyokusanywa inahitaji kuwasilishwa kwa mtumiaji wa mwisho, yaani, imewekwa kwenye kifaa.
Kuna huduma nyingi za kusambaza ujenzi wa Maendeleo na Ad Hoc, kama vile HockeyApp, AppBlade na zingine, lakini katika nakala hii tutazungumza juu ya seva inayojitegemea ya kusambaza programu.
Kusakinisha programu kwa iOS hufanyika katika hatua 2:
Kupokea onyesho la usakinishaji wa programu kupitia Huduma ya Vipengee.
Usakinishaji wa faili ya *.ipa kulingana na maelezo yaliyobainishwa kwenye faili ya maelezo kupitia HTTPS.
Kwa hivyo, tunahitaji kwanza kutoa faili ya usakinishaji (aina ya faili *.plist) kwa amri:
Kama unavyoona, faili ya maelezo ina karibu vigezo vyote vinavyohusika katika kuunda programu.
Toleo la maombi ($AppVersion) inaweza kukaguliwa na amri:
defaults read $ProjectDir/Info CFBundleVersion
Parameter $ipaUrl ina kiungo cha moja kwa moja cha kupakua faili ya *.ipa. Kutoka kwa toleo la saba la iOS, programu lazima isakinishwe kupitia HTTPS. Katika toleo la nane, umbizo la onyesho limebadilika kidogo: vizuizi vilivyo na mipangilio ya ikoni za programu kama vile
<images>
<image>...</image>
</images>
Kwa hivyo, kusanikisha programu, ukurasa rahisi wa HTML na kiunga kama hiki unatosha:
Kwa mahitaji ya idara za ukuzaji na upimaji, Plarium imeunda programu yake ya usanidi wa ujenzi, ambayo inatupa:
uhuru na uhuru,
ujumuishaji wa udhibiti wa ufikiaji na usakinishaji salama wa programu kupitia viungo vya "muda" vilivyoundwa kwa nguvu,
utendakazi unaoweza kupanuka (yaani, timu ya ukuzaji, ikiwa ni lazima, inaweza kuunganisha vitendaji vilivyokosekana kwenye programu iliyopo).
Upimaji
Sasa tutazungumza juu ya majaribio ya kabla ya kutolewa kwa programu kwa kutumia TestFlight.
Masharti yanayohitajika ya kupakua ni aina ya wasifu sahihi wa Duka la Programu na uwepo wa vitufe vya API vilivyotengenezwa.
Kuna njia kadhaa za kupakua programu:
kupitia Xcode (Mratibu),
kupitia altool,
kupitia Loader ya Maombi kwa matoleo ya zamani ya Xcode (sasa Transporter).
Kwa kupakua kiotomatiki, altool hutumiwa, ambayo pia ina njia mbili za idhini:
Nenosiri Maalum la Programu,
Ufunguo wa API.
Ni vyema kupakua programu kwa kutumia Ufunguo wa API.
Ili kupata Ufunguo wa API, nenda kwa kiungo na kuzalisha ufunguo. Mbali na ufunguo wenyewe katika umbizo la *.p8, tutahitaji vigezo viwili: Kitambulisho cha Mtoaji na Kitambulisho cha Ufunguo.
Ifuatayo, ingiza ufunguo uliopakuliwa kwa seva ya ujenzi:
Je! apiKey и apiIssuer kuwa na maadili ya uga kutoka kwa ukurasa wa uundaji wa ufunguo wa API.
Ifuatayo, baada ya uthibitisho uliofanikiwa, tunapakia programu kwa amri --upload-app na vigezo sawa.
Programu itajaribiwa na Apple ndani ya siku moja au mbili na kisha itapatikana kwa wanaojaribu kutoka nje: watatumiwa viungo kwa barua pepe ili kusakinishwa.
Njia nyingine ya kupakua programu kupitia altool ni kutumia Nenosiri Maalum la Programu.
Ili kupata Nenosiri Maalum la Programu unahitaji kwenda kiungo na kuizalisha katika sehemu ya Usalama.
Ifuatayo, unapaswa kuunda rekodi ya seva katika Keychain na nenosiri hili. Kutoka kwa toleo la 11 la Xcode hii inaweza kufanywa kwa amri:
Kama thamani ya kigezo -p unaweza kuchukua thamani $AppPswd kwa njia ambayo haijasimbwa (dhahiri).
Walakini, kama ilivyotajwa tayari, kutoka kwa mtazamo wa utendaji, ni bora kuchagua Ufunguo wa API kwa idhini ya altool, kwani matoleo tofauti ya Xcode yana shida fulani ("haoni" Keychain, makosa ya idhini wakati wa upakiaji, nk).
Hiyo ndiyo yote, kwa kweli. Natamani kila mtu anayehusika apate matoleo yenye mafanikio na yasiyo na matatizo katika Duka la Programu.