O loʻu igoa o Dmitry, ou te galue o se suʻega i le kamupani
Aʻo leʻi oʻo i lenei mea, ua uma ona ou faʻataʻitaʻiina le Firebase Test Lab mo le Android ma e matua fiafia lava i mea uma, o lea na ou filifili ai e taumafai e tuʻu le faʻataʻitaʻiga a le iOS o le poloketi i luga o le tulaga tutusa. Sa tatau ona ou Google tele ae le o mea uma na aoga i le taimi muamua, o lea na ou filifili ai e tusi se tusiga aʻoaʻoga mo i latou o loʻo tauivi pea.
O lea la, afai e iai sau suʻega UI i luga o se poloketi iOS, e mafai ona e taumafai e faʻatautaia i latou i masini moni i aso nei, saunia lelei e le Good Corporation. Mo i latou e fiafia, fa'afeiloa'i ile pusi.
I le tala, na ou filifili e fausia i luga o nisi o faʻamatalaga muamua - o se fale teu oloa i GitHub ma le CircleCI build system. Ole igoa ole talosaga ole AmazingApp, bundleID ole com.company.amazingapp. Ou te tuʻuina atu nei faʻamatalaga vave e faʻaitiitia ai le fenumiai mulimuli ane.
Afai e ese le faʻatinoina o ni fofo i lau poloketi, faʻasoa lou poto masani i faʻamatalaga.
1. O suega lava ia
Fausia se lala poloketi fou mo su'ega UI:
$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”
Sei o tatou tatalaina le poloketi i le XCode ma fatuina se Target fou ma suʻega UI [XCode -> File -> New -> Target -> iOS Testing Bundle], tuʻuina atu i ai le igoa faʻamalamalamaga AmazingAppUITests.
Alu i le Build Phases vaega o le faʻatulagaina Target ma siaki le i ai o Target Dependencies - AmazingApp, i le Compile Sources - AmazingAppUITests.swift.
O se fa'ata'ita'iga lelei o le tu'u'ese'ese lea o filifiliga fau fale i ni Fuafuaga 'ese'ese. Matou te fatuina se polokalame mo a matou suʻega UI [XCode -> Product -> Scheme -> New Scheme] ma tuʻuina i ai le igoa tutusa: AmazingAppUITests.
O le fausiaina o le polokalame e tatau ona aofia ai le Taulaga o le talosaga autu - AmazingApp ma Target UI suʻega - AmazingAppUITests - vaʻai faʻamalama
O le isi, matou te fatuina se faʻatulagaga fou mo suʻega UI. I le XCode, kiliki i le faila o le poloketi ma alu i le Faʻamatalaga vaega. Kiliki i luga o le "+" ma fatuina se faatulagaga fou, mo se faʻataʻitaʻiga XCtest. O le a tatou manaʻomia lenei mea i le lumanaʻi ina ia 'alofia ai le siva ma le topa pe a oʻo i le saini code.
E le itiiti ifo ma le tolu Target i lau poloketi: o le faʻaoga autu, suʻega iunite (pe a uma, o loʻo i ai, saʻo?) ma suʻega Target UI na matou fatuina.
Alu i le Target AmazingApp, Fausia Seti tab, Code Signing Identity vaega. Mo le XCtest configuration, filifili iOS Developer. I le vaega Code Signing Style, filifili Manual. Matou te le'i fa'atupuina se fa'amatalaga tu'ufa'atasi, ae matou te toe fo'i i ai i se taimi mulimuli ane.
Mo Target AmazingAppUITests matou te faia le mea lava e tasi, ae i totonu o le koluma Faʻamatalaga Faʻamatalaga o oloa matou te ulufale i le com.company.amazingappuitests.
2. Faʻatulagaina se poloketi i le Apple Developer Program
Alu i le Apple Developer Program itulau, alu i le Tusi Faamaonia, Fa'ailoga & Tala'aga vaega ona sosoo ai lea ma le koluma App ID o le mea Fa'ailoa. Fausia se ID ID fou e taʻua o AmazingAppUITests ma bundleID com.company.amazingappuitests.
O le taimi nei ua matou maua le avanoa e sainia ai a matou suʻega ma se tusi faamaonia ese, ae ... O le faʻagasologa mo le faʻapipiʻiina o se fale mo suʻega e aofia ai le faʻapipiʻiina o le talosaga lava ia ma faʻapipiʻi le tagata suʻe suʻega. O le mea lea, o loʻo matou feagai ma le faʻafitauli o le sainia o ID faʻapipiʻi e lua ma le faʻamatalaga tuʻufaʻatasiga e tasi. O le mea e lelei ai, o loʻo i ai se fofo faigofie ma matagofie - Wildcard App ID. Matou te toe faia le faʻagasologa mo le fatuina o se ID ID fou, ae nai lo le ID Faʻamatalaga Faʻamatalaga, filifili Wildcard App ID pei o le faʻamalama.
I le taimi nei, ua uma ona matou galulue faatasi ma developer.apple.com, ae matou te le faʻaititia le faʻamalama suʻesuʻe. Tatou o i
Na matauina e se tagata faitau faʻalogo e faʻaaoga lenei aoga o le a matou manaʻomia se fale teu oloa ma se faʻamatalaga e mafai ona maua uma i le Apple Developer Program ma Github. Matou te fatuina (pe a faʻafuaseʻi e leai se mea faapena) se tala o le fomu [imeli puipuia], sau i luga ma se upu faataga malosi, resitala i developer.apple.com, ma tofia e avea ma pule o galuega. Ma le isi, matou te tuʻuina atu le faʻamatalaga avanoa i le fale teu oloa github a lau kamupani ma fatuina se fale teu oloa fou ma se igoa e pei o AmazingAppMatch.
3. Fa'atulaga le Fastlane ma le fa'aoga fetaui
Tatala se laina, alu i le faila o loʻo i ai le poloketi ma amata le laina vave e pei ona faʻaalia i totonu
$ fastlane init
O le a fa'amalosia oe e filifili fa'aoga fa'aoga avanoa. Filifili le filifiliga lona fa - seti galuega faatino tusi lesona.
O le poloketi o loʻo i ai se faʻatonuga fou, lea e aofia ai faila e lua - Appfile ma Fastfile. I se faapuupuuga, matou te teuina faʻamaumauga o auaunaga i Appfile, ma tusi galuega i Fastfile, e taʻua o laina i Faʻamatalaga Fastlane. Ou te fautuaina le faitauina o pepa aloaia:
Tatala le Appfile i lau tusitala tusitusiga e sili ona e fiafia i ai ma aumai i le fomu nei:
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
Matou te toe foʻi i le faʻailoga ma e tusa ai ma le tusi lesona aloaia matou te amata faʻatulagaina le fetaui.
$ fastlane match init
$ fastlane match development
Le isi, faʻapipiʻi le faʻamaumauga o loʻo talosagaina - fale teu oloa, faʻamatalaga, faʻaupuga, ma isi.
E taua ona: A e faʻalauiloa muamua le aoga faʻatusatusa, o le a talosagaina oe e ulufale i se upu faʻaulu e faʻamalo ai le fale teu oloa. E taua tele le faʻasaoina o lenei faʻaupuga; matou te manaʻomia pe a faʻatulagaina le CI server!
Ua aliali mai se faila fou i totonu o le faʻailoga vave - Matchfile. Tatala i lau tusitala tusitusiga e sili ona e fiafia i ai ma faʻaalia e pei o lenei:
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
Matou te faʻatumu saʻo i le auala lenei pe a matou manaʻo e faʻaoga le fetaui i le lumanaʻi e saini ai fale mo faʻaaliga i Crashlytics ma/poʻo le AppStore, o lona uiga, e sainia le fusi ID o lau talosaga.
Ae, e pei ona matou manatua, na matou fatuina se ID Wildcard faapitoa e saini ai le suʻega suʻega. O lea, tatala le Fastfile ma ulufale i se auala fou:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
)
end
Fa'asao ma ulufale i totonu o le nofoaga
fastlane testing_build_for_firebase
ma matou vaʻai i le auala na faia ai e fastlane se tusi faamaonia fou ma tuʻu i totonu o le fale teu oloa. Matagofie!
Tatala XCode. O lea la ua ia i matou le fa'amatalaga talafeagai o le tu'uina atu o le fomu Match Development com.company.*, lea e tatau ona fa'amaoti mai i le vaega Fa'amatalaga Fa'amatalaga mo le AmazingApp ma AmazingAppUITests sini.
O lo'o tumau pea le fa'aopoopoina o le laina mo le fa'aopoopoina o su'ega. Tatou o i
Se'i o tatou kopi-pasi mai le ulua'i fa'ata'ita'iga ina ia fa'auma fa'apea la tatou lane testing_build_for_firebase:
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
Mo faʻamatalaga atoatoa e uiga i le faʻatulagaina o le laina televave i CircleCI, ou te fautuaina le faitau i faʻamaumauga aloaia
Aua nei galo e faaopoopo se galuega fou i la matou 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. Ae faapefea la tatou nofoa suʻega? Fa'atulaga le Firebase.
Se'i tatou o ifo i le mea na tusia ai le tala.
Masalo o lau app e faʻaogaina le Firebase i luga o se fuafuaga e leai se totogi, pe atonu e leai. E matua leai lava se eseesega taua, aua mo suʻega manaʻoga e mafai ona tatou fatuina se isi galuega faʻatasi ma se tausaga o le faʻaaogaina fua (malulu, saʻo?)
Matou te ulufale i totonu o la matou teugatupe faʻapitoa (poʻo se isi lava, e le afaina), ma alu i
E taua ona: I le laasaga muamua i le Fastfile i le lane firebase_test_lab_ios_xctest le gcp_project parameter e tatau ona fetaui ma le igoa o le poloketi.
O tulaga fa'aletonu e fetaui lelei ma i matou.
Aua le tapunia le tab, resitala i lalo o le teugatupe lava e tasi i totonu
Google o loʻo tuʻuina atu le $ 300 mo le tausaga, lea i le tulaga o le faia o suʻega faʻataʻitaʻi e tutusa ma le tausaga o le faʻaaogaina fua o le auaunaga. Matou te tuʻuina lau faʻamatalaga o tupe totogi, faʻatali mo le suʻega talatupe o le $1 ma maua le $300 i lau teugatupe. A maeʻa le tausaga, o le a otometi lava ona faʻafeiloaʻi le poloketi i se fuafuaga faʻatau fua, o lea e leai se mea e popole ai e uiga i le leiloa o tupe.
Tatou toe fo'i i le fa'ailoga ma le poloketi o le Firebase ma tu'u atu i le fuafuaga o le tau o le Blaze - o lea la e iai se mea e totogi pe a sili atu le tapula'a.
I le gcloud interface, filifili la matou poloketi Firebase, filifili le mea autu o le lisi "Directory" ma faʻaopopo le Cloud Testing API ma Cloud Tools Result API.
Ona alu lea i le lisi mea "IAM ma le pulega" -> Faʻamatalaga Auaunaga -> Fausia tala o auaunaga. Matou te tuʻuina atu aia tatau e faʻasaʻo ai le poloketi.
Fausia se ki API ile JSON format
Matou te manaʻomia le JSON na sii mai i se taimi mulimuli ane, ae mo le taimi nei o le a matou mafaufau i le faʻatulagaina o Suʻega Suʻega.
5. Fa'atulagaina CircleCI
O se fesili talafeagai e tulaʻi mai - o le a le mea e fai i upu faʻamaonia? Ole faiga ole si'osi'omaga ole masini faufale o le a fesoasoani ia i tatou e teu malu a tatou upu fa'amaonia ma isi fa'amatalaga ma'ale'ale. I totonu o le CircleCI project settings, filifili le Siosiomaga Variables
Ma fa'atulaga suiga nei:
- ki: GOOGLE_APPLICATION_CREDENTIALS
taua: mea o loʻo i totonu o le faila json o le ki o le account service gcloud - ki: MATCH_PASSWORD
tau: faʻaupuga mo le decrypting le github repository ma tusi faamaonia - ki: FASTLANE_PASSWORD
taua: Apple Developer Portal infrastructure account password
Matou te faʻasaoina suiga, faia se PR ma lafo i la matou 'au taʻitaʻia mo le iloiloga.
O taunuʻuga
O se taunuuga o nei togafiti faigofie, na matou maua ai se tulaga lelei, mautu galue ma le mafai ona puʻeina vitio i luga o le masini mata i le taimi o suʻega. I le faʻataʻitaʻiga faʻataʻitaʻiga, na ou faʻamaonia le faʻataʻitaʻiga o le masini iPhone X, ae o le faʻatoʻaga e maua ai se filifiliga tele mai se tuufaatasiga o faʻataʻitaʻiga eseese ma iOS versions.
O le vaega lona lua o le a tuʻuina atu i laʻasaga taʻitasi seti o le Firebase Test Lab mo se poloketi Android.
puna: www.habr.com