Igama lam nguDmitry, ndisebenza njengomvavanyi kwinkampani
Ngaphambi koku, ndandisele ndizamile i-Firebase Test Lab ye-Android kwaye ndiyithanda kakhulu yonke into, ngoko ndaye ndagqiba ekubeni ndizame ukubeka isiseko sovavanyo lwe-iOS yeprojekthi kwinqanaba elifanayo. Kwafuneka ndisebenze kuGoogle kakhulu kwaye ayizizo zonke izinto zisebenze okokuqala, ndiye ndagqiba ekubeni ndibhale inqaku lokufundisa kwabo basasokolayo.
Ke, ukuba uneemvavanyo ze-UI kwiprojekthi ye-iOS, unokuzama ukuzisebenzisa kwizixhobo zokwenyani namhlanje, ezibonelelwe ngobubele yi-Good Corporation. Kwabo banomdla, wamkelekile kwikati.
Kwibali, ndagqiba ekubeni ndakhe kwidatha yokuqala - indawo yokugcina yangasese kwi-GitHub kunye nenkqubo yokwakha ye-CircleCI. Igama lesicelo yi-AmazingApp, i-bundleID yi-com.company.amazingapp. Ndibonisa le datha ngokukhawuleza ukunciphisa ukudideka okulandelayo.
Ukuba uphumeze izisombululo ezithile kwiprojekthi yakho ngokwahlukileyo, yabelana ngamava akho kumagqabaza.
1. Iimvavanyo ngokwazo
Yenza isebe elitsha leprojekthi yovavanyo lwe-UI:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Masivule iprojekthi kwi-XCode kwaye senze iThagethi entsha ngovavanyo lwe-UI [XCode -> Ifayile -> Entsha -> Ithagethi -> I-iOS yoVavanyo lweBundle], siyinike igama elichazayo elithi AmazingAppUITests.
Yiya kwicandelo loKwakha iZigaba zeThagethi edaliweyo kwaye ujonge ubukho bokuXhomekeka kwiThagethi - i-AmazingApp, kwiMithombo yoQeqesho - AmazingAppUITests.swift.
Isenzo esilungileyo kukwahlula iinketho ezahlukeneyo zokwakha zibe ziiSkimu ezahlukeneyo. Senza iskimu sovavanyo lwethu lwe-UI [XCode -> Product -> Scheme -> New Scheme] kwaye siyinike igama elifanayo: AmazingAppUITests.
Ulwakhiwo lweskimu esidaliweyo kufuneka lubandakanye iThagethi yesicelo esiphambili - AmazingApp kunye novavanyo lwe-UI ekujoliswe kuyo - AmazingAppUITests - bona umfanekiso weskrini
Okulandelayo, senza uqwalaselo olutsha lolwakhiwo lweemvavanyo ze-UI. Kwi-XCode, cofa kwifayile yeprojekthi kwaye uye kwicandelo loLwazi. Cofa ku-"+" kwaye wenze ulungelelwaniso olutsha, umzekelo XCtest. Siya kuyidinga le nto kwixesha elizayo ukuze siphephe ukudanisa ngentambula xa kuziwa ekusayineni ikhowudi.
Kukho ubuncinane ezintathu Ujoliso kwiprojekthi yakho: isicelo esiphambili, iimvavanyo zeyunithi (emva koko, zikhona, akunjalo?)
Yiya kwi-Target AmazingApp, Yakha ithebhu yeSeto, ikhowudi yokuSayina icandelo leSazisi. Kuqwalaselo lwe-XCtest, khetha i-iOS Developer. Kwicandelo leSimbo sokuSayina kweKhowudi, khetha Incwadi. Asikayivelisi iprofayile yonikezelo okwangoku, kodwa ngokuqinisekileyo siya kubuyela kuyo emva kwexeshana.
KwiThagethi ye-AmazingAppUITests ekujoliswe kuyo senza okufanayo, kodwa kwikholamu yeSihlonzi seMveliso yeMveliso singena com.company.amazingappuitests.
2. Ukumisela iprojekthi kwiNkqubo yoMphuhlisi we-Apple
Yiya kwiphepha leNkqubo yoPhuhlisi we-Apple, yiya kwindawo yeZatifikethi, izichongi kunye neeProfayili kwaye emva koko uye kwikholamu yee-ID ze-App yezinto ze-Izichongi. Yenza i-ID entsha ye-App ebizwa ngokuba yi-AmazingAppUITests kunye ne-bundleID com.company.amazingappuitests.
Ngoku sinethuba lokusayina iimvavanyo zethu ngesatifikethi esahlukileyo, kodwa ... Inkqubo yokudibanisa isakhiwo sokuvavanya ibandakanya ukudibanisa isicelo ngokwalo kunye nokudibanisa umgijimi wovavanyo. Ngokunjalo, sijongene nengxaki yokutyikitya ii-ID ezimbini ezineprofayili enye yobonelelo. Ngethamsanqa, kukho isisombululo esilula kwaye esihle-i-ID ye-Wildcard App. Siphinda inkqubo yokwenza i-ID entsha ye-App, kodwa endaweni ye-ID ye-App ecacileyo, khetha i-ID ye-Wildcard App njengakumfanekiso weskrini.
Ngeli xesha, sigqibile ukusebenza nge-developer.apple.com, kodwa asiyi kunciphisa ifestile yebrawuza. Masiye ku
Umfundi onomdla uye waqaphela ukuba ukusebenzisa esi sixhobo siya kufuna indawo yokugcina yabucala kunye neakhawunti enokufikelela kuzo zombini iNkqubo yoPhuhlisi we-Apple kunye neGithub. Senza (ukuba ngokukhawuleza akukho nto enjalo) i-akhawunti yefom [imeyile ikhuselwe], yiza negama eliyimfihlo elinamandla, libhalise nge-developer.apple.com, kwaye lityumbe njengomlawuli weprojekthi. Emva koko, sinika ukufikelela kwi-akhawunti kwindawo yokugcina i-github yenkampani kwaye senze indawo yokugcina yangasese enegama elifana ne-AmazingAppMatch.
3. Ukumisela i-Fastlane kunye nesixhobo somdlalo
Vula i-terminal, yiya kwifolda eneprojekthi kwaye uqalise i-fastlane njengoko kubonisiwe
$ fastlane init
Uya kucelwa ukuba ukhethe ulungelelwaniso olukhoyo losetyenziso. Khetha ukhetho lwesine - ukuseta iprojekthi ngesandla.
Iprojekthi inoluhlu olutsha lwe-fastlane, oluqulethe iifayile ezimbini - i-Appfile kunye ne-Fastfile. Ngamafutshane, sigcina idatha yenkonzo kwi-Appfile, kwaye sibhala imisebenzi kwi-Fastfile, ebizwa ngokuba yimizila kwisigama se-Fastlane. Ndincoma ukufunda amaxwebhu asemthethweni:
Vula i-Appfile kumhleli wakho wombhalo owuthandayo kwaye uwuzise kule fom ilandelayo:
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 kwi-terminal kwaye ngokuhambelana nencwadana esemthethweni siqala ukuqwalasela umdlalo.
$ fastlane match init
$ fastlane match development
Emva koko, faka idatha eceliwe - indawo yokugcina, i-akhawunti, igama eliyimfihlo, njl.
Kubalulekile: Xa uqala ukwazisa into eluncedo yomdlalo, uya kucelwa ukuba ufake igama lokugqitha ukudekha kwindawo yokugcina. Kubaluleke kakhulu ukugcina eli gama lokugqithisa, siyakuyidinga xa ucwangcisa iseva yeCI!
Ifayile entsha iye yavela kwifolda ye-fastlane-Matchfile. Yivule kumhleli wombhalo owuthandayo kwaye uwubonise ngolu hlobo:
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 ngokuchanekileyo ngale ndlela ukuba sifuna ukusebenzisa umdlalo kwixesha elizayo ukusayina izakhiwo zokubonisa kwiCrashlytics kunye / okanye i-AppStore, oko kukuthi, ukusayina i-ID yesicelo sakho.
Kodwa, njengoko sikhumbula, senze i-ID ekhethekileyo ye-Wildcard ukusayina ulwakhiwo lovavanyo. Ke ngoko, vula iFastfile kwaye ungenise indlela entsha:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Gcina kwaye ungene kwi-terminal
fastlane testing_build_for_firebase
kwaye siyabona indlela i-fastlane idale ngayo isatifikethi esitsha kwaye yasibeka kwindawo yokugcina. Kakhulu!
Vula i-XCode. Ngoku sineprofayile yonikezelo eyimfuneko yefomu yoPhuhliso lweMatch com.company.*, ekufuneka icaciswe kwicandelo leprofayile yoBonelelo kwiithagethi ze-AmazingApp kunye ne-AmazingAppUITests.
Kusele ukongeza indlela yokuhlanganisa iimvavanyo. Masiye ku
Masikope-uncamathisele kumzekelo wokuqala ukuze indlela yethu yovavanyo_build_for_firebase iphele ijongeka ngolu hlobo:
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
Ngolwazi olupheleleyo malunga nokuseka i-fastlane kwi-CircleCI, ndincoma ukufunda amaxwebhu asemthethweni
Ungalibali ukongeza umsebenzi omtsha kwi-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. Kuthekani ngebhentshi yethu yovavanyo? Ukumisela i-Firebase.
Masikhe sijonge ukuba inqaku belibhalelwe ntoni.
Mhlawumbi i-app yakho isebenzisa i-Firebase kwisicwangciso sasimahla, okanye hayi kwaphela. Akukho mahluko usisiseko, kuba kwiimfuno zovavanyo sinokwenza iprojekthi eyahlukileyo kunye nonyaka wokusetyenziswa simahla (kupholile, akunjalo?)
Singena kwi-akhawunti yethu yeziseko zophuhliso (okanye nayiphi na enye, ayinamsebenzi), kwaye uye ku
Kubalulekile: Kwinqanaba langaphambili kwiFastfile kwilane firebase_test_lab_ios_xctest gcp_project parameter kufuneka ihambelane negama leprojekthi.
Useto olungagqibekanga lusifanela kakuhle.
Musa ukuvala ithebhu, bhalisa phantsi kweakhawunti efanayo kwi
I-Google inika i-$ 300 ngonyaka, kwimeko yokwenza i-autotests ilingana nomnyaka wokusetyenziswa kwamahhala kwenkonzo. Sifaka ulwazi lwakho lwentlawulo, silinde idebhithi yovavanyo ye-$1 kwaye sifumane i-$300 kwiakhawunti yakho. Emva konyaka, iprojekthi iya kudluliselwa ngokuzenzekelayo kwisicwangciso sentlawulo yamahhala, ngoko akukho mfuneko yokukhathazeka malunga nokulahlekelwa kwemali.
Masibuyele kwithebhu kunye neprojekthi ye-Firebase kwaye siyidlulisele kwisicwangciso serhafu ye-Blaze - ngoku sinento yokuhlawula ukuba umda ugqithisiwe.
Kujongano lwe-gcloud, khetha iprojekthi yethu ye-Firebase, khetha into ephambili yemenyu ethi "Uvimba weefayili" kwaye wongeze i-API yoVavanyo lwamafu kunye ne-API yeSiphumo seziXhobo zeLifu.
Emva koko uye kwinto yemenyu "IAM kunye nolawulo" -> Iiakhawunti zenkonzo -> Yenza iakhawunti yenkonzo. Sinika amalungelo okuhlela iprojekthi.
Yenza isitshixo se-API kwifomati ye-JSON
Siza kufuna i-JSON ekhutshelweyo kancinane kamva, kodwa okwangoku siza kuthathela ingqalelo ukusetwa kweLebhu yoVavanyo kugqityiwe.
5. Ukumisela i-CircleCI
Kuvela umbuzo onengqiqo - yintoni onokuyenza ngamaphasiwedi? Ukutshintsha kwemekobume kumatshini wethu wokwakha kuya kusinceda sigcine ngokukhuselekileyo amagama ethu ayimfihlo kunye nenye idatha ebuthathaka. Kuseto lweprojekthi ye-CircleCI, khetha i-Environment Variables
Kwaye seta eziguquguqukayo zilandelayo:
- isitshixo: GOOGLE_APPLICATION_CREDENTIALS
ixabiso: imixholo yefayile ye-json yeqhosha le-akhawunti yenkonzo ye-gcloud - isitshixo: MATCH_PASSWORD
ixabiso: igama lokugqitha lokuguqulela uguqulelo oluntsonkothileyo kwindawo yokugcina yegithub enezatifikethi - isitshixo: FASTLANE_PASSWORD
ixabiso: I-Apple Developer Portal password password account
Sigcina utshintsho, senze iPR kwaye siyithumele kwiqela lethu elikhokelayo ukuze lihlolwe.
Iziphumo
Njengomphumo wolu buchule bulula, sifumene umsebenzi olungileyo, ozinzile kunye nokukwazi ukurekhoda ividiyo kwisikrini sesixhobo ngexesha lovavanyo. Kumzekelo wokuvavanya, ndichaze imodeli yesixhobo se-iPhone X, kodwa ifama ibonelela ngokhetho olutyebileyo oluvela kwindibaniselwano yeemodeli ezahlukeneyo kunye neenguqulelo ze-iOS.
Inxalenye yesibini iya kunikezelwa kwinyathelo ngalinye lokuseta iFirebase Test Lab yeprojekthi ye-Android.
umthombo: www.habr.com