Vaega o le fausiaina ma le tuʻuina atu o talosaga iOS

I totonu o lenei tusiga, matou te faʻasoa le poto masani o le faʻapipiʻiina ma le tuʻuina atu o talosaga iOS i tagata faʻaoga, lea na faʻaputuina e le Plarium Krasnodar studio i le faagasologa o le debugging CI / CD.

Vaega o le fausiaina ma le tuʻuina atu o talosaga iOS

Sauniuniga

Soʻo se tagata o loʻo i ai i se tasi auala poʻo se isi e aʻafia i le atinaʻeina o talosaga mo masini Apple ua uma ona talisapaia le feteʻenaʻiga faigofie o atinaʻe. O faigata e maua i soʻo se mea: mai le lisi o faʻamatalaga a le tagata atiae i le debug ma fausia meafaigaluega.

E tele tala e uiga i "faʻavae" i luga o le Initaneti, o lea o le a matou taumafai e faʻamaonia le mea autu. O mea nei e te mana'omia e fau lelei ai lau talosaga:

  • teuga tupe a le developer;
  • fa'avae i masini macOS, o loŹ»o galue o se 'auŹ»aunaga fausiaina;
  • gaosia tusi fa'atupuina, lea o le a faŹ»aaogaina e sainia ai le talosaga;
  • faia le talosaga ma tulaga ese ID (e tatau ona maitauina le taua o le Bundle Identifier, aua o le faŹ»aaogaina o le wildcard ID e le mafai ai ona faŹ»aogaina le tele o galuega o le talosaga, mo se faŹ»ataŹ»itaŹ»iga: FaŹ»atasi Domains, Push Notifications, Apple Sign In ma isi);
  • talaaga saini talosaga.

E tatau ona gaosia le tusi faamaonia a le tagata atiaʻe e ala i le Keychain i soʻo se masini e faʻavae i luga macOSE matuā tāua tele le ituaiga o tusi faamaonia. E fuafua i le siosiomaga o le talosaga (Dev, QA, Staging, Production), o le a eseese (Atina'e po'o le Tu'uina Atu), e fa'apea fo'i le ituaiga o le fa'ailoga o le saini o le talosaga.

Ituaiga autu o talaaga otooto:

  • Atina'e — ua mamanuina e sainia ai le talosaga a le 'au atia'e, e fa'aaogaina se tusi fa'amaonia o le Atina'e (igoa o le ituaiga iPhone Atina'e: XXXXX);
  • Fa'apitoa - ua mamanuina mo le sainia o se talosaga su'ega ma le fa'amaoniga i totonu e le matagaluega o le QA, o le tusi fa'amaonia o le Fa'asalalauga a le tagata atia'e e fa'aaogaina (igoa o le ituaiga iPhone Tufatufaina: XXXXX);
  • Faleoloa Faleoloa - faŹ»asaŹ»o fale mo suŹ»ega fafo e ala i TestFlight ma faŹ»apipiŹ»i i le Faleoloa App, faŹ»aaogaina le tusi faamaonia o le FaŹ»asalalauga.

Pe a fa'atupuina fa'amatalaga Fa'alautele ma Ad Hoc, o lo'o fa'aalia fo'i lisi masini, lea e mafai ona e faʻapipiʻi ai se fale, lea e mafai ai ona e faʻatapulaʻaina avanoa mo tagata faʻaoga. E leai se lisi o masini i totonu o le App Store faʻamatalaga, talu ai o le puleaina o avanoa i le taimi o suʻega beta tapunia e faʻatautaia e TestFlight, lea o le a talanoaina mulimuli ane.

Mo le faʻamalamalamaga, e mafai ona e tuʻuina atu le faʻamatalaga a le tagata atiaʻe i le tulaga o se laulau i lalo. E fa'afaigofie ai ona malamalama po'o le a le tapula'a tatou te mana'omia mo le fa'apotopotoga ma le mea e maua mai ai.

Vaega o le fausiaina ma le tuʻuina atu o talosaga iOS

Fono Aoao

Ina ia faafaigofieina le tuueseeseina o faapotopotoga e ala i galuega faatino ma siosiomaga, matou te faaaogaina igoa talaaga pei ${ProjectName}_${Instance}, o lona uiga, igoa ole poloketi + faʻataʻitaʻiga (faʻalagolago ile siosiomaga ole talosaga: Dev, QA, GD, Staging, Live, ma isi).

A fa'aulufale mai i le fale faigaluega, o le fa'ailoga e suia lona igoa i se ID tulaga ese ma fa'anofo i le faila /Users/$Username/Library/MobileDevice/Provisioning Profiles (o fea $Username e fetaui ma le igoa ole tagata fa'aoga ole fale faigaluega).

E lua auala e fausia ai se faila *.ipa - legacy (PackageApplication) ma le taimi nei (e ala i le XcAchive creation and export). O le auala muamua ua manatu ua le toe aoga, talu ai talu mai le version 8.3 o le faila faila faila faila ua aveese mai le tufatufa Xcode. Ina ia faʻaaogaina, e tatau ona e kopiina le module mai le Xcode tuai (version 8.2 ma muamua) i le faila:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

Ona fai lea o le poloaiga:

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

O le isi mea e te mana'omia e aoina le *.app faila o le talosaga:

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

Afai:

-workspace - ala i le faila o le poloketi.

-scheme - le polokalame na faʻaaogaina, faʻamaonia i totonu o le poloketi.

-derivedDataPath — ala e sii mai ai le talosaga ua tuufaatasia (*.app).

CODE_SIGN_IDENTITY — le igoa o le teugatupe a le tagata atiaŹ»e, lea e mafai ona faŹ»amaonia i le Keychain (iPhone Atina'e: XXXX XXXXXXX, e aunoa ma le TeamID i totonu o fa'aputuga).

Vaega o le fausiaina ma le tuʻuina atu o talosaga iOS

PROVISIONING_PROFILE - Profile ID mo le sainia o le talosaga, lea e mafai ona maua i le poloaiga:

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

Afai e fa'aogaina e le talosaga se fa'amatalaga fa'aopoopo (mo se fa'ata'ita'iga, mo Push Notifications), ona fa'apea lea PROVISIONING_PROFILE faailoa mai:

