Igama lami ngingu-Dmitry, ngisebenza njengomhloli enkampanini
Ngaphambi kwalokhu, ngase ngivele ngizamile i-Firebase Test Lab ye-Android futhi ngiyithanda kakhulu yonke into, ngakho-ke nginqume ukuzama ukubeka ingqalasizinda yokuhlola ye-iOS yephrojekthi endaweni efanayo. Bekufanele ngiye ku-Google kakhulu futhi akuwona wonke umsebenzi osebenze okokuqala, ngakho-ke nginqume ukubhala indatshana yokufundisa kulabo abasadonsa kanzima.
Ngakho-ke, uma unokuhlolwa kwe-UI kuphrojekthi ye-iOS, ungazama kakade ukukusebenzisa kumadivayisi wangempela namuhla, ahlinzekwe ngomusa i-Good Corporation. Kulabo abanentshisekelo, wamukelekile ekatini.
Endabeni, nginqume ukwakha kudatha ethile yokuqala - indawo yokugcina yangasese ku-GitHub kanye nohlelo lokwakha lwe-CircleCI. Igama lohlelo lokusebenza i-AmazingApp, i-bundleID ithi com.company.amazingapp. Ngethula le datha ngokushesha ukuze nginciphise ukudideka okulandelayo.
Uma usebenzise izixazululo ezithile kuphrojekthi yakho ngendlela ehlukile, yabelana ngolwazi lwakho kumazwana.
1. Izivivinyo ngokwazo
Dala igatsha lephrojekthi elisha lokuhlolwa kwe-UI:
$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”
Masivule iphrojekthi ku-XCode futhi sakhe Ithagethi entsha enokuhlolwa kwe-UI [XCode -> File -> New -> Target -> iOS Testing Bundle], siyinikeze igama elizichazayo elithi AmazingAppUITests.
Iya engxenyeni ethi Yakha Izigaba zeThagethi edaliwe futhi uhlole ukuba khona Kokuncike Okuqondisiwe - AmazingApp, kokuthi Hlanganisa Imithombo - AmazingAppUITests.swift.
Umkhuba omuhle ukuhlukanisa izinketho ezahlukene zokwakha zibe amaSu ahlukene. Sakha isikimu sokuhlolwa kwethu kwe-UI [XCode -> Product -> Scheme -> New Scheme] futhi siyinikeze igama elifanayo: AmazingAppUITests.
Ukwakhiwa kwesikimu esidaliwe kumele kufake Ithagethi yohlelo lokusebenza oluyinhloko - Ukuhlolwa kwe-AmazingApp kanye ne-Target UI - AmazingAppUITests - bheka isithombe-skrini
Okulandelayo, sidala ukulungiselelwa kokwakha okusha kokuhlolwa kwe-UI. Ku-XCode, chofoza ifayela lephrojekthi bese uya engxenyeni ethi Ulwazi. Chofoza ku-“+” bese udala ukucushwa okusha, isibonelo i-XCtest. Lokhu sizokudinga esikhathini esizayo ukuze sigweme ukudansa ngethamborini uma kukhulunywa ngokusayina ikhodi.
Okungenani kukhona Okuhlosiwe okuthathu kuphrojekthi yakho: uhlelo lokusebenza oluyinhloko, ukuhlolwa kweyunithi (ngemuva kwakho konke, kukhona, akunjalo?) kanye nokuhlolwa kwe-Target UI esikudalile.
Iya ku-Target AmazingApp, Yakha Izilungiselelo ithebhu, Ikhodi Ukusayinda Identity isigaba. Ngokulungiselelwa kwe-XCtest, khetha i-iOS Developer. Esigabeni Sesitayela Sokusayina Ikhodi, khetha Manuwali. Asikakhiqizi iphrofayili yokuhlinzekela okwamanje, kodwa nakanjani sizobuyela kuyo ngemva kwesikhashana.
Nge-Target AmazingAppUITests senza okufanayo, kodwa kukholamu Yesikhombi Senqwaba Yomkhiqizo sifaka okuthi com.company.amazingappuitests.
2. Ukusetha iphrojekthi Kuhlelo Lonjiniyela we-Apple
Iya ekhasini Lohlelo Lukanjiniyela we-Apple, hamba esigabeni esithi Izitifiketi, Izihlonzi namaphrofayili bese uye kukholomu yama-ID ohlelo wento Yezihlonzi. Dala i-ID yohlelo lokusebenza entsha ebizwa ngokuthi AmazingAppUITests kanye ne-bundleID com.company.amazingappuitests.
Manje sesinethuba lokusayina izivivinyo zethu ngesitifiketi esihlukile, kodwa... Inqubo yokuhlanganisa isakhiwo ukuze sihlolwe ihlanganisa ukuhlanganisa uhlelo lokusebenza ngokwalo nokuhlanganisa umgijimi wokuhlola. Ngokunjalo, sibhekene nenkinga yokusayina omazisi benqwaba ababili abanephrofayili eyodwa yokuhlinzeka. Ngenhlanhla, kunesixazululo esilula nesinhle - i-ID yohlelo lokusebenza lwe-Wildcard. Siphinda inqubo yokudala i-ID entsha yohlelo lokusebenza, kodwa esikhundleni se-ID Yohlelo Lokusebenza Olucacile, khetha i-ID yohlelo lokusebenza lwe-Wildcard njengasesithombeni-skrini.
Njengamanje, sesiqedile ukusebenzisana ne-developer.apple.com, kodwa ngeke sinciphise iwindi lesiphequluli. Asambe siye
Umfundi oqaphile uqaphele ukuthi ukusebenzisa lolu hlelo sizodinga indawo yokugcina yangasese kanye ne-akhawunti enokufinyelela kukho kokubili Uhlelo Lonjiniyela we-Apple kanye ne-Github. Sakha (uma kungazelelwe ingekho into enjalo) i-akhawunti yefomu [i-imeyili ivikelwe], qhamuka nephasiwedi eqinile, uyibhalise ne-developer.apple.com, futhi uyiqoke njengomlawuli wephrojekthi. Okulandelayo, sinikeza i-akhawunti ukufinyelela kunqolobane ye-github yenkampani yakho bese sidala indawo yokugcina eyimfihlo enegama elifana ne-AmazingAppMatch.
3. Ukusetha i-Fastlane kanye nesisetshenziswa somdlalo
Vula i-terminal, iya kufolda enephrojekthi bese uqalisa i-fastlane njengoba kukhonjisiwe
$ fastlane init
Uzocelwa ukuthi ukhethe izilungiselelo zokusetshenziswa ezitholakalayo. Khetha inketho yesine - ukusethwa kwephrojekthi okwenziwa ngesandla.
Iphrojekthi inombhalo omusha we-fastlane, oqukethe amafayela amabili - I-Appfile ne-Fastfile. Kafushane, sigcina idatha yesevisi ku-Appfile, futhi sibhala imisebenzi nge-Fastfile, ebizwa ngokuthi imizila ngesitemu se-Fastlane. Ngincoma ukuthi ufunde imibhalo esemthethweni:
Vula i-Appfile kusihleli sakho sombhalo osithandayo bese usilethe efomini elilandelayo:
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
Sibuyela ku-terminal futhi ngokusho kwebhukwana elisemthethweni siqala ukulungisa ukufanisa.
$ fastlane match init
$ fastlane match development
Okulandelayo, faka idatha eceliwe - inqolobane, i-akhawunti, iphasiwedi, njll.
Okubalulekile: Lapho uqala ukuqalisa insiza yokufanisa, uzocelwa ukuthi ufake igama-mfihlo ukuze ususe ukubethela inqolobane. Kubaluleke kakhulu ukulondoloza le phasiwedi; sizoyidinga lapho sisetha iseva ye-CI!
Ifayela elisha selivele kufolda ye-fastlane - Matchfile. Ivule kusihleli sakho sombhalo osithandayo futhi usibonise kanje:
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
Siyigcwalisa ngale ndlela ngqo uma sifuna ukusebenzisa okufanayo esikhathini esizayo ukuze sisayinde izakhiwo ukuze ziboniswe ku-Crashlytics kanye/noma i-AppStore, okungukuthi, ukusayina inqwaba ye-ID yohlelo lwakho lokusebenza.
Kodwa, njengoba sikhumbula, sakha i-ID ye-Wildcard ekhethekile ukuze sisayine isakhiwo sokuhlola. Ngakho-ke, vula i-Fastfile bese ufaka umzila omusha:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
)
end
Londoloza bese ungena kutheminali
fastlane testing_build_for_firebase
futhi siyabona ukuthi i-fastlane yakha kanjani isitifiketi esisha futhi yasibeka endaweni yokugcina. Kuhle!
Vula i-XCode. Manje sesinephrofayili yokuhlinzeka edingekayo yefomu elithi Match Development com.company.*, okumele licaciswe esigabeni sephrofayili yokuhlinzeka ngezinhloso ze-AmazingApp kanye ne-AmazingAppUITests.
Kusele ukungeza umzila wokuhlanganisa izivivinyo. Asambe siye
Masikopishe-sinamathisele esibonelweni sangempela ukuze umzila wethu wokuhlola_build_for_firebase ugcina ubukeka kanje:
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
Ukuze uthole ulwazi oluphelele mayelana nokusetha i-fastlane ku-CircleCI, ngincoma ukufunda imibhalo esemthethweni
Ungakhohlwa ukwengeza umsebenzi omusha ku-config.yml yethu:
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. Kuthiwani ngebhentshi lethu lokuhlola? Isetha i-Firebase.
Ake sehlele phansi ukuthi indatshana yayibhalelweni.
Mhlawumbe uhlelo lwakho lokusebenza lusebenzisa i-Firebase kuhlelo lwamahhala, noma mhlawumbe alusebenzisi nhlobo. Awukho nhlobo umehluko oyisisekelo, ngoba ngezidingo zokuhlola singakha iphrojekthi ehlukile enonyaka wokusebenzisa mahhala (kupholile, akunjalo?)
Singena ku-akhawunti yethu yengqalasizinda (noma enye, akunandaba), bese siya ku
Okubalulekile: Esinyathelweni sangaphambilini ku-Fastfile ku-lane firebase_test_lab_ios_xctest ipharamitha ye-gcp_project kufanele ifane negama lephrojekthi.
Izilungiselelo ezizenzakalelayo zisifanela kahle.
Ungavali ithebhu, bhalisa ngaphansi kwe-akhawunti efanayo ku
I-Google inikeza u-$300 ngonyaka, okuyinto esimweni sokwenza ukuhlola okuzenzakalelayo okulingana nonyaka wokusetshenziswa mahhala kwesevisi. Sifaka imininingwane yakho yokukhokha, silinde ukuhlolwa kokudonswa kwemali okungu-$1 bese sithola u-$300 ku-akhawunti yakho. Ngemuva konyaka, iphrojekthi izodluliselwa ngokuzenzakalelayo ohlelweni lwentela yamahhala, ngakho-ke asikho isidingo sokukhathazeka mayelana nokulahlekelwa kwemali okungenzeka.
Masibuyele kuthebhu ngephrojekthi ye-Firebase futhi siyidlulisele ohlelweni lwentela ye-Blaze - manje sinokuthile okufanele sikukhokhe uma umkhawulo weqiwe.
Kusixhumi esibonakalayo se-gcloud, khetha iphrojekthi yethu ye-Firebase, khetha into yemenyu eyinhloko ethi “Uhla lwemibhalo” bese wengeza i-Cloud Testing API kanye ne-API Yomphumela Wamathuluzi Efu.
Bese uye entweni yemenyu ethi “IAM nokuphatha” -> Ama-akhawunti wesevisi -> Dala i-akhawunti yesevisi. Sinikeza amalungelo okuhlela iphrojekthi.
Dala ukhiye we-API ngefomethi ye-JSON
Sizodinga i-JSON elandiwe ngokuhamba kwesikhathi, kodwa okwamanje sizocubungula ukusethwa Kwelebhu Yokuhlola kuqediwe.
5. Ukusetha i-CircleCI
Kuphakama umbuzo ophusile - yini okumele uyenze ngamaphasiwedi? Indlela eguquguqukayo yemvelo yomshini wethu wokwakha izosisiza ukuthi sigcine ngokuvikelekile amaphasiwedi ethu nenye idatha ebucayi. Kuzilungiselelo zephrojekthi ye-CircleCI, khetha Okuguquguqukayo Kwendawo
Futhi setha okuguquguqukayo okulandelayo:
- ukhiye: GOOGLE_APPLICATION_CREDENTIALS
inani: okuqukethwe kwefayela le-json lokhiye we-akhawunti yesevisi ye-gcloud - ukhiye: MATCH_PASSWORD
inani: iphasiwedi yokususa ukubethela inqolobane ye-github enezitifiketi - ukhiye: FASTLANE_PASSWORD
inani: Iphasiwedi ye-akhawunti yengqalasizinda ye-Apple Developer Portal
Silondoloza izinguquko, sidale i-PR futhi siyithumele kumholi wethimba lethu ukuze ibuyekezwe.
Imiphumela
Njengomphumela walokhu kukhohlisa okulula, sithole isitendi sokusebenza esihle, esizinzile esinekhono lokuqopha ividiyo esikrinini sedivayisi ngesikhathi sokuhlola. Esibonelweni sokuhlola, ngicacise imodeli yedivayisi ye-iPhone X, kodwa ipulazi linikeza ukukhetha okucebile kusukela kunhlanganisela yamamodeli ahlukene nezinguqulo ze-iOS.
Ingxenye yesibili izonikelwa ekusetheni isinyathelo ngesinyathelo Selebhu Yokuhlola I-Firebase yephrojekthi ye-Android.
Source: www.habr.com