Dzina langa ndine Dmitry, ndimagwira ntchito yoyesa pakampani
Izi zisanachitike, ndinali nditayesa kale Firebase Test Lab ya Android ndipo ndimakonda chilichonse, kotero ndidaganiza zoyesa kuyika zida zoyeserera za iOS za polojekitiyi mofanana. Ndinayenera kupita ku Google kwambiri ndipo sizinali zonse zomwe zidachitika nthawi yoyamba, kotero ndinaganiza zolembera nkhani yophunzitsira iwo omwe akuvutikabe.
Chifukwa chake, ngati muli ndi mayeso a UI pa projekiti ya iOS, mutha kuyesa kale kuziyendetsa pazida zenizeni lero, zoperekedwa mokoma mtima ndi Good Corporation. Kwa omwe ali ndi chidwi, landirani paka.
M'nkhaniyi, ndidaganiza zomanga pazida zoyambira - malo achinsinsi pa GitHub ndi dongosolo lomanga la CircleCI. Dzina la pulogalamuyo ndi AmazingApp, bundleID ndi com.company.amazingapp. Ndikupereka deta iyi mwamsanga kuti ndichepetse chisokonezo chotsatira.
Ngati munagwiritsa ntchito mayankho ena mu projekiti yanu mosiyana, gawanani zomwe mwakumana nazo mu ndemanga.
1. Mayeso okha
Pangani nthambi yatsopano yoyeserera ya UI:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Tiyeni titsegule pulojekitiyi mu XCode ndikupanga Target yatsopano ndi mayeso a UI [XCode -> Fayilo -> Chatsopano -> Target -> iOS Testing Bundle], ndikuyipatsa dzina lodzifotokozera lokha AmazingAppUITests.
Pitani ku gawo la Build Phases la Target yopangidwa ndikuwona kukhalapo kwa Target Dependencies - AmazingApp, mu Compile Sources - AmazingAppUITests.swift.
Mchitidwe wabwino ndikulekanitsa zosankha zosiyanasiyana zomangirira kukhala ma Scheme osiyana. Timapanga chiwembu cha mayeso athu a UI [XCode -> Product -> Scheme -> New Scheme] ndikuchipatsa dzina lomwelo: AmazingAppUITests.
Kupanga kwachiwembu chomwe chapangidwa kuyenera kuphatikiza Chotsatira cha pulogalamu yayikulu - Mayeso a AmazingApp ndi Target UI - AmazingAppUITests - onani chithunzi
Kenako, timapanga masinthidwe atsopano a mayeso a UI. Mu XCode, dinani pa fayilo ya polojekiti ndikupita ku gawo la Info. Dinani pa "+" ndikupanga masinthidwe atsopano, mwachitsanzo XCtest. Izi tidzafunika mtsogolomo kuti tipewe kuvina ndi maseche pankhani yosainira ma code.
Pali Zolinga zitatu mu pulojekiti yanu: ntchito yayikulu, kuyesa mayunitsi (pambuyo pake, alipo, sichoncho?) ndi mayeso a Target UI omwe tidapanga.
Pitani ku Target AmazingApp, Mangani Zikhazikiko, gawo la Chizindikiro Chosaina. Pakusintha kwa XCtest, sankhani iOS Developer. Mugawo la Code Signing Style, sankhani Buku. Sitinapange mbiri yoperekera pano, koma tibwereranso posachedwa.
Kwa Target AmazingAppUITests timachita chimodzimodzi, koma mugawo la Product Bundle Identifier timalowetsa com.company.amazingappuitests.
2. Kukhazikitsa pulojekiti mu Apple Developer Program
Pitani patsamba la Apple Developer Program, pitani kugawo la Zikalata, Zozindikiritsa & Mbiri, kenako pagawo la ID za App pa chinthu cha Identifiers. Pangani ID yatsopano ya App yotchedwa AmazingAppUITests ndi bundleID com.company.amazingappuitests.
Tsopano tili ndi mwayi wosayina mayeso athu ndi chiphaso chosiyana, koma ... Ndondomeko yosonkhanitsa kumanga kuti iyesedwe ikuphatikizapo kusonkhanitsa pulogalamuyo yokha ndikusonkhanitsa wothamanga. Chifukwa chake, tikukumana ndi vuto losaina ma ID awiri okhala ndi mbiri imodzi yopereka. Mwamwayi, pali yankho losavuta komanso lokongola - ID ya Wildcard App. Timabwereza ndondomeko yopangira ID yatsopano ya App, koma m'malo mwa Explicit App ID, sankhani ID ya Wildcard App monga pazithunzi.
Pakadali pano, tamaliza kugwira ntchito ndi developer.apple.com, koma sitichepetsa zenera la msakatuli. Tiyeni tipite
Wowerenga mwachidwi adawona kuti kuti tigwiritse ntchito izi tidzafunika malo osungirako zinsinsi ndi akaunti yokhala ndi Apple Developer Program ndi Github. Timalenga (ngati mwadzidzidzi palibe chinthu choterocho) nkhani ya mawonekedwe [imelo ndiotetezedwa], bwerani ndi mawu achinsinsi amphamvu, lembani ndi developer.apple.com, ndikusankha ngati woyang'anira polojekiti. Chotsatira, timapereka mwayi wofikira ku akaunti yanu ya github ndikupanga malo atsopano okhala ndi dzina ngati AmazingAppMatch.
3. Kukhazikitsa Fastlane ndi kugwiritsa ntchito machesi
Tsegulani terminal, pitani ku chikwatu ndi projekiti ndikuyambitsa fastlane monga momwe zasonyezedwera
$ fastlane init
Mudzafunsidwa kuti musankhe masinthidwe omwe alipo. Sankhani njira yachinayi - khwekhwe la polojekiti pamanja.
Ntchitoyi ili ndi chikwatu chatsopano cha fastlane, chomwe chili ndi mafayilo awiri - Appfile ndi Fastfile. Mwachidule, timasunga deta yautumiki ku Appfile, ndikulemba ntchito mu Fastfile, yotchedwa lanes mu mawu akuti Fastlane. Ndikupangira kuwerenga zolemba zovomerezeka:
Tsegulani Appfile m'mawu omwe mumakonda ndikubweretsa ku mawonekedwe awa:
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
Timabwerera ku terminal ndipo malinga ndi buku lovomerezeka timayamba kukonza machesi.
$ fastlane match init
$ fastlane match development
Kenako, lowetsani zomwe mwapempha - malo, akaunti, mawu achinsinsi, ndi zina.
Nkofunika: Mukayamba kugwiritsa ntchito machesi, mudzapemphedwa kuti mulowetse mawu achinsinsi kuti muchotse posungira. Ndikofunikira kwambiri kusunga mawu achinsinsiwa; tidzayifuna pokhazikitsa seva ya CI!
Fayilo yatsopano yawonekera mufoda ya fastlane - Matchfile. Tsegulani mumkonzi wamawu omwe mumakonda ndikuwonetsa motere:
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
Timazilemba motere ngati tikufuna kugwiritsa ntchito machesi mtsogolomo kusaina ma builds kuti atumizidwe ku Crashlytics ndi/kapena AppStore, ndiye kuti, kusaina ma ID a pulogalamu yanu.
Koma, monga tikukumbukira, tidapanga ID yapadera ya Wildcard kuti tisayine mayeso omanga. Chifukwa chake, tsegulani Fastfile ndikulowetsa njira yatsopano:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Sungani ndikulowa mu terminal
fastlane testing_build_for_firebase
ndipo tikuwona momwe fastlane adapangira satifiketi yatsopano ndikuyiyika m'malo osungira. Zabwino!
Tsegulani XCode. Tsopano tili ndi mbiri yofunikira ya fomu ya Match Development com.company.*, yomwe ikuyenera kufotokozedwa mu gawo la Provisioning profile pazolinga za AmazingApp ndi AmazingAppUITests.
Zimatsalira kuwonjezera njira yosonkhanitsira mayeso. Tiyeni tipite
Tiyeni tikopere-kumata kuchokera ku chitsanzo choyambirira kuti njira yathu yoyesa_build_for_firebase iwoneke motere:
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
Kuti mumve zambiri za kukhazikitsa fastlane ku CircleCI, ndikupangira kuti muwerenge zolemba zovomerezeka
Musaiwale kuwonjezera ntchito yatsopano ku config.yml yathu:
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. Nanga bwanji benchi yathu yoyeserera? Kupanga Firebase.
Tiyeni titsike ku zomwe nkhaniyo inalembedwa.
Mwina pulogalamu yanu imagwiritsa ntchito Firebase papulani yaulere, kapena ayi. Palibe kusiyana kwenikweni, chifukwa pazosowa zoyesa titha kupanga projekiti yosiyana ndi chaka chogwiritsa ntchito kwaulere (kozizira, sichoncho?)
Timalowa muakaunti yathu yachitukuko (kapena china chilichonse, zilibe kanthu), ndikupita ku
Nkofunika: Mu sitepe yapitayi mu Fastfile mu lane firebase_test_lab_ios_xctest gcp_project parameter iyenera kufanana ndi dzina la polojekiti.
Zokonda zokhazikika zimatikwanira bwino.
Osatseka tabu, lembani pansi pa akaunti yomweyo mu
Google ikupereka $ 300 kwa chaka, chomwe pochita ma autotests ndi ofanana ndi chaka chogwiritsa ntchito kwaulere. Timalemba zambiri zolipira, kudikirira kubweza $1 ndikulandila $300 ku akaunti yanu. Pambuyo pa chaka, ntchitoyi idzasamutsidwa ku ndondomeko yaulere yaulere, kotero palibe chifukwa chodera nkhawa za kutaya ndalama.
Tiyeni tibwerere ku tabu ndi pulojekiti ya Firebase ndikusamutsira ku dongosolo la tariff ya Blaze - tsopano tili ndi cholipira ngati malire apitilira.
Mu mawonekedwe a gcloud, sankhani pulojekiti yathu ya Firebase, sankhani chinthu chachikulu cha "Directory" ndikuwonjezera Cloud Testing API ndi Cloud Tools Result API.
Kenako pitani ku menyu "IAM ndi makonzedwe" -> Akaunti yautumiki -> Pangani akaunti yautumiki. Timapereka ufulu wosintha pulojekitiyi.
Pangani kiyi ya API mumtundu wa JSON
Tidzafuna JSON yotsitsidwa mtsogolo pang'ono, koma pakadali pano tilingalira kukhazikitsidwa kwa Test Lab kumalizidwa.
5. Kukhazikitsa CircleCI
Funso lomveka likubuka - chochita ndi mawu achinsinsi? Makina osinthika a chilengedwe a makina athu omanga adzatithandiza kusunga mapasiwedi athu ndi zidziwitso zina. Pazokonda za polojekiti ya CircleCI, sankhani Zosintha Zachilengedwe
Ndipo kupanga zosintha zotsatirazi:
- kiyi: GOOGLE_APPLICATION_CREDENTIALS
mtengo: zomwe zili mu fayilo ya json ya kiyi ya akaunti ya gcloud - kiyi: MATCH_PASSWORD
mtengo: mawu achinsinsi ochotsera posungira github ndi satifiketi - kiyi: FASTLANE_PASSWORD
mtengo: password ya akaunti ya Apple Developer Portal
Timasunga zosintha, kupanga PR ndikutumiza kwa gulu lathu kuti liwunikenso.
Zotsatira
Chifukwa cha kusintha kosavuta kumeneku, tinalandira ntchito yabwino, yokhazikika yogwira ntchito ndi luso lojambula kanema pazithunzi za chipangizo panthawi yoyesera. Muchitsanzo choyesera, ndinatchula chitsanzo cha chipangizo cha iPhone X, koma famuyi imapereka zosankha zambiri kuchokera kumitundu yosiyanasiyana ndi mitundu ya iOS.
Gawo lachiwiri liperekedwa pakukhazikitsa pang'onopang'ono kwa Firebase Test Lab ya pulojekiti ya Android.
Source: www.habr.com