Feartan togail agus lìbhrigeadh iOS iarrtasan

San artaigil seo, bidh sinn a ’roinn an eòlas air a bhith a’ cruinneachadh agus a ’lìbhrigeadh thagraidhean iOS do luchd-cleachdaidh, a tha stiùidio Plarium Krasnodar air cruinneachadh anns a’ phròiseas debugging CI / CD.

Feartan togail agus lìbhrigeadh iOS iarrtasan

Ullachadh

Tha a h-uile duine a tha ann an aon dòigh no dòigh eile an sàs ann an leasachadh thagraidhean airson innealan Apple mar-thà air luach a chuir air goireasachd connspaideach a’ bhun-structair. Tha duilgheadasan rim faighinn anns a h-uile àite: bho chlàr ìomhaigh an leasaiche gu na h-innealan deasbaid is togail.

Tha gu leòr artaigilean mu na “bunaitean” air an eadar-lìn, agus mar sin feuchaidh sinn ri cuideam a chuir air a ’phrìomh rud. Seo na tha a dhìth ort gus an tagradh agad a thogail gu soirbheachail:

  • cunntas leasaiche;
  • inneal stèidhichte air macOS ag obair mar fhrithealaiche togail;
  • gineadh teisteanas leasaiche, a thèid a chleachdadh tuilleadh gus an tagradh a shoidhnigeadh;
  • air a chruthachadh le tagradh gun samhail ID (bu chòir a thoirt fa-near cho cudromach sa tha an ID Bundle, leis gu bheil cleachdadh ID cairt-fiadhaich ga dhèanamh do-dhèanta mòran de dhleastanasan an tagraidh a chleachdadh, mar eisimpleir: Fearann ​​​​Ceangailte, Brathan Push, Clàraich a-steach Apple agus feadhainn eile);
  • phròifil ainmean-sgrìobhte tagradh.

Feumar teisteanas leasaiche a chruthachadh tro Keychain air inneal macOS sam bith. Tha an seòrsa teisteanais glè chudromach. A rèir àrainneachd an tagraidh (Dev, QA, Staging, Production) bidh e eadar-dhealaichte (Leasachadh no Sgaoileadh), agus cuideachd an seòrsa ìomhaigh ainm-sgrìobhte tagraidh.

Prìomh sheòrsaichean de phròifil:

  • Leasachadh - an dùil a bhith a’ soidhnigeadh tagradh an sgioba leasachaidh, tha teisteanas leasachaidh air a chleachdadh (seòrsa ainm leasaiche iPhone: XXXXX);
  • Ad Hoc - an dùil a bhith a’ soidhnigeadh tagradh deuchainn agus dearbhadh a-staigh leis an roinn QA, tha teisteanas Cuairteachaidh an leasaiche air a chleachdadh (seòrsa ainm iPhone Sgaoileadh: XXXX);
  • App Store - cuir a-mach togail airson deuchainn taobh a-muigh tro TestFlight agus luchdachadh suas chun App Store, tha teisteanas Cuairteachaidh an leasaiche air a chleachdadh.

Nuair a bhios tu a’ gineadh pròifilean Leasachaidh agus Ad Hoc, tha e cuideachd air a chomharrachadh liosta innealan, air an urrainn dhut togalach a chuir a-steach, a leigeas leat barrachd ruigsinneachd a chuingealachadh do luchd-cleachdaidh. Chan eil liosta de dh’ innealan ann am pròifil an App Store, leis gu bheil smachd ruigsinneachd rè deuchainn beta dùinte air a làimhseachadh le TestFlight, a thèid a dheasbad nas fhaide air adhart.

Airson soilleireachd, faodaidh tu ìomhaigh an leasaiche a thaisbeanadh ann an cruth clàr gu h-ìosal. Tha seo ga dhèanamh nas fhasa tuigsinn dè na crìochan a tha a dhìth oirnn airson co-chruinneachadh agus cò às a gheibh sinn iad.

Feartan togail agus lìbhrigeadh iOS iarrtasan

Tionndadh

Gus a dhèanamh nas fhasa co-chruinneachaidhean a sgaradh a rèir pròiseact agus àrainneachd, bidh sinn a’ cleachdadh ainmean ìomhaigh mar ${ProjectName}_${Instance}, is e sin, ainm pròiseict + eisimpleir (an urra ri àrainneachd an tagraidh: Dev, QA, GD, Staging, Live, agus mar sin air adhart).

Nuair a thèid a thoirt a-steach don t-seirbheisiche togail, bidh am pròifil ag atharrachadh a h-ainm gu ID sònraichte agus thèid a ghluasad chun phasgan /Users/$Username/Library/MobileDevice/Provisioning Profiles (Càite $Username a ’freagairt ri ainm cunntas cleachdaiche an t-seirbheisiche togail).