APP_PROFILE=ā€$AppProfileā€ 
EXTENSION_PROFILE=ā€$ExtProfileā€ 

O le isi, o le faila *.app e maua mai e tatau ona afifi i *.ipa. Ina ia faia lenei mea, e mafai ona e faʻaogaina se poloaiga e pei o:

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

Ae ui i lea, o lenei metotia ua manatu ua le toe aoga mai le manatu o Apple. E talafeagai le mauaina o *.ipa e ala i le auina atu i fafo mai le faila o talosaga.

Muamua e tatau ona e aoina le archive ma le poloaiga:

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

O le eseesega o loʻo taoto i le faʻapotopotoga auala ma filifiliga SYNCHRONOUS_SYMBOL_PROCESSING, lea e fa'agata ai le la'uina o fa'ailoga ile taimi fau.

O le isi mea tatou te manaʻomia le faʻatupuina o se faila ma faʻasalalauga faʻasalalau:

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

Afai:

$Method - auala tuʻuina atu, e fetaui ma le ituaiga faʻamatalaga saini saini, o lona uiga, mo le Atinaʻeina o le tau o le atinaʻe, mo Ad Hoc - ad-hoc, ma mo le Faleoloa Store - app-store.

$BundleID - ID ID, lea o loʻo faʻamaonia i le faʻatulagaina o talosaga. E mafai ona e siaki i le poloaiga:

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName Šø $ProfileId - igoa fa'atupuina ma fa'ailoga ID fa'ailoga saini na fa'aaoga muamua ma e tatau ona fetaui ma fa'atauga i tulaga fa'atau atu.

$TeamID — o se ID e sefulu-numera i totonu o fa'apuipui pe a uma le igoa o le tagata atia'e, fa'ata'ita'iga: iPhone Tagata Atiina'e: …… (XXXXXXXXXXXX); e mafai ona fa'amaonia i le Keychain.

Le isi, faʻaaoga le faʻatonuga auina atu i fafo, matou te maua le faila * .ipa talafeagai:

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

Faʻamatalaga faʻatau

O le taimi nei o le faila na aoina e manaʻomia ona tuʻuina atu i le tagata faʻaaogaina, o lona uiga, faʻapipiʻi i luga o le masini.

E tele auaunaga mo le tufatufaina atu o Atinaʻe ma Ad Hoc fausia, e pei o HockeyApp, AppBlade ma isi, ae i lenei tusiga o le a tatou talanoa e uiga i se server tutoʻatasi mo le tufatufaina o talosaga.

O le faʻapipiʻiina o le talosaga mo iOS e faia i laʻasaga 2:

  1. Mauaina o le fa'aaliga fa'apipi'i talosaga e ala i le Auaunaga o Mea.
  2. Fa'apipi'iina o le *.ipa faila e tusa ai ma fa'amatalaga fa'amaonia i le fa'aaliga e ala i le HTTPS.

O lea la, tatou te manaʻomia muamua le faʻatupuina o se faʻaaliga faʻapipiʻi (ituaiga faila *.plist) ma le faʻatonuga:

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

E pei ona mafai ona e vaʻaia, o le faʻaaliga e aofia ai toetoe o mea uma e aofia ai i le fausiaina o le talosaga.

Fa'asologa o talosaga ($AppVersion) e mafai ona siaki i le poloaiga:

defaults read $ProjectDir/Info CFBundleVersion

Parakalafa $ipaUrl o lo'o iai se feso'ota'iga sa'o e la'u mai ai le faila *.ipa. Mai le lona fitu o le iOS, e tatau ona faʻapipiʻi le talosaga e ala i le HTTPS. I le lona valu lomiga, o le faatulagaga o le faaaliga ua suia teisi: poloka ma faatulagaga mo ata talosaga e pei

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

O lea la, e faʻapipiʻi le talosaga, o se itulau HTML faigofie ma se fesoʻotaʻiga pei o lenei ua lava:

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

