áá»áœááºáá±á¬á·áºáá¬ááẠDmitry áá«á áá¯áá¹ááá®ááŸá¬ á
ááºážáááºáá°á¡ááŒá
Ạá¡áá¯ááºáá¯ááºáá«áááºá
áá®áááá¯ááºáááºááŸá¬ Android á¡ááœáẠFirebase Test Lab ááᯠá ááºážáá¯á¶ážáá¬ážááŒá®ážáá¬ážááŒá áºááŒá®áž á¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡áááºážááá±á¬áá»áá²á·á¡ááœáẠááá±á¬áá»ááºáá²á· iOS á ááºážáááºááŸá¯ á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáá°áá®áá²á·ááŒá±áá¬áá±á«áºááŸá¬ áááºááá¯á· áá¯á¶ážááŒááºáá²á·áá«áááºá áá»áœááºáá±á¬áº Google ááᯠá¡áá»á¬ážááŒá®ážáá¯á¶ážáá²á·áááŒá®áž á¡á á á¡áá¬áᬠá¡áááºáááŒá±áá²á·áá°ážá áá«ááŒá±á¬áá·áº áá¯ááºážáááºáá±ááá°ááœá±á¡ááœáẠáááºáááºážá á¬áá±á¬ááºážáá«ážáá áºáá¯ááºáá±ážááá¯á· áá¯á¶ážááŒááºáá²á·áá«áááºá
ááá¯á·ááŒá±á¬áá·áº ááá·áºááœáẠiOS ááá±á¬áá»ááºáá
áºáá¯ááœáẠUI á
ááºážáááºááŸá¯áá»á¬ážááŸááá«áá Good Corporation á០ááŒááºáá¬á
áœá¬ áá¶á·ááá¯ážáá±ážáá±á¬ ááá±á·áá±ááºááœáẠáááºážááá¯á·ááᯠá
á
áºááŸááºáá±á¬ á
ááºáá»á¬ážááœáẠá
ááºážáá¯á¶ážááá¯ááºáá«ááŒá®á á
áááºáá«áááºá
á¬ážáá°áá»á¬ážá¡ááœááºááŒá±á¬ááºááŸááŒáá¯ááá¯áá«áááºá
áá¬ááºáááºážááœááºá GitHub ááŸáá·áº CircleCI áááºáá±á¬ááºááŸá¯á
áá
áºááœáẠáá®ážááá·áºááááºážáááºážáá¬ážááá·áº áááŠážáá±áá¬á¡áá»áá¯á·ááᯠáááºáá±á¬ááºááẠáá¯á¶ážááŒááºáá²á·áááºá á¡ááá®áá±ážááŸááºážá¡áááºááŸá¬ AmazingApp ááŒá
áºááŒá®áž bundleID ááẠcom.company.amazingapp ááŒá
áºáááºá áá±á¬ááºáááºááœá² ááŸá¯ááºááœá±ážááŸá¯áá»á¬ážááᯠáá»áŸá±á¬á·áá»ááẠá€á¡áá»ááºá¡áááºááᯠáá»áœááºá¯áẠáá»ááºáá»ááºážáááºááŒáá«áááºá
ááá·áºááá±á¬áá»ááºááœáẠá¡áá»áá¯á·áá±á¬ááŒá±ááŸááºážáá»ááºáá»á¬ážááᯠááœá²ááŒá¬ážá áœá¬á¡áá±á¬ááºá¡áááºáá±á¬áºáá«á ááá·áºá¡ááœá±á·á¡ááŒá¯á¶ááᯠááŸááºáá»ááºáá»á¬ážááœáẠáá»áŸáá±áá«á
1. á á¬áá±ážááœá²áá»á¬áž ááá¯ááºááá¯ááºááŒá±áá«á
UI á ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠááá±á¬áá»ááºáá¬áááœá²á¡áá áºáá áºáᯠáááºáá®ážáá«-
$ git checkout develop
$ git pull
$ git checkout -b âfeature/add-ui-testsâ
ááá±á¬áá»ááºááᯠXCode ááœááºááœáá·áºááŒá®áž UI á ááºážáááºááŸá¯áá»á¬áž [XCode -> File -> New -> Target -> iOS Testing Bundle] ááŒáá·áº Target á¡áá áºáá áºáá¯ááᯠáááºáá®ážááá¯ááºáá¡á±á¬ááºá áááºážááᯠAmazingAppUITests áᯠááá¯ááºááá¯ááºááŸááºážááŒáá¬ážáá±á¬ á¡áááºáá±ážááá¯ááºáá«á
áááºáá®ážáá¬ážáá±á¬ Target á Build Phases á¡ááá¯ááºážááá¯á·ááœá¬ážá Target Dependencies - AmazingAppá Compile Sources - AmazingAppUITests.swift ááŸá áááŸá á
á
áºáá±ážáá«á
á¡áá±á·á¡áá»áá·áºáá±á¬ááºážáá áºáá¯ááẠááá°áá®áá±á¬áááºáá±á¬ááºááŸá¯ááœá±ážáá»ááºá áá¬áá»á¬ážááᯠáá®ážááŒá¬ážá¡á á®á¡á á¥áºáá»á¬ážá¡ááŒá Ạááœá²ááŒá¬ážáá¬ážááŒááºážááŒá áºáááºá áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á UI á ááºážáááºááŸá¯áá»á¬áž [XCode -> Product -> Scheme -> New Scheme] ááᯠáááºáá®ážááŒá®áž áááºážááᯠAmazingAppUITests áᯠá¡áááºáá°áá±ážáá«áááºá
áááºáá®ážáá¬ážáá±á¬á¡á á®á¡á á¥áºááœáẠáááºáá¡ááá®áá±ážááŸááºážááá áºááŸááºáá»á¬áž áá«áááºáááẠ- AmazingApp ááŸáá·áº Target UI á ááºážáááºááŸá¯áá»á¬áž - AmazingAppUITests - áááºáá¬ážááŒááºáá¬ááºáá¯á¶ááá¯ááŒáá·áºáá«
ááá¯á·áá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠUI á
ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠáááºáá±á¬ááºááŸá¯áá¯á¶á
á¶á¡áá
áºáá
áºáá¯ááᯠáááºáá®ážáá«áááºá XCode ááœááºá ááá±á¬áá»ááºááá¯ááºááá¯ááŸáááºááŒá®áž á¡áá»ááºá¡áááºááá¹áááá¯á·ááœá¬ážáá«á â+â ááᯠááŸáááºááŒá®áž áá¯á¶á
á¶á¡áá
áºáá
áºáᯠáááºáá®ážáá«á á¥ááᬠXCtestá áá¯ááºáááºááŸááºááá¯ážááŒááºážááœáẠáááºáá¬ááŒáá·áº áááŒááºážá០ááŸá±á¬ááºááŸá¬ážááá¯ááºááẠá¡áá¬áááºááœáẠáááºážááᯠááá¯á¡ááºáá«áááºá
ááá·áºááá±á¬áá»ááºááœáẠá¡áááºážáá¯á¶áž Target áá¯á¶ážáá¯ááŸááááº- áááºáá¡ááá®áá±ážááŸááºážá áá°áá
áºá
ááºážáááºááŸá¯áá»á¬áž (á¡áá¯ááºáá¯á¶ážá áááºážááá¯á·ááŸááá«áááºá ááŸááºáá«ááá¬ážá) ááŸáá·áº áá»áœááºá¯ááºááá¯á·áááºáá®ážáá¬ážáá±á¬ Target UI á
ááºážáááºááŸá¯áá»á¬ážá
Target AmazingAppá Build Settings áááºááºá Code Signing Identity ááá¹áááá¯á· ááœá¬ážáá«á XCtest configuration á¡ááœááºá iOS Developer ááᯠááœá±ážáá«á Code Signing Style ááá¹áááœáẠManual ááá¯ááœá±ážáá»ááºáá«á áá»áœááºá¯ááºááá¯á·ááẠá á®áá¶áá±á¬ááºááœááºáá±ážááá·áº áááá¯ááá¯ááºááᯠááá¯ááºáá¯ááºááá±ážáá±á¬áºáááºáž áááºážááᯠáá±á¬ááºá¡áááºážáááºááŒá¬á០ááŒááºááá¯á·áá±ážáá«áááºá
Target AmazingAppUITests á¡ááœáẠáá»áœááºá¯ááºááá¯á·áááºáž á¡áá¬ážáá°áá¯ááºáá±á¬ááºáááºá ááá¯á·áá±á¬áº Product Bundle Identifier áá±á¬áºáá¶ááœáẠáá»áœááºá¯ááºááá¯á·ááẠcom.company.amazingappuitests ááá¯ááá¯ááºááá·áºáá«áááºá
2. Apple Developer Program ááœáẠááá±á¬áá»ááºáá áºáᯠáááºáá±á¬ááºááŒááºážá
Apple Developer Program á á¬áá»ááºááŸá¬ááá¯á· ááœá¬ážáá«á áááºááŸááºáá»á¬ážá ááœá²ááŒá¬ážáááºááŸááºááŸá¯áá»á¬ážááŸáá·áº áááá¯ááá¯ááºáá»á¬áž ááá¹áááá¯á·ááœá¬ážáᬠááœá²ááŒá¬ážáááºááŸááºááŸá¯ááá¯ááºáᬠá¡ááŒá±á¬ááºážá¡áá¬á á¡ááºáẠID áá±á¬áºáá¶ááá¯á· ááœá¬ážáá«á AmazingAppUITests ááŸáá·áº bundleID com.company.amazingappuitests áá¯áá±á«áºáá±á¬ á¡ááºáẠID á¡áá áºáá áºáᯠáááºáá®ážáá«á
ááá¯áá»áœááºá¯ááºááá¯á·áááºáá»áœááºá¯ááºááá¯á·áá
á¬áá±ážááœá²áá»á¬ážááá¯áá®ážááŒá¬ážáááºááŸááºááŒáá·áºáááºááŸááºááá¯ážáááºá¡ááœáá·áºá¡áá±ážááá«ááŒá®á ááá¯á·áá±á¬áº... á
ááºážáááºááŒááºážá¡ááœááºáááºáá±á¬ááºááŸá¯áááºáááºááŒááºážáá¯ááºáááºážá
ááºááœááºáá»áŸá±á¬ááºááœáŸá¬ááá¯ááºááá¯ááºáááºáááºááŒááºážááŸáá·áºá
ááºážáááºááŒá±ážáá°ááá¯áááºáááºááŒááºážáá« á ááºáááºá ááá¯á·ááŒá±á¬áá·áºá á
á®áá¶áá±á¬ááºááœááºáá±ážááá·áº áááá¯ááá¯ááºáá
áºáá¯ááŒáá·áº á¡ááœá² ID ááŸá
áºáá¯ááᯠáááºááŸááºááá¯ážááẠááŒá¿áá¬ááŸáá·áº áááºááá¯ááºáá±ááááºá áá¶áá±á¬ááºážá
áœá¬ááŒáá·áºá ááá¯ážááŸááºážááŒá®áž á¡á¶áááºááœááºáá» ááŒá±ááŸááºážáá»áẠ- Wildcard App ID ááŸááá«áááºá á¡ááºáẠID á¡áá
áºáá
áºáá¯áááºáá®ážááŒááºážá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáá¯á¶ážáá¯ááºáááºážááᯠáááºáá«ááá²áá²áá¯ááºáá±á¬ááºáá±á¬áºáááºážá Explicit App ID á¡á
á¬ážá áááºáá¬ážááŒááºááœááºááŸáááá²á·ááá¯á· Wildcard App ID ááá¯ááœá±ážáá»ááºáá«á
á€á¡áá»áááºááœááºá developer.apple.com ááŸáá·áº á¡áá¯ááºáá¯ááºááŒá®ážáá«ááŒá®á ááá¯á·áá±á¬áº ááá±á¬ááºáá¬áááºážááá¯ážááᯠáá»áŸá±á¬á·áááºááá¯ááºáá«á ááœá¬ážááŒáá¡á±á¬ááº
ဠutility ááá¯á¡áá¯á¶ážááŒá¯ááẠáá»áœááºá¯ááºááá¯á·ááẠApple Developer Program ááŸáá·áº Github ááŸá áºáá¯áá¯á¶ážááá¯á· áááºáá±á¬ááºááá¯ááºááá·áº áá®ážááá·áºááá¯ááŸá±á¬ááºáá¯á¶ááŸáá·áº á¡áá±á¬áá·áºáá áºáᯠááá¯á¡ááºááŒá±á¬ááºáž áááááŒá¯áááá«áááºá áá»áœááºá¯ááºááá¯á·ááẠ(áá¯ááºáááẠááá¯á¡áá¬áááŸááá»áŸááº) áá¯á¶á á¶áá¡áá±á¬áá·áºáá áºáá¯ááᯠáááºáá®ážáááºá [á¡á®ážáá±ážááºááá¯áá¬ááœááºáá¬ážáááº]ááá¯ááºáá¬áá±á¬ á áá¬ážááŸááºáá áºáᯠáá±á«áºáá¬ááŒá®ážá áááºážááᯠdeveloper.apple.com ááœáẠááŸááºáá¯á¶áááºááŒá®áž ááá±á¬áá»ááºá á®áá¶ááá·áºááœá²áá°á¡ááŒá Ạááá·áºá¡ááºáá«á ááá¯á·áá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠááá·áºáá¯áá¹ááá®á github ááá¯ááŸá±á¬ááºáá¬ááá¯á· á¡áá±á¬áá·áºááᯠáááºáá±á¬ááºááœáá·áºáá±ážááŒá®áž AmazingAppMatch áá²á·ááá¯á·áá±á¬ á¡áááºááŒáá·áº ááá¯ááºááá¯ááºááá¯ááŸá±á¬ááºááŸá¯á¡áá áºáá áºáá¯ááᯠáááºáá®ážáá«á
3. Fastlane ááŸáá·áº ááá¯ááºáá®áá±á¬ á¡áá¯á¶ážáááºááŸá¯ááᯠáááºááŸááºááŒááºážá
terminal ááá¯ááœáá·áºáá«á ááá±á¬áá»ááºááŸáá·áºá¡áá°ááá¯ááºááœá²ááá¯á·ááœá¬ážáá«á ááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºáž fastlane ááá¯á
áááºáá«á
$ fastlane init
áááŸáááá¯ááºáá±á¬ á¡áá¯á¶ážááŒá¯ááŸá¯áá¯á¶á á¶áá»á¬ážááᯠááœá±ážáá»ááºááẠááá·áºá¡á¬áž ááááá±ážáá«áááá·áºáááºá á áá¯áá¹áááœá±ážáá»ááºááŸá¯ - manual project setup ááá¯ááœá±ážáá»ááºáá«á
ááá±á¬áá»ááºááœáẠááá¯ááºááŸá
áºááá¯ááº- Appfile ááŸáá·áº Fastfile áá«ááŸááá±á¬ áááºážááŒá±á¬ááºážá¡áá
áºáá
áºáá¯ááŸááááºá á¡ááá¯áá»á¯ááºá¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºááŸá¯áá±áá¬ááᯠAppfile ááœáẠááááºážáááºážááŒá®áž Fastlane áá±á«áá¬áááá¯ááºáᬠáááºážááŒá±á¬ááºážáá»á¬ážáá¯áá±á«áºáá±á¬ Fastfile ááœáẠá¡áá¯ááºáá»á¬ážáá±ážáá«á ááá¬ážáááºá
á¬ááœááºá
á¬áááºážááá¯áááºááẠá¡ááŒá¶ááŒá¯ááá¯áá«áááºá
áááºááŸá áºáááºáá±á¬ á á¬áá¬ážáááºážááŒááºááŸá¯ááœáẠAppfile ááá¯ááœáá·áºááŒá®áž á¡á±á¬ááºáá«áá¯á¶á á¶ááá¯á· áá°áá±á¬ááºáá¬áá«á
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
áá»áœááºá¯ááºááá¯á·ááẠterminal ááá¯á·ááŒááºááœá¬ážááŒá®ážááá¬ážáááºáááºá áœá²á¡ááá¯ááºážáá»áœááºá¯ááºááá¯á·áááºááá¯ááºáá®ááŸá¯áá¯á¶á á¶ááá¯á áááºáááºá
$ fastlane match init
$ fastlane match development
ááá¯á·áá±á¬áẠáá±á¬ááºážááá¯áá¬ážáá±á¬ áá±áá¬- ááá¯ááŸá±á¬ááºááŸá¯á á¡áá±á¬áá·áºá á áá¬ážááŸáẠá áááºááŒáá·áº ááá¯ááºááá·áºáá«á
áá«áá¬áááºá¡áá±ážááŒá®ážáá«áááº: ááá¯ááºáá®ááŸá¯ utility ááᯠá áááºáá±á¬á¡áá«á repository ááᯠdecrypt áá¯ááºááẠá áá¬ážááŸááºááᯠááá·áºááœááºážááẠááá·áºá¡á¬áž áá±á¬ááºážááá¯áááá·áºáááºá á€á áá¬ážááŸááºááᯠááááºážáááºážááẠá¡ááœááºá¡áá±ážááŒá®ážáá«áááºá CI áá¬áá¬ááᯠá ááœáá·áºáá±á¬á¡áá«ááœáẠáá»áœááºá¯ááºááá¯á· ááá¯á¡ááºáá«áááºá
fastlane ááá¯ááºááœá² - Matchfile ááœáẠááá¯ááºá¡áá áºáá áºáᯠáá±á«áºáá¬áááºá áááºá¡ááŒáá¯ááºáá¯á¶áž á á¬áá¬ážáááºážááŒááºááŸá¯ááœáẠáááºážááá¯ááœáá·áºááŒá®áž áááºážááᯠá€áá²á·ááá¯á·ááŒááá«á
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
Crashlytics ááŸáá·áº/ááá¯á·ááá¯áẠAppStore ááœáẠááá¯á·á áºáááºáááºá¡ááœáẠáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáááºááŸááºáá±ážááá¯ážááẠá¡áá¬áááºááœáẠmatch ááá¯á¡áá¯á¶ážááŒá¯ááá¯áá«á á€áááºážááŒáá·áº á¡ááá¡áá»ááŒáá·áºááœááºážáá«áááºá ááá¯ááá¯áááºááŸá¬ ááá·áºáá»áŸá±á¬ááºááœáŸá¬áá¡á á¯á¡áá±áž ID ááᯠáááºááŸááºááá¯ážáááºá
ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááŸááºááááá±á¬ááºá á ááºážáááºáááºáá±á¬ááºááŸá¯ááᯠáááºááŸááºááá¯ážááẠá¡áá°áž Wildcard ID ááᯠáááºáá®ážáá²á·áááºá ááá¯á·ááŒá±á¬áá·áº Fastfile ááá¯ááœáá·áºááŒá®áž áááºážá¡áá áºáá áºáá¯áááºáá«á
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ÑПзЎаеЌ ПÑЎелÑÐœÑй бÑÐ°ÐœÑ ÐŽÐ»Ñ development ÑеÑÑОÑОкаÑа ÐŽÐ»Ñ Ð¿ÐŸÐŽÐ¿ÐžÑО ÑеÑÑПвПй ÑбПÑкО.
)
end
ááááºážáááºážááŒá®áž terminal áá²ááá¯á·áááºáá«á
fastlane testing_build_for_firebase
ááŒá®ážáá±á¬á· fastlane á áááºááŸááºá¡áá áºááᯠáááºááá¯áááºáá®ážááŒá®áž repository áá²ááŸá¬ ááá·áºáá¬ážááá²ááá¯áá¬ááᯠáá»áœááºáá±á¬áºááá¯á· ááŒááºáá«áááºá ááá¯ááºáááº!
XCode ááá¯ááœáá·áºáá«á ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠááá¯á¡ááºáá±á¬ á á®áá¶áá±á¬ááºááœááºáá±ážááá·áº áááá¯ááá¯ááºááᯠAmazingApp ááŸáá·áº AmazingAppUITests áá áºááŸááºáá»á¬ážá¡ááœáẠá á®áá¶áá±á¬ááºááœááºáá±ážááŒááºáž áááá¯ááá¯ááºááá¹áááœáẠáááºááŸááºáá¬ážáá±á¬ Match Development com.company.* á ááá¯á¡ááºáá±á¬ á á®áá¶áá±á¬ááºááœááºáá±ážááŸá¯ áááá¯ááá¯ááºááᯠáááŸááá¬ážáá«áááºá
á
ááºážáááºáááºáááºáááºá¡ááœáẠáááºážááœá¬ážááá·áºááẠáá»ááºáá±áá±ážáááºá ááœá¬ážááŒáá¡á±á¬ááº
áá»áœááºá¯ááºááá¯á·ááááºážááœá¬áž 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
CircleCI ááœáẠfastlane á
áá
áºááá·áºááœááºážááŒááºážááá¯ááºáᬠá¡áá»ááºá¡áááºá¡ááŒáá·áºá¡á
á¯á¶á¡ááœááºá ááá¬ážáááºá
á¬ááœááºá
á¬áááºážáá»á¬ážááᯠáááºááẠá¡ááŒá¶ááŒá¯áá«áááºá
áá»áœááºá¯ááºááá¯á·á 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. áá»áœááºá¯ááºááá¯á·áá ááºážáááºáá¯á¶áááºážáá»á¬ážáá±á¬á Firebase ááᯠá áá áºááá·áºááœááºážááŒááºážá
áá±á¬ááºážáá«ážááᯠáá¬á¡ááœááºáá±ážáá¬ážáá²ááá¯áá¬ááᯠáá±á·áá¬ááŒáá·áºáá¡á±á¬ááºá
ááá·áºá¡ááºááºááẠá¡ááá²á·á¡á á®á¡á ááºáá áºáá¯ááœáẠFirebase ááᯠá¡áá¯á¶ážááŒá¯ááŒááºáž ááŒá áºááá¯ááºáááºá ááá¯á·ááá¯áẠáá¯á¶ážááááŒá áºáá±á¬ááºážááŒá áºááá¯ááºáááºá á¡ááŒá±áá¶áá»áá±á¬ ááœá¬ááŒá¬ážáá»áẠáá¯á¶ážááááŸááá«á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº á ááºážáááºááŸá¯ááá¯á¡ááºáá»ááºáá»á¬ážá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá¡ááá²á·á¡áá¯á¶ážááŒá¯ááŸá¯ áá áºááŸá áºááŒáá·áº áá®ážááŒá¬ážááá±á¬áá»ááºáá áºáá¯ááᯠáááºáá®ážááá¯ááºáá±á¬ááŒá±á¬áá·áº (á¡á±ážá ááŸááºáá«ááá¬ážá)
áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ á¡áá±á¬áá·áºááá¯á· áá±á¬á·ááºá¡ááºáááºáá« (ááá¯á·ááá¯áẠá¡ááŒá¬ážáááºááá·áºá¡áá¬á០á¡áá±ážáááŒá®ážáá«) ááŸáá·áº ááœá¬ážáá«á
áá«áá¬áááºá¡áá±ážááŒá®ážáá«áááº: áááºážááœáẠfirebase_test_lab_ios_xctest ááŸá Fastfile ááœáẠááááºá¡ááá·áºááœáẠgcp_project áá±á¬ááºááẠááá±á¬áá»ááºá¡áááºááŸáá·áº ááá¯ááºáá®ááá·áºáááºá
áá°áááºážáááºáááºáá»á¬ážááẠáá»áœááºá¯ááºááá¯á·ááŸáá·áº á¡áá±á¬áºáá±ážááá¯ááºáá®áá«áááºá
áááºááºááá¯áááááºáá«ááŸáá·áº á¡áá±á¬áá·áºáá
áºáá¯áááºážá¡á±á¬ááºááœáẠá
á¬áááºážááœááºážáá«á
Google ááẠáá áºááŸá áºáá»áŸáẠáá±á«áºáᬠááá áá±ážáá±áááºá áááºážááẠá¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŸá¯áá»á¬ážáá¯ááºáá±á¬ááºááŒááºážáá¡ááŒá±á¡áá±ááœáẠáááºáá±á¬ááºááŸá¯ááᯠá¡ááá²á·á¡áá¯á¶ážááŒá¯ááá·áº áá áºááŸá áºááŸáá·áº áá®áá»áŸáááºá ááá·áºááœá±áá±ážáá»á±ááŸá¯á¡áá»ááºá¡áááºááᯠáá»áœááºá¯ááºááá¯á·ááŒáá·áºááœááºážááŒá®áž á ááºážáááºááœá±áá¯áẠ$300 ááᯠá á±á¬áá·áºááŒá®áž ááá·áºá¡áá±á¬áá·áºááá¯á· $1 áááºáá¶áááŸááááºááŒá áºáááºá áá áºááŸá áºá¡ááŒá¬ááœááºá ááá±á¬áá»ááºááẠá¡ááá²á·á¡áá±á¬ááºááœááºá¡á á®á¡á ááºááá¯á· á¡ááá¯á¡áá»á±á¬ááºááœáŸá²ááŒá±á¬ááºážáá±ážáááºááŒá áºáá±á¬ááŒá±á¬áá·áº ááœá±ááŒá±ážáá¯á¶ážááŸá¯á¶ážááŸá¯á¡ááœáẠá áááºáá°á áá¬áááá¯áá«á
Firebase ááá±á¬áá»ááºááŒáá·áº áááºááá¯á· ááŒááºááœá¬ážááŒá®áž Blaze tariff á¡á á®á¡á ááºááá¯á· ááœáŸá²ááŒá±á¬ááºážááŒáá«á áá¯á· - ááᯠááá·áºáááºáá»ááºáááºáá»á±á¬áºááœááºáá«á áá»áœááºá¯ááºááá¯á·ááœáẠáá±ážáá±á¬ááºááẠáá áºáá¯áá¯ááŸááá«áááºá
gcloud á¡ááºáá¬áá±á·á áºááœááºá áá»áœááºá¯ááºááá¯á·á Firebase ááá±á¬áá»ááºááᯠááœá±ážáá«á âáááºážááœáŸááºáá»ááºâ áááºááá®áá°ážááᯠááœá±ážáá»ááºááŒá®áž Cloud Testing API ááŸáá·áº Cloud Tools Result API ááᯠááá·áºáá«á
ááá¯á·áá±á¬áẠmenu item "IAM and Administration" -> áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºáá»á¬áž -> áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºáááºáá®ážáá«á áá»áœááºá¯ááºááá¯á·ááẠááá±á¬áá»ááºááᯠáááºážááŒááºááẠá¡ááœáá·áºá¡áá±ážáá»á¬áž áá±ážáá¬ážáááºá
JSON áá±á¬áºáááºááœáẠAPI áá®ážáá
áºáᯠáááºáá®ážáá«á
áá»áœááºá¯ááºááá¯á·ááẠá¡áááºážáááºá¡ááŒá¬ááœáẠáá±á«ááºážáá¯ááºáá¯ááºáá¬ážáá±á¬ JSON ááᯠááá¯á¡ááºáááá·áºáááºá ááá¯á·áá±á¬áº ááá¯ááœáẠTest Lab á
áá
áºááá·áºááœááºážááŸá¯ á¡ááŒá®ážáááºááẠá
ááºážá
á¬ážáá«áááºá
5. CircleCI ááᯠáááºááŸááºááŒááºážá
áá»áá¯ážááŒá±á¬ááºážáá®áá»á±á¬áºáá±á¬áá±ážááœááºážáá áºáá¯áá±á«áºáá¬ááẠ- á áá¬ážááŸááºáá»á¬ážááŸáá·áºáá¬áá¯ááºááááºáááºážá áá»áœááºá¯ááºááá¯á·á áááºáá±á¬ááºá ááºá áááºáááºážáá»áẠááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ ááá¹ááá¬ážááẠáá»áœááºá¯ááºááá¯á·á á áá¬ážááŸááºáá»á¬ážááŸáá·áº á¡ááŒá¬áž á¡áá±ážááŒá®ážáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáá¯á¶ááŒá¯á¶á áœá¬ ááááºážáááºážááẠáá°áá®áá±ážáá«áááºá CircleCI ááá±á¬áá»ááºáááºáááºáá»á¬ážááœáẠEnvironment Variables ááá¯ááœá±ážáá»ááºáá«á
ááŒá®ážáá»áŸáẠá¡á±á¬ááºáá« variable áá»á¬ážááᯠáááºááŸááºáá«á
- áá±á¬á·- GOOGLE_APPLICATION_CREDENTIALS
áááºááá¯áž- gcloud áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºáá±á¬á·á json ááá¯ááºá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬áž - áá±á¬á·- MATCH_PASSWORD
áááºááá¯áž- github repository ááᯠáááºááŸááºáá»á¬ážááŒáá·áº áá¯ááºááŸááºááŒááºážá¡ááœáẠá áá¬ážááŸáẠ- áá±á¬á·- FASTLANE_PASSWORD
áááºááá¯áž- Apple Developer Portal á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ á¡áá±á¬áá·áº á áá¬ážááŸááº
áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááááºážáááºážááŒá®áž PR áá áºáá¯áááºáá®ážááŒá®áž ááŒááºáááºáá¯á¶ážáááºáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·áá¡ááœá²á·áá±á«ááºážáá±á¬ááºáᶠáá±ážááá¯á·áá«áááºá
ááááºáá»á¬ážááá¯
á€ááá¯ážááŸááºážáá±á¬ ááŒááºááŸááºááŸá¯áá»á¬ážááŒá±á¬áá·áºá á ááºážáááºáá»áááºá á ááºá ááááºáá±á«áºááœáẠáá®áá®ááá¯ááá¯ááºáá°ážááá¯ááºááŸá¯ááŸáá·áºá¡áá° áá±á¬ááºážááœááºááŒá®áž áááºááŒáááºáá±á¬ á¡áá¯ááºáááºáááºááŸá¯ááᯠáá»áœááºá¯ááºááá¯á· áááŸááá²á·áá«áááºá á ááºážáááºááŸá¯ááá°áá¬ááœááºá iPhone X á ááºáá á¹á ááºážáá±á¬áºáááºááᯠáá»áœááºá¯ááºáááºááŸááºáá¬ážáá±á¬áºáááºáž áááºáá¬ááẠááá°áá®áá±á¬áá±á¬áºáááºáá»á¬ážááŸáá·áº iOS áá¬ážááŸááºážáá±á«ááºážá ááºááŸá¯á០ááŒáœááºááá±á¬ááœá±ážáá»ááºááŸá¯ááᯠáá±ážáá«áááºá
áá¯áááá¡ááá¯ááºážááẠAndroid ááá±á¬áá»ááºá¡ááœáẠFirebase Test Lab ááᯠá¡ááá·áºááá·áºááá·áºááœááºážááŒááºážá¡ááœáẠá¡á¬áá¯á¶á
áá¯ááºáá«áááºá
source: www.habr.com