Tha dà dhòigh air faidhle *.ipa a thogail - dìleab (PackageApplication) agus ùr-nodha (tro chruthachadh agus às-mhalairt XcAchive). Thathas den bheachd gu bheil a’ chiad dhòigh air a dhol à bith, leis gu bheil modal pacaidh faidhle app air a thoirt a-mach à cuairteachadh Xcode bho dhreach 8.3. Gus a chleachdadh, feumaidh tu am modal a chopaigeadh bhon t-seann Xcode (dreach 8.2 agus nas tràithe) chun phasgan:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

Agus an uairsin ruith an àithne:

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

An uairsin feumaidh tu faidhle * .app an tagraidh a chruinneachadh:

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

Càite:

-workspace - slighe gu faidhle a’ phròiseict.

-scheme - an sgeama a chaidh a chleachdadh, air a shònrachadh sa phròiseact.

-derivedDataPath - slighe gus an tagradh cruinnichte (*.app) a luchdachadh sìos.

CODE_SIGN_IDENTITY - ainm cunntas an leasaiche, a dh'fhaodar a dhearbhadh ann an Keychain (iPhone Developer: XXXX XXXXXXX, gun TeamID eadar camagan).

Feartan togail agus lìbhrigeadh iOS iarrtasan

PROVISIONING_PROFILE - ID pròifil airson an tagradh a shoidhnigeadh, a gheibhear leis an àithne:

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

Ma chleachdas an aplacaid pròifil a bharrachd (mar eisimpleir, airson Push Notifications), an uairsin na àite PROVISIONING_PROFILE comharrachadh:

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

An uairsin, bu chòir am faidhle *.app a thig às a phacaigeadh a-steach do *.ipa. Gus seo a dhèanamh, faodaidh tu òrdugh mar:

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

Ach, thathas den bheachd gu bheil an dòigh seo air a dhol à bith bho shealladh Apple. Tha e buntainneach *.ipa fhaighinn le bhith às-mhalairt bho thasglann an tagraidh.

An toiseach feumaidh tu an tasglann a chruinneachadh leis an àithne:

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

Tha eadar-dhealachaidhean ann an dòigh cruinneachaidh agus roghainnean SYNCHRONOUS_SYMBOL_PROCESSING, a chuireas casg air luchdachadh sìos samhla aig àm togail.

An uairsin feumaidh sinn faidhle a ghineadh le roghainnean às-mhalairt:

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

Càite:

$Method - modh lìbhrigidh, a rèir seòrsa ìomhaigh ainm-sgrìobhte an tagraidh, is e sin, airson Leasachadh bidh an luach mar leasachadh, airson Ad Hoc - ad-hoc, agus airson App Store - app-store.

$BundleID - ID an tagraidh, a tha air a shònrachadh ann an roghainnean an tagraidh. Faodaidh tu sgrùdadh a dhèanamh leis an òrdugh:

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName и $ProfileId - ainm leasaiche agus roghainnean ID pròifil ainm-sgrìobhte a chaidh a chleachdadh roimhe seo agus feumaidh iad a bhith co-ionnan ris na luachan anns na roghainnean às-mhalairt.

$TeamID - ID deich-dhigit eadar camagan às deidh ainm an leasaiche, eisimpleir: iPhone Developer: …… (XXXXXXXXX); faodar a sgrùdadh ann an Keychain.

An ath rud, a’ cleachdadh an àithne às-mhalairt, gheibh sinn am faidhle riatanach * .ipa:

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

Доставка

A-nis feumar am faidhle cruinnichte a lìbhrigeadh don neach-cleachdaidh deireannach, is e sin, air a chuir a-steach air an inneal.

Tha mòran sheirbheisean ann airson a bhith a’ sgaoileadh leasachaidhean leasachaidh agus Ad Hoc, leithid HockeyApp, AppBlade agus feadhainn eile, ach san artaigil seo bruidhnidh sinn mu dheidhinn frithealaiche leis fhèin airson a bhith a’ sgaoileadh thagraidhean.

Bidh stàladh an aplacaid airson iOS a’ gabhail àite ann an 2 ìre:

  1. A’ faighinn stàladh an tagraidh follaiseach tron ​​​​t-Seirbheis Items.
  2. Stàladh am faidhle * .ipa a rèir an fhiosrachaidh a chaidh a shònrachadh san fhollaiseach tro HTTPS.

Mar sin, feumaidh sinn an toiseach taisbeanadh stàlaidh a ghineadh (seòrsa faidhle * .plist) leis an àithne:

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

Mar a chì thu, tha cha mhòr a h-uile paramadair a tha an lùib togail an tagraidh anns an fhoillseachadh.

Tionndadh an aplacaid ($AppVersion) faodar a sgrùdadh leis an àithne:

defaults read $ProjectDir/Info CFBundleVersion

Parameter $ipaUrl tha ceangal dìreach ann gus am faidhle *.ipa a luchdachadh sìos. Bhon t-seachdamh dreach de iOS, feumaidh an aplacaid a bhith air a chuir a-steach tro HTTPS. Anns an ochdamh dreach, tha cruth an taisbeanaidh air atharrachadh beagan: blocaichean le roghainnean airson ìomhaighean tagraidh mar

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

