Aha m bụ Dmitry, ana m arụ ọrụ dị ka onye nyocha n'otu ụlọ ọrụ
Tupu nke ahụ, anwalela m Firebase Test Lab maka gam akporo na ihe niile masịrị m nke ukwuu, yabụ ekpebiri m ịnwale itinye akụrụngwa nnwale iOS nke ọrụ ahụ n'otu ụzọ ụgbọ oloko ahụ. Ekwesịrị m google ọtụtụ ma ọ bụghị ihe niile na-arụ ọrụ na mbụ, n'ihi ya, m kpebiri ide akwụkwọ nkuzi maka ndị ka ga-eme ya.
Yabụ, ọ bụrụ na ị nwere ule UI na ọrụ iOS, ị nwere ike ịnwale ịgbanye ha na ngwaọrụ dị adị taa, nke Good Corporation jiri obiọma nyere. Mmasị - nnabata n'okpuru pusi.
N'ime akụkọ ahụ, ekpebiri m ịmalite na ụfọdụ data isi mmalite - ebe nchekwa nke onwe na GitHub na CircleCI. Aha ngwa bụ AmazingApp, bundleID bụ com.company.amazingapp. M na-ehota data ndị a ozugbo, iji belata mgbagwoju anya na-esote.
Ọ bụrụ na ị mebere ụfọdụ ngwọta na ọrụ gị dị iche iche, kesaa ahụmahụ gị na nkwupụta.
1. The ule onwe ha
Mepụta alaka ọrụ ọhụrụ maka ule UI:
$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”
Ka anyị mepee ọrụ ahụ na XCode wee mepụta Target ọhụrụ na ule UI [XCode -> File -> New -> Target -> iOS Testing Bundle], nye ya aha ịkọ AmazingAppUITests.
Gaa na ngalaba Mee usoro nke Target mebere wee lelee maka ịdabere na Target - AmazingApp, na isi mmalite mkpokọta - AmazingAppUITests.swift.
Ọ bụ omume dị mma ikewapụ nhọrọ ụlọ dị iche iche n'ime atụmatụ dị iche iche. Anyị na-emepụta atụmatụ maka ule UI anyị [XCode -> Ngwaahịa -> Atụmatụ -> Atụmatụ ọhụrụ] wee nye ya otu aha: AmazingAppUITests.
Iwulite atụmatụ emepụtara kwesịrị ịgụnye ebumnuche nke ngwa - AmazingApp na ule UI Target - AmazingAppUITests - lee nseta ihuenyo.
Na-esote, anyị na-emepụta nhazi ihe nrụpụta ọhụrụ maka ule UI. Na Xcode, pịa faịlụ ọrụ, gaa na ngalaba Ama. Pịa na "+" wee mepụta nhazi ọhụrụ, dịka ọmụmaatụ XCtest. Anyị ga-achọ nke a n'ọdịnihu ka anyị wee zere iji ịgbà egwu egwu mgbe a bịara n'ịbanye koodu.
Enwere opekata mpe atọ na ọrụ gị: ngwa bụ isi, nnwale otu (enwere ụfọdụ, nri?) na UI nke ule anyị mepụtara.
Gaa na Target AmazingApp, wuo ntọala taabụ, ngalaba nbanye koodu. Maka nhazi XCtest, họrọ iOS Mmepụta. Na ngalaba Ịbanye Ụdị Usoro, họrọ ntuziaka. Anyị emebebeghị profaịlụ inyefe, mana anyị ga-alaghachi na ya ntakịrị oge.
Maka Target AmazingAppUITests, anyị na-eme otu ihe ahụ, mana tinye com.company.amazingappuitests na kọlụm njirimara Ngwaahịa.
2. Ịtọlite ọrụ na Apple Developer Programme
Anyị na-aga na ibe Mmemme Mmepụta Apple, gaa na Asambodo, Identifiers & Profaịlụ ngalaba wee gaa na kọlụm NJ ngwa nke ihe Nchọpụta. Mepụta NJ ngwa ọhụrụ aha AmazingAppUITests na bundleID com.company.amazingappuitests.
Ugbu a, anyị nwere ohere iji akwụkwọ dị iche iche bịanye aka n'ule anyị, ma ... Usoro iwu maka ule gụnyere ịmepụta ngwa ahụ n'onwe ya na ịmepụta onye na-agba ọsọ ule. N'ihi ya, anyị na-eche nsogbu nke ịbịanye aka na ngwugwu ngwugwu abụọ nwere otu profaịlụ ntinye. Ọ dabara nke ọma, enwere ngwọta dị mfe ma maa mma - Wildcard App ID. Anyị na-emegharị usoro maka ịmepụta NJ ngwa ọhụrụ, mana kama NJ ngwa ngwa, họrọ Wildcard App ID dị ka ọ dị na nseta ihuenyo.
N'oge a, anyị emeela developer.apple.com, mana anyị agaghị ebelata windo ihe nchọgharị. Ka anyị gaa
Onye na-agụ nke ọma achọpụtala na iji jiri akụrụngwa a, anyị chọrọ ebe nchekwa nkeonwe yana akaụntụ nwere ohere ịnweta ma Mmemme Mmepụta Apple yana Github. Anyị na-emepụta (ma ọ bụrụ na mberede ọ dịghị ihe dị otú ahụ) akaụntụ nke ụdị [email protected], wepụta okwuntughe siri ike, debanye aha ya na developer.apple.com, ma họpụta ya dị ka onye nchịkwa ọrụ. Na-esote, nye akaụntụ gị ohere ịnweta ebe nchekwa github nke ụlọ ọrụ gị wee mepụta ebe nchekwa ọhụrụ nke nwere aha dịka AmazingAppMatch.
3. Ịtọlite Fastlane na ngwa egwuregwu
Mepee ọnụ, gaa na folda nke nwere oru ngo wee bido fastlane dị ka egosiri na ya
$ fastlane init
a ga-akpali gị ịhọrọ nhazi ojiji dị. Anyị na-ahọrọ ihe nke anọ - nhazi ntuziaka nke ọrụ ahụ.
Akwụkwọ ndekọ fastlane ọhụrụ apụtala na ọrụ ahụ, nke enwere faịlụ abụọ - Appfile na Fastfile. Na nkenke - na Appfile anyị na-echekwa data ọrụ, na Fastfile anyị na-ede ọrụ, na ngwa ngwa Fastlane nke a na-akpọ lanes. Ana m akwado ịgụ akwụkwọ gọọmentị:
Mepee Appfile na ndezi ederede ọkacha mmasị gị wee weta ya n'ụdị a:
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
Anyị na-alaghachi na njedebe ma, dịka akwụkwọ ntuziaka gọọmentị si dị, malite ịtọ ntọala egwuregwu.
$ fastlane match init
$ fastlane match development
Ọzọ, tinye data achọrọ - ebe nchekwa, akaụntụ, paswọọdụ, wdg.
Ọ dị mkpa ka: oge mbụ ị na-arụ ọrụ egwuregwu ahụ, ọ ga-ajụ gị ka itinye paswọọdụ iji mebie ebe nchekwa ahụ. Ọ dị ezigbo mkpa ịchekwa paswọọdụ a, anyị ga-achọ ya na ọkwa nke ịtọ ntọala CI!
Faịlụ ọhụrụ apụtala na folda fastlane - Matchfile. Mepee ya na ndezi ederede ọkacha mmasị gị wee weta ya n'ụdị:
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
Anyị na-ejupụta ya n'ụzọ dị otú a ma ọ bụrụ na anyị chọrọ iji egwuregwu n'ọdịnihu bịanye aka na-ewu maka ibugo na Crashlytics na / ma ọ bụ AppStore, ya bụ ịbanye na ngwugwu ID nke ngwa gị.
Mana, dịka anyị na-echeta, anyị mepụtara ID Wildcard pụrụ iche iji bịanye aka na nrụpụta ule. Ya mere, mepee Fastfile ma tinye ụzọ ọhụrụ:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
)
end
Chekwa, banye n'ọnụ ọnụ
fastlane testing_build_for_firebase
wee hụ ka fastlane siri mepụta akwụkwọ ọhụrụ wee tinye ya na ebe nchekwa. Nnukwu!
Mepee XCode. Ugbu a, anyị nwere profaịlụ nkwado achọrọ nke ụdị ụlọ ọrụ Match Development com.*, nke a ga-akọwarịrị na ngalaba profaịlụ inye maka ebumnuche AmazingApp na AmazingAppUITests.
Ọ ka dị ka ịgbakwunye okporo ụzọ iji wuo ule. Ka anyị gaa
Detuo mado site na ihe atụ izizi ka ụzọ anyị test_build_for_firebase mechaa dị ka nke a:
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
Maka ozi zuru oke gbasara ịtọlite fastlane na CircleCI, ana m akwado ịgụ akwụkwọ gọọmentị
Echefula itinye ọrụ ọhụrụ na config.yml anyị:
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. Kedu maka bench ule anyị? Ịtọlite Firebase.
Ka anyị gaa n'ihu, n'ezie, n'ihe e dere akụkọ ahụ.
Ngwa gị nwere ike na-eji Firebase na atụmatụ efu, ma ọ bụ na ọ gaghị eji Firebase ma ọlị. Enweghị ezigbo ọdịiche dị mkpa, n'ihi na maka mkpa nke ule anyị nwere ike ịmepụta ọrụ dị iche iche na afọ nke iji n'efu (ọ dị mma, huh?)
Anyị na-abanye na akaụntụ akụrụngwa anyị (ma ọ bụ ihe ọ bụla ọzọ, ọ dịghị mkpa), wee gaa na
Ọ dị mkpa ka: Na nzọụkwụ gara aga, na Fastfile na lane firebase_test_lab_ios_xctest, gcp_project parameter ga-adakọrịrị aha nke ọrụ ahụ.
Ntọala ndabara dabara anyị nke ọma.
Anyị anaghị emechi taabụ, anyị na-edebanye aha n'okpuru otu akaụntụ n'ime
Google na-enye $300 maka otu afọ, nke n'ihe gbasara ime autotest bụ otu afọ nke iji ọrụ ahụ n'efu. Anyị na-abanye data ịkwụ ụgwọ, chere maka ndetu ule nke $1 wee nweta $300 na akaụntụ ahụ. Mgbe otu afọ gasịrị, a ga-ebufe ọrụ ahụ na-akpaghị aka na atụmatụ tarifụ efu, n'ihi ya, ị gaghị echegbu onwe gị maka ego ga-efunahụ ya.
Ka anyị jiri ọrụ Firebase laghachi na taabụ wee bufee ya na atụmatụ tarifu Blaze - ugbu a anyị nwere ihe anyị ga-akwụ ma ọ bụrụ na oke oke.
N'ime gcloud interface, họrọ ọrụ Firebase anyị, họrọ ihe nchịkọta nhọrọ "Katalọgụ" wee tinye API Nlele Uru ojii na Cloud Tools API.
Mgbe ahụ gaa na menu ihe "IAM na nchịkwa" -> Akaụntụ ọrụ -> Mepụta akaụntụ ọrụ. Nye ikike idezi ọrụ a.
Mepụta igodo API n'ụdị JSON
Anyị ga-achọ JSON ebudatara obere oge, mana ugbu a, anyị ga-atụle ntọlite Lab Test zuru ezu.
5. Ịtọ ntọala CircleCI
Ajụjụ ezi uche dị na ya na-emepụta - kedu ihe a ga-eme na okwuntughe? Iji dobe okwuntughe anyị na data ndị ọzọ nwere mmetụta na nzuzo, usoro mgbanwe gburugburu ebe igwe anyị na-ewu ga-enyere anyị aka. Na ntọala ọrụ CircleCI, họrọ mgbanwe gburugburu
Ma tọọ mgbanwe ndị a:
- igodo: GOOGLE_APPLICATION_CREDENTIALS
uru: ọdịnaya nke igodo ọrụ gcloud faịlụ json - igodo: MATCH_PASSWORD
uru: okwuntughe iji decrypt github repository na asambodo - igodo: FASTLANE_PASSWORD
uru: Apple Developer Portal akụrụngwa akaụntụ paswọọdụ
Anyị na-echekwa mgbanwe ndị ahụ, mepụta PR wee ziga ya na ndị isi otu anyị maka nyocha.
Nsonaazụ
N'ihi nhịahụ ndị a dị mfe, anyị nwetara ezigbo nkwụsi ike na-arụ ọrụ nke nwere ike ịdekọ vidiyo na ihuenyo ngwaọrụ n'oge ule. N'okwu nnwale ahụ, akọwapụtara m ụdị ngwaọrụ iPhone X, mana ugbo na-enye nhọrọ bara ụba site na ngwakọta nke ụdị dị iche iche na ụdị iOS.
Akụkụ nke abụọ ga-etinye aka na ịtọlite Firebase Test Lab maka ọrụ gam akporo gam akporo site na nzọụkwụ.
isi: www.habr.com