Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

Igama lam nguDmitry, ndisebenza njengomvavanyi kwinkampani Inzululwazi ye-MEL. Kutshanje ndigqibe ukujongana nenqaku lamva nje ukusuka Ilebhu yoVavanyo lweFirebase β€” oko kukuthi, ngovavanyo lwezixhobo zokusebenza ze-iOS usebenzisa isakhelo sovavanyo lwemveli XCUITest.

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.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

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

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

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.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

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.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

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.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

Ngeli xesha, sigqibile ukusebenza nge-developer.apple.com, kodwa asiyi kunciphisa ifestile yebrawuza. Masiye ku Indawo yamaxwebhu eFastlane kwaye ufunde malunga nesixhobo somdlalo ukusuka kwiqweqwe ukuya kuthi ga kwikhava.

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 incwadi esemthethweni. Emva kokufaka umyalelo

$ fastlane init

Uya kucelwa ukuba ukhethe ulungelelwaniso olukhoyo losetyenziso. Khetha ukhetho lwesine - ukuseta iprojekthi ngesandla.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

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: maxesha, Π΄Π²Π°.

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.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

Kusele ukongeza indlela yokuhlanganisa iimvavanyo. Masiye ku indawo yokugcina iprojekthi yeplagi ye-fastlane eyenza kube lula ukuseta ukuthunyelwa ngaphandle kwi-Firebase Test Lab kwaye ulandele imiyalelo.

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 Kanye, Π΄Π²Π°.

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 Iphepha le-Firebase console. Yenza iprojekthi entsha ebizwa ngokuba yi-AmazingAppUITests.

Kubalulekile: Kwinqanaba langaphambili kwiFastfile kwilane firebase_test_lab_ios_xctest gcp_project parameter kufuneka ihambelane negama leprojekthi.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

Useto olungagqibekanga lusifanela kakuhle.

Musa ukuvala ithebhu, bhalisa phantsi kweakhawunti efanayo kwi Gcloud - lo ngumlinganiselo oyimfuneko, kuba unxibelelwano neFirebase lwenzeka kusetyenziswa i-gcloud console interface.

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.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

Emva koko uye kwinto yemenyu "IAM kunye nolawulo" -> Iiakhawunti zenkonzo -> Yenza iakhawunti yenkonzo. Sinika amalungelo okuhlela iprojekthi.

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

Yenza isitshixo se-API kwifomati ye-JSON

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project

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

Siqhuba uvavanyo lwezixhobo kwiLebhu yoVavanyo lwe-Firebase. Icandelo 1: iOS project
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

Yongeza izimvo