Mar sin, gus an aplacaid a stàladh, tha duilleag HTML sìmplidh le ceangal mar seo gu leòr:

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

Airson feumalachdan nan roinnean leasachaidh is deuchainn, tha Plarium air an tagradh stàlaidh togail aca fhèin a chruthachadh, a bheir dhuinn:

  • neo-eisimeileachd agus neo-eisimeileachd,
  • meadhanachadh smachd ruigsinneachd agus stàladh tèarainte de thagraidhean tro cheanglaichean “sealach” a chaidh a chruthachadh gu dinamach,
  • comas-gnìomh leudachail (is e sin, faodaidh an sgioba leasachaidh, ma tha sin riatanach, gnìomhan a tha a dhìth fhilleadh a-steach do thagradh gnàthaichte).

Deuchainn

A-nis bruidhnidh sinn mu dheuchainn ro-sgaoilidh air an tagradh a ’cleachdadh Testlight.

Is e na cumhaichean riatanach airson luchdachadh sìos an seòrsa de phròifil ainm-sgrìobhte App Store agus làthaireachd iuchraichean API air an gineadh.

Tha grunn dhòighean ann airson an tagradh a luchdachadh sìos:

  • tro Xcode (Eagraiche),
  • tro altool,
  • tro Iarrtas Loader airson dreachan nas sine de Xcode (a-nis Transporter).

Airson luchdachadh sìos fèin-ghluasadach, thathas a’ cleachdadh altool, aig a bheil dà dhòigh ceadachaidh cuideachd:

  • Facal-faire a tha sònraichte don tagradh,
  • Iuchair API.

Tha e nas fheàrr an aplacaid a luchdachadh sìos a’ cleachdadh an iuchair API.

Gus an iuchair API fhaighinn, rachaibh gu cheangal agus cruthaich iuchair. A bharrachd air an iuchair fhèin ann an cruth * .p8, bidh feum againn air dà pharamadair: IssuerID agus KeyID.

Feartan togail agus lìbhrigeadh iOS iarrtasan

An uairsin, cuir a-steach an iuchair a chaidh a luchdachadh sìos chun t-seirbheisiche togail:

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

Mus luchdaich thu suas an tagradh gu TestFlight, feumaidh tu an tagradh a dhearbhadh, nì sinn seo leis an àithne:

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

Càite apiKey и apiIssuer bi luachan achaidh agad bho dhuilleag iuchrach ginealach API.

An ath rud, às deidh dearbhadh soirbheachail, bidh sinn a’ luchdachadh an aplacaid leis an àithne --upload-app leis na h-aon pharaimearan.

Thèid an tagradh a dhearbhadh le Apple taobh a-staigh latha no dhà agus an uairsin bidh e ri fhaighinn le luchd-dearbhaidh bhon taobh a-muigh: thèid ceanglaichean post-d a chuir thuca airson an stàladh.

Is e dòigh eile air tagradh a luchdachadh sìos tro altool a bhith a’ cleachdadh Facal-faire App-Sònraichte.

Gus am facal-faire App-Sònraichte fhaighinn feumaidh tu a dhol gu cheangal agus cruthaich e anns an roinn Tèarainteachd.

Feartan togail agus lìbhrigeadh iOS iarrtasan

An uairsin, bu chòir dhut clàr frithealaiche togail a chruthachadh ann an Keychain leis an fhacal-fhaire seo. Bho dhreach 11 de Xcode faodar seo a dhèanamh leis an àithne:

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

Càite:

$DeveloperName - ainm a’ chunntais leasaiche iOS a chaidh a chleachdadh gus logadh a-steach gu seirbheisean Apple.

$AppPswd - facal-faire sònraichte airson tagradh a chruthachadh.

An uairsin, gheibh sinn luach paramadair asc-solaraiche agus thoir sùil air soirbheachas in-mhalairt facal-faire leis an àithne:

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

Gheibh sinn an toradh:

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

Mar a chì thu, tha an luach Ainm Goirid riatanach (asc-solaraiche) a’ dol aig an aon àm ris a’ pharameter $TeamID a chleachd sinn nuair a bha sinn a’ togail an aplacaid.

Gus an tagradh a dhearbhadh agus a luchdachadh gu TestFlight, cleachd an àithne:

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

Mar luach paramadair -p faodaidh tu an luach a ghabhail $AppPswd ann an cruth neo-chrioptaichte (sònraichte).

Ach, mar a chaidh ainmeachadh roimhe, a thaobh coileanadh, tha e nas fheàrr API Key a thaghadh airson cead altool, leis gu bheil duilgheadasan sònraichte aig diofar dhreachan de Xcode (“chan eil e a’ faicinn ”Keychain, mearachdan ceadachaidh aig àm luchdachadh suas, msaa).

Tha sin uile, gu dearbh. Tha mi a’ guidhe gach neach a tha an sàs ann an togail soirbheachail agus fiosan gun trioblaid anns an App Store.

Source: www.habr.com

Cuir beachd ann