Tilmaamaha dhismaha iyo keenista codsiyada macruufka

Maqaalkan, waxaan ku wadaageynaa khibradda isu-ururinta iyo gaarsiinta codsiyada macruufka isticmaaleyaasha, kuwaas oo istuudiyaha Plarium Krasnodar uu ku ururay habka ciladaha CI/CD.

Tilmaamaha dhismaha iyo keenista codsiyada macruufka

Tababarka

Qof kasta oo si uun ama mid kale ugu lug leh horumarinta codsiyada aaladaha Apple ayaa mar hore u riyaaqay ku habboonaanta muranka dhalisay ee kaabayaasha. Dhibaatooyinku meel walba waa laga helaa: laga bilaabo menu-ka profile-ka soo-saare ilaa qalab-debug iyo dhis.

Waxaa jira maqaallo badan oo ku saabsan "aasaasaha" internetka, markaa waxaan isku dayi doonaa inaan muujino waxa ugu muhiimsan. Waa kuwan waxa aad u baahan tahay si aad u dhisto codsigaaga si guul leh:

  • koontada horumariyaha;
  • qalab ku salaysan macOS oo u dhaqma sidii server dhisme;
  • dhalin shahaadada horumariyaha, kaas oo loo isticmaali doono in lagu saxiixo codsiga;
  • abuuray codsi leh gaar ah ID (Muhiimada Aqoonsiga Bundle waa in la xuso, sababtoo ah isticmaalka aqoonsiga duurjoogta ah ayaa ka dhigaysa mid aan suurtagal ahayn in la isticmaalo hawlo badan oo codsiga ah, tusaale ahaan: Domains Associated, Ogeysiinta Riixa, Saxiixa Apple iyo kuwa kale);
  • astaan ​​guud saxiixyada codsiga.

Shahaadada horumariyaha waa in lagu soo saaraa Keychain qalab kasta oo macOS ah. Nooca shahaadada ayaa aad muhiim u ah. Iyada oo ku xidhan jawiga codsiga (Dev, QA, Staging, Production) way kala duwanaan doontaa (Horumarinta ama Qaybinta), sidoo kale nooca astaanta saxeexa codsiga.

Noocyada ugu muhiimsan ee profiles:

  • Horumarinta - loogu talagalay saxiixa codsiga kooxda horumarinta, shahaadada horumarinta ayaa la isticmaalaa (nooca magaca iPhone Developer: XXXX);
  • Ad Hoc - loogu talagalay saxiixa arjiga imtixaanka iyo xaqiijinta gudaha ee waaxda QA, shahaadada Qaybinta horumariyaha ayaa la isticmaalaa (nooca magaca iPhone Qaybinta: XXXXX);
  • Bakhaarka App-ka-dhis u samaynta tijaabada dibadeed iyada oo loo marayo TestFlight iyo soo raritaanka App Store, shahaadada Qaybinta horumariyaha ayaa la isticmaalaa.

Marka la dhalinayo profiles Horumarin iyo Ad Hoc, sidoo kale waa la tilmaamay liiska qalabka, kaas oo aad ku rakibi karto dhismo, kaas oo kuu ogolaanaya inaad sii xaddido gelitaanka isticmaalayaasha. Ma jiro liis qalab ah oo ku jira astaanta App Store, maadaama xakamaynta gelitaanka inta lagu jiro tijaabada beta ee xidhan ay maamusho TestFlight, kaas oo laga hadli doono hadhow.

Si loo caddeeyo, waxaad u soo bandhigi kartaa astaanta horumariyaha qaab shax hoose. Tani waxay sahlaysaa in la fahmo waxa cabbiraadaha aan u baahannahay isu imaatinka iyo halka laga keenayo.

Tilmaamaha dhismaha iyo keenista codsiyada macruufka

Golaha

Si loo fududeeyo in la kala saaro shirarka mashruuc iyo deegaan, waxaan isticmaalnaa magacyo muuqaal ah sida ${ProjectName}_${Instance}, taas oo ah, magaca mashruuca + tusaale ahaan (waxay kuxirantahay jawiga codsiga: Dev, QA, GD, Staging, Live, iyo wixii la mid ah).

Marka loo soo dhoofiyo server-ka la dhisayo, profile-ku wuxuu magaciisa u beddelaa aqoonsi gaar ah waxaana loo rari doonaa galka /Users/$Username/Library/MobileDevice/Provisioning Profiles ( Halkee $Username u dhiganta magaca akoonka isticmaalaha ee server-ka dhista).