Mo manaʻoga o le atinaʻe ma le suʻega matagaluega, ua faia e Plarium lana lava fale faʻapipiʻi talosaga, lea e maua ai:

  • tutoatasi ma le tutoatasi,
  • fa'atotonugalemu o le fa'atonutonuina o avanoa ma fa'amautu le fa'apipi'iina o tusi talosaga e ala i feso'ota'iga "le tumau" fa'atupuina malosi,
  • galuega fa'alautele (o lona uiga, o le au atina'e, pe a mana'omia, e mafai ona tu'ufa'atasia galuega o lo'o misi i se talosaga o lo'o iai).

Suʻega

O lenei o le a matou talanoa e uiga i suʻega faʻasalalau muamua o le faʻaaogaina o le talosaga Moli Suʻega.

Tulaga mana'omia mo le la'uina o le ituaiga o fa'amatalaga saini a le App Store ma le i ai o ki API fa'atupuina.

E tele auala e sii mai ai le talosaga:

  • e ala i le Xcode (Organizer),
  • e ala i altool,
  • e ala i le Application Loader mo lomiga tuai o Xcode (lea Transporter).

Mo le faʻapipiʻiina otometi, e faʻaaogaina altool, lea e lua foi auala faʻatagaina:

  • Fa'amatalaga Fa'amatalaga Fa'apitoa,
  • API Key.

E sili atu le downloadina o le talosaga e faʻaaoga ai le API Key.

Ina ia maua le API Key, alu ile fesoʻotaʻiga ma fau se ki. I le faaopoopo atu i le ki lava ia i le *.p8 format, matou te manaʻomia ni taʻiala se lua: IssuerID ma KeyID.

Vaega o le fausiaina ma le tuʻuina atu o talosaga iOS

Sosoo ai, fa'aulufale mai le ki na siiina i le fale faufale:

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

Aʻo leʻi tuʻuina atu le talosaga i TestFlight, e tatau ona e faʻamaonia le talosaga, matou te faia lenei mea i le poloaiga:

xcrun altool 
--validate-app 
-t ios 
-f $(find "$ProjectDir" -name "*.ipa") 
--apiKey ā€œ$KeyIDā€ 
--apiIssuer ā€œ$IssuerIDā€ 

le mea apiKey Šø apiIssuer iai fa'atauga fanua mai le API fa'atupuina itulau autu.

Ma le isi, i luga o le faʻamaonia manuia, matou te utaina le talosaga ma le poloaiga --upload-app fa'atasi ai ma tapula'a tutusa.

O le talosaga o le a fa'ata'ita'iina e Apple i totonu o le tasi pe lua aso ma o le a avanoa mo tagata su'esu'e i fafo: o le a imeli i latou mo le fa'apipi'iina.

O le isi auala e la'u mai ai se talosaga e ala i le altool o le fa'aogaina lea o le Fa'amatalaga Fa'amatalaga Fa'apitoa.

Ina ia maua le App-Specific Password e tatau ona e alu i ai fesoʻotaʻiga ma fa'atupu i le vaega Saogalemu.

Vaega o le fausiaina ma le tuʻuina atu o talosaga iOS

Le isi, e tatau ona e fatuina se faʻamaumauga faʻamaumau i Keychain ma lenei faʻaupuga. Mai le lomiga 11 o Xcode e mafai ona faia lenei mea i le poloaiga:

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

Afai:

$DeveloperName - le igoa o le iOS developer account na faʻaaogaina e saini i totonu i auaunaga a Apple.

$AppPswd - fa'atupuina Fa'amatalaga Fa'amatalaga Fa'apitoa.

Le isi, matou te maua le tau o le asc-provider parameter ma siaki le manuia o le faʻaulufaleina o upu faʻaulu ma le poloaiga:

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

Matou te maua le gaioiga:

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

E pei ona mafai ona e vaʻai, o le manaʻomia Short Name value (asc-provider) e fetaui ma le $TeamID parakalafa na matou faʻaogaina i le fausiaina o le talosaga.

Ina ia faʻamaonia ma utaina le talosaga i TestFlight, faʻaaoga le poloaiga:

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

E pei o se tau fa'ailoga -p e mafai ona e ave le tau $AppPswd i se faiga e le'i fa'ailogaina (fa'ailoa).

Ae ui i lea, e pei ona taʻua muamua, mai le tulaga o le faʻatinoga, e sili atu le filifilia o le API Key mo le faʻatagaina o le altool, talu ai o lomiga eseese o le Xcode o loʻo i ai ni faʻafitauli faʻapitoa ("e le o vaʻaia" Keychain, faʻatagaina mea sese i le taimi o le lafoina, ma isi).

Na'o le mea moni lava. Ou te mana'o i tagata uma o lo'o a'afia i fau manuia ma fa'asa'olotoga e leai ni fa'alavelave i le Faleoloa Fa'atau.

puna: www.habr.com

FaŹ»atau talimalo faŹ»atuatuaina mo nofoaga ma DDoS puipuiga, VPS VDS servers šŸ”„ Fa'atau le 'upega tafa'ilagi talimalo fa'atuatuaina ma le puipuiga DDoS, 'au'aunaga VPS VDS | ProHoster