Zita rangu ndiDmitry, ndinoshanda semuongorori mukambani
Izvi zvisati zvaitika, ndakanga ndatoedza Firebase Test Lab yeAroid uye ndainyatsofarira zvose, saka ndakafunga kuedza kuisa iOS test infrastructure yepurojekiti pamakumbo akafanana. Ini ndaifanira kuGoogle zvakanyanya uye hazvisi zvese zvakashanda kekutanga, saka ndakafunga kunyora chinyorwa chekudzidzisa kune avo vachiri kunetsekana.
Saka, kana iwe uine UI bvunzo pane iOS purojekiti, unogona kutoedza kuvamhanyisa pamidziyo chaiyo nhasi, yakapihwa nemutsa neGood Corporation. Kune avo vanofarira, gamuchirai kune katsi.
Munyaya, ndakafunga kuvaka pane imwe yekutanga data - yakavanzika repository paGitHub uye CircleCI kuvaka system. Zita rekushandisa rinonzi AmazingApp, bundleID is com.company.amazingapp. Ini ndinopa iyi data nekukasira kuderedza kunyongana kunotevera.
Kana iwe wakaita dzimwe mhinduro mupurojekiti yako zvakasiyana, igovera ruzivo rwako mune zvakataurwa.
1. Miedzo pachayo
Gadzira bazi idzva reprojekiti yeUI bvunzo:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Ngativhure purojekiti muXCode uye tigadzire Target nyowani ine UI bvunzo [XCode -> Faira -> Nyowani -> Target -> iOS Testing Bundle], tichizvipa iro rinozvitsanangura zita AmazingAppUITests.
Enda kuBuild Phases chikamu cheTarget yakagadzirwa uye tarisa kuvapo kweTarget Dependencies - AmazingApp, muCompile Sources - AmazingAppUITests.swift.
Tsika yakanaka ndeyekuparadzanisa sarudzo dzekuvaka dzakasiyana muZvirongwa zvakasiyana. Isu tinogadzira chirongwa cheUI bvunzo dzedu [XCode -> Chigadzirwa -> Scheme -> New Scheme] uye tinochipa iro zita rimwechete: AmazingAppUITests.
Kuvaka kweiyo yakagadzirwa chirongwa kunofanirwa kusanganisira iyo Target yechishandiso chikuru - AmazingApp uye Target UI bvunzo - ZvinoshamisaAppUITests - ona skrini.
Tevere, tinogadzira gadziriso nyowani yeUI bvunzo. MuXCode, tinya pane faira reprojekiti uye enda kune Info chikamu. Dzvanya pa "+" uye gadzira gadziriso nyowani, semuenzaniso XCtest. Tichazoda izvi mune ramangwana kuti tidzivise kutamba nengoma kana tasvika pakusaina kodhi.
Pane zvinokwana zvitatu Zvinangwa mupurojekiti yako: iyo huru yekushandisa, bvunzo dzeyuniti (mushure mezvose, zviripo, handiti?) uye Target UI bvunzo dzatakagadzira.
Enda kune Target AmazingApp, Vaka Zvirongwa tab, Code Kusaina Identity chikamu. Nekugadziriswa kweXCtest, sarudza iOS Developer. Muchikamu cheCode Signing Style, sarudza Manual. Isu hatisati tagadzira profil yekugovera parizvino, asi isu tichazodzokera kwairi gare gare.
Kune Target AmazingAppUITests tinoita zvakafanana, asi muChigadzirwa Bundle Identifier column tinoisa com.company.amazingappuitests.
2. Kugadzira chirongwa muApple Developer Program
Enda kune iyo Apple Developer Chirongwa peji, enda kune Zvitupa, Identifiers & Profiles chikamu uye ipapo kuApp IDs column yeIdentifiers chinhu. Gadzira ID itsva yeApp inonzi AmazingAppUITests uye bundleID com.company.amazingappuitests.
Iye zvino tave nemukana wekusaina bvunzo dzedu nechitupa chakasiyana, asi ... Maitiro ekuunganidza chivakwa chekuyedza anosanganisira kuunganidza application pachayo uye kuunganidza mumhanyi webvunzo. Saizvozvo, takatarisana nedambudziko rekusaina maID masumbu maviri ane mbiri yekugovera. Neraki, pane yakapusa uye inoyevedza mhinduro - Wildcard App ID. Isu tinodzokorora maitiro ekugadzira ID itsva yeApp, asi pachinzvimbo cheExplicit App ID, sarudza Wildcard App ID sezviri pamufananidzo.
Panguva ino, tapedza kushanda nedeveloper.apple.com, asi hatizoderedze hwindo rebrowser. Handei ku
Muverengi anoteerera akaona kuti kushandisa chishandiso ichi tichada yakavanzika repository uye account ine mukana kune ese ari maviri Apple Developer Chirongwa uye Github. Isu tinogadzira (kana kamwe kamwe pasina chinhu chakadaro) nhoroondo yefomu [email inodzivirirwa], huya nephasiwedi yakasimba, inyore ne developer.apple.com, uye igadze semutungamiri weprojekti. Tevere, isu tinopa iyo account mukana kune yako kambani github repository uye gadzira nyowani yakavanzika repository ine zita rakaita seAmazingAppMatch.
3. Kumisikidza Fastlane uye match utility
Vhura terminal, enda kune folda ine purojekiti uye tanga fastlane sezvakaratidzwa mukati
$ fastlane init
Iwe unozokumbirwa kuti usarudze zviripo zvekushandisa zvigadziriso. Sarudza yechina sarudzo - manual project setup.
Iyo purojekiti ine dhairekitori nyowani fastlane, ine mafaera maviri - Appfile uye Fastfile. Muchidimbu, tinochengeta data rebasa muAppfile, uye tinonyora mabasa muFastfile, inonzi nzira muFastlane terminology. Ndinokurudzira kuverenga zvinyorwa zvepamutemo:
Vhura iyo Appfile mune yako yaunofarira mavara edhita uye uuye nayo kune inotevera fomu:
app_identifier "com.company.amazingapp" # Bundle ID
apple_dev_portal_id "[email protected]" # Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΠΏΡΠ°Π²ΠΎ Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ iOS ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Apple Developer Program.
team_id "LSDY3IFJAY9" # Your Developer Portal Team ID
Isu tinodzokera kune terminal uye zvinoenderana neiyo official manual tinotanga kugadzirisa match.
$ fastlane match init
$ fastlane match development
Tevere, isa iyo yakakumbirwa data - repository, account, password, nezvimwe.
Zvakakosha kuti: Paunotanga kuvhura mutambo utility, iwe unozokumbirwa kuisa password kuti unyore repository. Izvo zvakanyanya kukosha kuchengetedza iyi password; isu tichaida kana uchimisa iyo CI server!
Imwe faira nyowani yaonekwa mufastlane folda - Matchfile. Ivhure mune yako yaunofarira mavara edhita uye iratidze seizvi:
git_url("https://github.com/YourCompany/AmazingAppMatch") #Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΠΈ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΎΠ².
type("development") # The default type, can be: appstore, adhoc, enterprise or development
app_identifier("com.company.amazingapp")
username("[email protected]") # Your Infrastructure account Apple Developer Portal username
Isu tinozvizadza nenzira iyi kana isu tichida kushandisa match mune ramangwana kusaina zvivakwa zvekuratidzira muCrashlytics uye/kana AppStore, ndiko kuti, kusaina bundle ID yechishandiso chako.
Asi, sezvatinorangarira, takagadzira yakakosha Wildcard ID kusaina bvunzo kuvaka. Naizvozvo, vhura Fastfile uye pinda nzira nyowani:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Sevha uye pinda mune terminal
fastlane testing_build_for_firebase
uye isu tinoona kuti fastlane yakagadzira sei chitupa chitsva ndokuchiisa mune repository. Hukuru!
Vhura XCode. Iye zvino tave neprofile inodiwa yefomu reMatch Development com.company.*, iro rinofanirwa kutsanangurwa muchikamu cheProvisioning profil yezvinangwa zveAmazingApp uye AmazingAppUITests.
Inoramba ichiwedzera nzira yekuunganidza bvunzo. Handei ku
Ngatikopei-nama kubva kumuenzaniso wekutanga kuitira kuti nzira yedu yekuyedza_build_for_firebase ipedze kutaridzika seizvi:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests"
)
scan(
scheme: 'AmazingAppUITests', # UI Test scheme
clean: true, # Recommended: This would ensure the build would not include unnecessary files
skip_detect_devices: true, # Required
build_for_testing: true, # Required
sdk: 'iphoneos', # Required
should_zip_build_products: true, # Must be true to set the correct format for Firebase Test Lab
)
firebase_test_lab_ios_xctest(
gcp_project: 'AmazingAppUITests', # Your Google Cloud project name (ΠΊ ΡΡΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΏΠΎΠ·ΠΆΠ΅)
devices: [ # Device(s) to run tests on
{
ios_model_id: 'iphonex', # Device model ID, see gcloud command above
ios_version_id: '12.0', # iOS version ID, see gcloud command above
locale: 'en_US', # Optional: default to en_US if not set
orientation: 'portrait' # Optional: default to portrait if not set
}
]
)
end
Kuti uwane ruzivo rwakakwana nezve kumisikidza fastlane muCircleCI, ini ndinokurudzira kuverenga zviri pamutemo zvinyorwa
Usakanganwa kuwedzera basa idzva kune yedu config.yml:
build-for-firebase-test-lab:
macos:
xcode: "10.1.0"
working_directory: ~/project
shell: /bin/bash --login -o pipefail
steps:
- checkout
- attach_workspace:
at: ~/project
- run: sudo bundle install # ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
- run:
name: install gcloud-sdk # Π½Π° mac ΠΌΠ°ΡΠΈΠ½Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ gcloud
command: |
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
brew cask install google-cloud-sdk
- run:
name: build app for testing
command: fastlane testing_build_for_firebase # Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ lane ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π² firebase
4. Zvakadini nebhenji redu rekuedza? Kugadzira Firebase.
Ngatidzikei kuti nyaya yakanyorerwei.
Zvichida app yako inoshandisa Firebase pane chirongwa chemahara, kana pamwe kwete zvachose. Iko hakuna mutsauko wakakosha, nekuti pakuedza zvinodiwa tinogona kugadzira purojekiti yakaparadzana negore rekushandisa mahara (inotonhorera, handiti?)
Isu tinopinda muakaundi yedu yezvivakwa (kana chero imwe, hazvina basa), uye enda
Zvakakosha kuti: Munhanho yapfuura muFastfile mulane firebase_test_lab_ios_xctest iyo gcp_project parameter inofanirwa kufanana nezita reprojekiti.
Izvo zvigadziriso zvekutanga zvinotikodzera chaizvo.
Usavhare iyo tebhu, nyoresa pasi peiyo account account mukati
Google iri kupa $300 kwegore, iyo mumamiriro ekuita autotests yakaenzana negore rekushandiswa kwekusununguka kwebasa. Isu tinoisa ruzivo rwako rwekubhadhara, tomirira bvunzo yekubvisa madhora 1 togamuchira madhora mazana matatu kuaccount yako. Mushure megore, purojekiti ichaendeswa kune imwe purogiramu yemahara, saka hapana chikonzero chekunetseka pamusoro pekugona kurasikirwa kwemari.
Ngatidzokerei kune iyo tebhu ine Firebase purojekiti uye toiendesa kuBlaze tariff chirongwa - ikozvino isu tine chimwe chinhu chekubhadhara kana muganho ukapfuudzwa.
Mune gcloud interface, sarudza purojekiti yedu yeFirebase, sarudza chinhu chikuru chemenu "Directory" uye wedzera Cloud Testing API uye Cloud Tools Result API.
Wobva waenda kumenu chinhu "IAM uye manejimendi" -> Sevhisi maakaundi -> Gadzira sevhisi account. Isu tinopa kodzero yekugadzirisa chirongwa.
Gadzira kiyi yeAPI mune JSON fomati
Tichada iyo JSON yakadhindwa pave paya, asi parizvino tichafunga nezve Test Lab setup yakakwana.
5. Kuisa CircleCI
Mubvunzo unonzwisisika unomuka - chii chekuita nemapassword? Iyo nharaunda inoshanduka mashandiro emuchina wedu wekuvaka ichatibatsira kuchengetedza mapassword edu uye imwe data inonzwisisika. Mune iyo CircleCI purojekiti marongero, sarudza Environment Variables
Uye gadzira zvinotevera zvakasiyana:
- kiyi: GOOGLE_APPLICATION_CREDENTIALS
kukosha: zviri mukati mejson faira yegcloud service account kiyi - kiyi: MATCH_PASSWORD
kukosha: password yekubvisa iyo github repository ine zvitupa - kiyi: FASTLANE_PASSWORD
kukosha: Apple Developer Portal infrastructure account password
Isu tinochengetedza shanduko, gadzira PR uye tinoitumira kune timu yedu inotungamira kuti iongororwe.
Migumisiro
Nekuda kweizvi manipulations akareruka, takagamuchira yakanaka, yakagadzikana yekushanda kumira nekugona kurekodha vhidhiyo pachiratidziro chemudziyo panguva yekuyedzwa. Mumuenzaniso wekuyedza, ndakatsanangura iyo iPhone X mudziyo modhi, asi purazi rinopa yakapfuma sarudzo kubva musanganiswa wemhando dzakasiyana uye iOS shanduro.
Chikamu chechipiri chichapihwa nhanho-ne-nhanho kuseta yeFirebase Test Lab yepurojekiti yeAroid.
Source: www.habr.com