Waxaa jira laba siyaabood oo loo dhiso faylka * .ipa - dhaxalka (PackageApplication) iyo mid casri ah (iyada oo loo marayo abuurista iyo dhoofinta XcAchive). Habka ugu horreeya waxaa loo arkaa mid duugoobay, tan iyo nooca 8.3 qaybta baakadaha faylka app ayaa laga saaray qaybinta Xcode. Si aad u isticmaasho, waxaad u baahan tahay inaad ka koobiyayso moduleka Xcode hore (nooca 8.2 iyo ka hor) gal:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

Kadibna socodsii amarka:

chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/*

Marka xigta waxaad u baahan tahay inaad ururiso * .app faylka codsiga:

xcodebuild 
-workspace $ProjectDir/$ProjectName.xcworkspace 
-scheme $SchemeName 
-sdk iphoneos 
build 
-configuration Release 
-derivedDataPath build 
CODE_SIGN_IDENTITY=”$DevAccName”
PROVISIONING_PROFILE=”$ProfileId”
DEPLOYMENT_POSTPROCESSING=YES 
SKIP_INSTALL=YES 
ENABLE_BITCODE=NO

Xagee:

-workspace - jidka loo maro faylka mashruuca.

-scheme - nidaamka loo isticmaalo, ee lagu qeexay mashruuca.

-derivedDataPath - dariiqa lagu soo dejiyo arjiga la soo ururiyey (*.app).

CODE_SIGN_IDENTITY - magaca koontada horumariyaha, kaas oo lagu xaqiijin karo Keychain (IPhone Developer: XXXX XXXXXXX, iyada oo aan TeamID ku jirin baakadaha).

Tilmaamaha dhismaha iyo keenista codsiyada macruufka

PROVISIONING_PROFILE - Aqoonsiga astaanta saxeexa codsiga, kaas oo lagu heli karo amarka:

cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'

Haddii codsigu isticmaalo muuqaal dheeri ah (tusaale ahaan, ogeysiisyada riix), ka dib halkii PROVISIONING_PROFILE tilmaan:

APP_PROFILE=”$AppProfile” 
EXTENSION_PROFILE=”$ExtProfile” 

Marka xigta, natiijada * .app faylka waa in lagu xiraa * .ipa. Si tan loo sameeyo, waxaad isticmaali kartaa amar sida:

/usr/bin/xcrun --sdk iphoneos PackageApplication 
-v $(find "$ProjectDir/build/Build/Products/Release-iphoneos" -name "*.app") 
-o "$ProjectDir/$ProjectName_$Instance.ipa"

Si kastaba ha noqotee, habkan ayaa loo arkaa mid duugoobay marka loo eego aragtida Apple. Way ku habboon tahay in la helo * .ipa adoo ka dhoofinaya kaydka codsiga.

Marka hore waxaad u baahan tahay inaad ku ururiso kaydka amarka:

xcodebuild 
-workspace $ProjectDir/$ProjectName.xcworkspace 
-scheme $SchemeName 
-sdk iphoneos 
-configuration Release 
archive 
-archivePath $ProjectDir/build/$ProjectName.xcarchive 
CODE_SIGN_IDENTITY=”$DevAccName” 
PROVISIONING_PROFILE=”$ProfileId”
ENABLE_BITCODE=NO 
SYNCHRONOUS_SYMBOL_PROCESSING=FALSE

Kala duwanaanshuhu waxay ku jiraan habka isu-ururinta iyo fursadaha SYNCHRONOUS_SYMBOL_PROCESSING, kaas oo curya dejinta calaamadda wakhtiga la dhisayo.

Marka xigta waxaan u baahanahay inaan abuurno fayl leh dejinta dhoofinta:

ExportSettings="$ProjectDir/exportOptions.plist"

cat << EOF > $ExportSettings
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>uploadBitcode</key>
<false/>
<key>uploadSymbols</key>
<false/>
<key>method</key>
<string>$Method</string>
<key>provisioningProfiles</key>
<dict>
<key>$BundleID</key>
<string>$ProfileId</string>
</dict>
<key>signingCertificate</key>
<string>$DevAccName</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>$TeamID</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
EOF

Xagee:

$Method - habka gaarsiinta, u dhigma nooca profile saxiixa codsiga, taas oo ah, horumarinta qiimihiisu noqon doonaa horumarinta, for Ad Hoc - ad-hoc, iyo App Store - app-store.

$BundleID - Aqoonsiga Codsiga, kaas oo lagu qeexay goobaha codsiga. Waxaad ku hubin kartaa amarka:

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName и $ProfileId - Magaca horumariyaha iyo dejinta aqoonsiga astaanta astaanta ee hore loo isticmaalay oo waa in ay la socdaan qiyamka goobaha dhoofinta.

$TeamID - Aqoonsiga toban-god ee guntamaha ka dambeeya magaca horumariyaha, tusaale ahaan: IPhone Developer: …… (XXXXXXXXXX); waxaa lagu hubin karaa Keychain

Marka xigta, adoo isticmaalaya amarka dhoofinta, waxaan helnaa * .ipa faylka lagama maarmaanka ah:

xcodebuild 
-exportArchive 
-archivePath $ProjectDir/build/$ProjectName.xcarchive 
-exportPath $ProjectDir 
-exportOptionsPlist $ExportSettings

Macluumaadka Goobta

Hadda faylka la ururiyey wuxuu u baahan yahay in la geeyo isticmaalaha ugu dambeeya, taas oo ah, lagu rakibay qalabka.

Waxaa jira adeegyo badan oo loogu talagalay qaybinta horumarinta iyo dhismooyinka Ad Hoc, sida HockeyApp, AppBlade iyo kuwa kale, laakiin maqaalkan waxaan uga hadli doonaa server-ka u taagan qaybinta codsiyada.

Ku rakibida arjiga IOS waxay u dhacdaa laba marxaladood:

  1. Helitaanka muujinta rakibaadda arjiga iyada oo loo marayo Adeegga Alaabta.
  2. Ku rakibida faylka * .ipa iyadoo loo eegayo macluumaadka ku qeexan cadaanka iyada oo loo sii marayo HTTPS.

Markaa, waxaan marka hore u baahanahay inaan abuurno muujinta rakibaadda (nooca faylka * .plist) oo leh amarka:

cat << EOF > $manifest
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>$ipaUrl</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>$BundleID</string>
<key>bundle-version</key>
<string>$AppVersion</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>$ProjectName_$Instance</string>
<key>subtitle</key>
<string>$Instance</string>
</dict>
</dict>
</array>
</dict>
</plist>
EOF

Sida aad arki karto, bayaanku wuxuu ka kooban yahay ku dhawaad ​​dhammaan cabbirrada ku lug leh dhismaha codsiga.

Nooca codsiga ($AppVersion) waxaa lagu hubin karaa amarka:

defaults read $ProjectDir/Info CFBundleVersion

Xildhibaan $ipaUrl waxay ka kooban tahay xiriir toos ah si loo soo dejiyo faylka * .ipa. Laga bilaabo nooca toddobaad ee iOS, codsiga waa in lagu rakibaa HTTPS. Nooca siddeedaad, qaabka muujintu wax yar ayaa isbeddelay: blocks oo leh jaangooyooyin loogu talagalay calaamadaha codsiga sida

<images>
   <image>...</image>
</images>

Sidaa darteed, si loo rakibo codsiga, bog HTML fudud oo leh xiriir sidan oo kale ah ayaa ku filan:

itms-services://?action=download-manifest&url=https://$ServerUrl/$ProjectName/$Instance/iOS/$AppVersion/manifest.plist

Baahiyaha waaxaha horumarinta iyo tijaabinta, Plarium waxay abuurtay codsigeeda rakibidda dhismo, kaas oo na siinaya:

  • madax-bannaani iyo madax-bannaani,
  • udub dhexaad u ah xakamaynta gelitaanka iyo ku rakibida arjiyada aaminka ah iyada oo loo marayo isku xidhka "ku meel gaadhka ah" ee si firfircoon loo abuuray,
  • shaqeyn la ballaarin karo (taas oo ah, kooxda horumarinta, haddii loo baahdo, waxay isku dari karaan hawlaha maqan codsiga jira).

Imtixaanka

Hadda waxaan ka hadli doonaa tijaabinta sii deynta ka hor ee codsiga iyadoo la isticmaalayo TestFlight.

Shuruudaha loo baahan yahay si loo soo dejiyo waa nooca astaanta saxeexa App Store iyo joogitaanka furayaasha API ee la soo saaray.

Waxaa jira dhowr siyaabood oo loo soo dejisan karo codsiga:

  • iyada oo loo marayo Xcode (Abaabul),
  • iyada oo loo marayo altool,
  • iyada oo loo sii marayo Loader Application ee noocyadii hore ee Xcode (hadda Gaadiidleyda).

Si toos ah loo soo dejiyo, altool ayaa loo isticmaalaa, kaas oo sidoo kale leh laba hab oo oggolaansho:

  • Erayga Gaarka ah ee App-ka,
  • Furaha API.

Way fiicantahay in la soo dejiyo arjiga adoo isticmaalaya furaha API.

Si aad u hesho furaha API, tag link oo abuur fur. Marka lagu daro furaha laftiisa qaabka * .p8, waxaan u baahan doonaa laba xuduudood: IssuerID iyo KeyID.

Tilmaamaha dhismaha iyo keenista codsiyada macruufka

Marka xigta, u soo deji furaha la soo dejiyey ee server-ka dhismaha:

mkdir -p ~/.appstoreconnect/private_keys
mv ~/Downloads/AuthKey_${KeyID}.p8 ~/.appstoreconnect/private_keys/

Kahor intaadan arjiga u dajin TestFlight, waxaad u baahan tahay inaad ansixiso arjiga, waxaanu ku samaynaa amarka:

xcrun altool 
--validate-app 
-t ios 
-f $(find "$ProjectDir" -name "*.ipa") 
--apiKey “$KeyID” 
--apiIssuer “$IssuerID” 

Xagee apiKey и apiIssuer waxay leeyihiin qiimayaal goobeed ka soo jeeda bogga jiilka muhiimka ah ee API.

Marka xigta, marka si guul leh loo xaqiijiyo, waxaan ku shubaa codsiga amarka --upload-app oo leh halbeegyo isku mid ah.

Codsiga waxa tijaabin doonta Apple hal ama laba maalmood gudahood ka dibna waxa ay diyaar u noqon doontaa tijaabiyeyaasha dibadda: waxa loo diri doona xidhiidhin email ah si loo rakibo.

Hab kale oo arjiga lagu soo dejiyo altool waa in la isticmaalo erayga sirta ah ee App-Specific.

Si aad u hesho erayga sirta ah ee App-Specific waxaad u baahan tahay inaad tagto link oo ka soo saara qaybta Amniga.

Tilmaamaha dhismaha iyo keenista codsiyada macruufka

Marka xigta, waa inaad ku dhex abuurtaa diiwaanka dhismaha kaydka Keychain oo wata erayga sirta ah. Laga soo bilaabo nooca 11 ee Xcode tan waxaa lagu samayn karaa amarka:

xcrun altool --store-password-in-keychain-item "Altool" -u "$DeveloperName" -p $AppPswd

Xagee:

$DeveloperName - magaca koontada horumariyaha iOS ee loo isticmaalo gelitaanka adeegyada Apple.

$AppPswd - Furaha sirta ah ee App-ka gaarka ah.

Marka xigta, waxaan helnaa qiimaha qiyaasta asc-bixiyaha oo hubi guusha soo dejinta erayga sirta ah amarka:

xcrun altool --list-providers -u "$DeveloperName" -p "@keychain:Altool"

Waxaan helnaa natiijada:

Provider listing:
- Long Name - - Short Name -
XXXXXXX        XXXXXXXXX

Sida aad arki karto, qiimaha Magaca Gaaban ee loo baahan yahay (asc-bixiyaha) waxa uu ku beegan yahay cabbirka $TeamID ee aanu isticmaalnay markii aanu dhisaynay codsiga.

Si loo ansixiyo oo arjiga loogu shubo TestFlight, adeegso amarka:

xcrun altool 
--(validate|upload)-app   
-f $(find "$ProjectDir" -name "*.ipa") 
-u "$DeveloperName" 
-p "@keychain:Altool" 

Sida qiimaha halbeegga ah -p waxaad qaadan kartaa qiimaha $AppPswd qaab aan qarsoodi ahayn (cad).

Si kastaba ha noqotee, sidii horeba loo sheegay, marka laga eego aragtida waxqabadka, way fiicantahay in la doorto furaha API ee oggolaanshaha altool, maadaama noocyada kala duwan ee Xcode ay leeyihiin dhibaatooyin gaar ah ("ma arko" Keychain, khaladaadka oggolaanshaha inta lagu jiro soo dejinta, iwm.).

Taasi waa dhan, dhab ahaantii. Waxaan u rajeynayaa qof kasta oo ku lug leh dhismo guul leh iyo sii dayn aan dhib lahayn oo ku jirta App Store.

Source: www.habr.com

Add a comment