เชฎเชพเชฐเซเช เชจเชพเชฎ เชฆเชฟเชฎเชฟเชคเซเชฐเซ เชเซ, เชนเซเช เชเชเชชเชจเซเชฎเชพเช เชเซเชธเซเชเชฐ เชคเชฐเซเชเซ เชเชพเชฎ เชเชฐเซเช เชเซเช
เช เชชเชนเซเชฒเชพ, เชฎเซเช เชเชจเซเชกเซเชฐเซเชเชก เชฎเชพเชเซ เชซเชพเชฏเชฐเชฌเซเช เชเซเชธเซเช เชฒเซเชฌ เช เชเชฎเชพเชตเซ เชเซเชเซ เชเซ เช เชจเซ เชเชฐเซเชเชฐ เชฌเชงเซเช เชเชฎเซเชฏเซเช, เชคเซเชฅเซ เชฎเซเช เชชเซเชฐเซเชเซเชเซเชเชจเชพ iOS เชเซเชธเซเช เชเชจเซเชซเซเชฐเชพเชธเซเชเซเชฐเชเซเชเชฐเชจเซ เชธเชฎเชพเชจ เชงเซเชฐเชฃเซ เชฎเซเชเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช. เชฎเชพเชฐเซ เชเชฃเซเช เชเซเชเชฒ เชเชฐเชตเซเช เชชเชกเซเชฏเซเช เชนเชคเซเช เช เชจเซ เชฌเชงเซเช เชชเชนเซเชฒเซเชตเชพเชฐ เชเชพเชฎ เชเชฐเชคเซเช เชจ เชนเชคเซเช, เชคเซเชฅเซ เชฎเซเช เชคเซ เชฒเซเชเซ เชฎเชพเชเซ เชเซเชฏเซเชเซเชฐเซเชฏเชฒ เชฒเซเช เชฒเชเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช เชเซเช เชนเชเซ เชชเชฃ เชธเชเชเชฐเซเชท เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ.
เชคเซเชฅเซ, เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ iOS เชชเซเชฐเซเชเซเชเซเช เชชเชฐ UI เชชเชฐเซเชเซเชทเชฃเซ เชเซ, เชคเซ เชคเชฎเซ เชคเซเชจเซ เชเชเซ เช เชตเชพเชธเซเชคเชตเชฟเช เชเชชเชเชฐเชฃเซ เชชเชฐ เชเชฒเชพเชตเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชถเชเซ เชเซ, เชเซเชชเชพ เชเชฐเซเชจเซ เชเซเชก เชเซเชฐเซเชชเซเชฐเซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชฒเซเชเซ เชฎเชพเชเซ, เชฌเชฟเชฒเชพเชกเซเชฎเชพเช เชเชชเชจเซเช เชธเซเชตเชพเชเชค เชเซ.
เชตเชพเชฐเซเชคเชพเชฎเชพเช, เชฎเซเช เชเซเชเชฒเชพเช เชชเซเชฐเชพเชฐเชเชญเชฟเช เชกเซเชเชพ เชชเชฐ เชฌเชฟเชฒเซเชก เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช - GitHub เช
เชจเซ CircleCI เชฌเชฟเชฒเซเชก เชธเชฟเชธเซเชเชฎ เชชเชฐ เชเช เชเชพเชจเชเซ เชญเชเชกเชพเชฐ. เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซเช เชจเชพเชฎ AmazingApp เชเซ, bundleID com.company.amazingapp เชเซ. เช
เชจเซเชเชพเชฎเซ เชฎเซเชเชเชตเชฃ เชเชเชพเชกเชตเชพ เชฎเชพเชเซ เชนเซเช เชคเชฐเชค เช เช เชกเซเชเชพ เชฐเชเซ เชเชฐเซเช เชเซเช.
เชเซ เชคเชฎเซ เชคเชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เช เชฎเซเช เชเชเซเชฒเซเชจเซ เช เชฒเช เชฐเซเชคเซ เช เชฎเชฒเชฎเชพเช เชฎเซเชเซเชฏเชพ เชนเซเชฏ, เชคเซ เชคเชฎเชพเชฐเซ เช เชจเซเชญเชต เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช เชถเซเชฐ เชเชฐเซ.
1. เชชเชฐเซเชเซเชทเชฃเซ เชชเซเชคเชพเชจเซ
UI เชชเชฐเซเชเซเชทเชฃเซ เชฎเชพเชเซ เชจเชตเซ เชชเซเชฐเซเชเซเชเซเช เชถเชพเชเชพ เชฌเชจเชพเชตเซ:
$ git checkout develop
$ git pull
$ git checkout -b โfeature/add-ui-testsโ
เชเชพเชฒเซ XCode เชฎเชพเช เชชเซเชฐเซเชเซเชเซเช เชเซเชฒเซเช เช เชจเซ UI เชชเชฐเซเชเซเชทเชฃเซ [XCode -> เชซเชพเชเชฒ -> เชจเชตเซเช -> เชฒเชเซเชทเซเชฏ -> iOS เชชเชฐเซเชเซเชทเชฃ เชฌเชเชกเชฒ] เชธเชพเชฅเซ เชเช เชจเชตเซเช เชฒเชเซเชทเซเชฏ เชฌเชจเชพเชตเซเช, เชคเซเชจเซ AmazingAppUITests เชจเชพเชฎ เชเชชเซ.
เชฌเชจเชพเชตเซเชฒ เชเชพเชฐเซเชเซเชเชจเชพ เชฌเชฟเชฒเซเชก เชซเซเช เชธเซเชเซเชถเชจ เชชเชฐ เชเชพเช เช
เชจเซ เชเชฎเซเชชเชพเชเชฒ เชธเซเชฐเซเชธเซเชธ - AmazingAppUITests.swift เชฎเชพเช เชเชพเชฐเซเชเซเช เชกเชฟเชชเซเชจเซเชกเชจเซเชธเซเช - AmazingApp เชจเซ เชนเชพเชเชฐเซ เชคเชชเชพเชธเซ.
เชเช เชธเชพเชฐเซ เชชเซเชฐเชฅเชพ เช เชเซ เชเซ เชตเชฟเชตเชฟเชง เชฌเชฟเชฒเซเชก เชตเชฟเชเชฒเซเชชเซเชจเซ เช เชฒเช-เช เชฒเช เชธเซเชเซเชฎเชฎเชพเช เช เชฒเช เชเชฐเซ. เช เชฎเซ เช เชฎเชพเชฐเชพ UI เชชเชฐเซเชเซเชทเชฃเซ [XCode -> เชชเซเชฐเซเชกเชเซเช -> เชธเซเชเซเชฎ -> เชจเชตเซ เชธเซเชเซเชฎ] เชฎเชพเชเซ เชเช เชธเซเชเซเชฎ เชฌเชจเชพเชตเซเช เชเซเช เช เชจเซ เชคเซเชจเซ เช เช เชจเชพเชฎ เชเชชเซเช เชเซเช: AmazingAppUITests.
เชฌเชจเชพเชตเซเชฒ เชธเซเชเซเชฎเชจเชพ เชจเชฟเชฐเซเชฎเชพเชฃเชฎเชพเช เชฎเซเชเซเชฏ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซเช เชฒเชเซเชทเซเชฏ เชถเชพเชฎเซเชฒ เชนเซเชตเซเช เชเชตเชถเซเชฏเช เชเซ - AmazingApp เช เชจเซ Target UI เชชเชฐเซเชเซเชทเชฃเซ - AmazingAppUITests - เชธเซเชเซเชฐเซเชจเชถเซเช เชเซเช
เชเชเชณ, เช
เชฎเซ UI เชชเชฐเซเชเซเชทเชฃเซ เชฎเชพเชเซ เชเช เชจเชตเซเช เชฌเชฟเชฒเซเชก เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชฌเชจเชพเชตเซเช เชเซเช. XCode เชฎเชพเช, เชชเซเชฐเซเชเซเชเซเช เชซเชพเชเชฒ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ เช
เชจเซ เชฎเชพเชนเชฟเชคเซ เชตเชฟเชญเชพเช เชชเชฐ เชเชพเช. โ+โ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ เช
เชจเซ เชจเชตเซเช เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชฌเชจเชพเชตเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ XCtest. เชเซเชฏเชพเชฐเซ เชเซเชก เชธเชพเชเชจเชฟเชเชเชจเซ เชตเชพเชค เชเชตเซ เชคเซเชฏเชพเชฐเซ เชเซเชฎเซเชฌเซเชฐเชฟเชจ เชธเชพเชฅเซ เชจเซเชคเซเชฏ เชเชฐเชตเชพเชจเซเช เชเชพเชณเชตเชพ เชฎเชพเชเซ เช
เชฎเชจเซ เชญเชตเชฟเชทเซเชฏเชฎเชพเช เชเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ.
เชคเชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชเชเชพเชฎเชพเช เชเชเชพ เชคเซเชฐเชฃ เชฒเชเซเชทเซเชฏเซ เชเซ: เชฎเซเชเซเชฏ เชเชชเซเชฒเชฟเชเซเชถเชจ, เชเชเชฎ เชชเชฐเซเชเซเชทเชฃเซ (เชเซเชตเชเซ, เชคเซเช เช
เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชเซ, เชเชฐเซเช เชจเซ?) เช
เชจเซ เช
เชฎเซ เชฌเชจเชพเชตเซเชฒเชพ เชฒเชเซเชทเซเชฏเชพเชเช UI เชชเชฐเซเชเซเชทเชฃเซ.
Target AmazingApp, เชฌเชฟเชฒเซเชก เชธเซเชเชฟเชเชเซเชธ เชเซเชฌ, Code Signing Identity เชตเชฟเชญเชพเช เชชเชฐ เชเชพเช. XCtest เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชฎเชพเชเซ, iOS เชกเซเชตเชฒเชชเชฐ เชชเชธเชเชฆ เชเชฐเซ. เชเซเชก เชนเชธเซเชคเชพเชเซเชทเชฐ เชถเซเชฒเซ เชตเชฟเชญเชพเชเชฎเชพเช, เชฎเซเชจเซเชฏเซเช เชฒ เชชเชธเชเชฆ เชเชฐเซ. เช เชฎเซ เชนเชเซ เชธเซเชงเซ เชชเซเชฐเซเชตเชฟเชเชจเชฟเชเช เชชเซเชฐเซเชซเชพเชเชฒ เชเชจเชฐเซเช เชเชฐเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เช เชฎเซ เชเซเชเซเชเชธเชชเชฃเซ เชคเซเชจเชพ เชชเชฐ เชฅเซเชกเชพ เชธเชฎเชฏ เชชเชเซ เชชเชพเชเชพ เชเชตเซเชถเซเช.
Target AmazingAppUITests เชฎเชพเชเซ เช เชฎเซ เชคเซ เช เชเชฐเซเช เชเซเช, เชชเชฐเชเชคเซ เชชเซเชฐเซเชกเชเซเช เชฌเชเชกเชฒ เชเชณเชเชเชฐเซเชคเชพ เชเซเชฒเชฎเชฎเชพเช เช เชฎเซ com.company.amazingappuitest เชฆเชพเชเชฒ เชเชฐเซเช เชเซเช.
2. เชเชชเชฒ เชกเซเชตเชฒเชชเชฐ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฎเชพเช เชชเซเชฐเซเชเซเชเซเช เชธเซเช เชเชฐเชตเซ
Apple เชกเซเชตเชฒเชชเชฐ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชชเซเชทเซเช เชชเชฐ เชเชพเช, เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ, เชเชณเชเชเชฐเซเชคเชพเช เช เชจเซ เชชเซเชฐเซเชซเชพเชเชฒเซเชธ เชตเชฟเชญเชพเช เชชเชฐ เชเชพเช เช เชจเซ เชชเชเซ เชเชณเชเชเชฐเซเชคเชพ เชเชเชเชฎเชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจ IDs เชเซเชฒเชฎ เชชเชฐ เชเชพเช. AmazingAppUITests เช เชจเซ bundleID com.company.amazingappuitest เชจเชพเชฎเชจเซเช เชเช เชจเชตเซเช เชเชช ID เชฌเชจเชพเชตเซ.
เชนเชตเซ เช
เชฎเชพเชฐเซ เชชเชพเชธเซ เชเช เช
เชฒเช เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชธเชพเชฅเซ เช
เชฎเชพเชฐเชพ เชชเชฐเซเชเซเชทเชฃเซ เชชเชฐ เชธเชนเซ เชเชฐเชตเชพเชจเซ เชคเช เชเซ, เชชเชฐเชเชคเซ... เชชเชฐเซเชเซเชทเชฃ เชฎเชพเชเซ เชฌเชฟเชฒเซเชก เชเชธเซเชฎเซเชฌเชฒ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เช เชเชธเซเชฎเซเชฌเชฒ เชเชฐเชตเซ เช
เชจเซ เชเซเชธเซเช เชฐเชจเชฐเชจเซ เชเชธเซเชฎเซเชฌเชฒ เชเชฐเชตเชพเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ. เชคเชฆเชจเซเชธเชพเชฐ, เช
เชฎเชจเซ เชเช เชชเซเชฐเซเชตเชฟเชเชจเชฟเชเช เชชเซเชฐเซเชซเชพเชเชฒ เชธเชพเชฅเซ เชฌเซ เชฌเชเชกเชฒ ID เชชเชฐ เชธเชนเซ เชเชฐเชตเชพเชจเซ เชธเชฎเชธเซเชฏเชพเชจเซ เชธเชพเชฎเชจเซ เชเชฐเชตเซ เชชเชกเซ เชฐเชนเซเชฏเซ เชเซ. เชธเชฆเชจเชธเซเชฌเซ, เชคเซเชฏเชพเช เชเช เชธเชฐเชณ เช
เชจเซ เชญเชตเซเชฏ เชเชเซเชฒ เชเซ - เชตเชพเชเชฒเซเชกเชเชพเชฐเซเชก เชเชชเซเชฒเชฟเชเซเชถเชจ ID. เช
เชฎเซ เชจเชตเซ เชเชช เชเชเชกเซ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชเชฐเซเช เชเซเช, เชชเชฐเชเชคเซ เชธเซเชชเชทเซเช เชเชช เชเชเชกเซเชจเซ เชฌเชฆเชฒเซ, เชธเซเชเซเชฐเซเชจเชถเซเชเชจเซ เชเซเชฎ เชตเชพเชเชฒเซเชกเชเชพเชฐเซเชก เชเชช เชเชเชกเซ เชชเชธเชเชฆ เชเชฐเซ.
เช เชฌเชฟเชเชฆเซเช, เช
เชฎเซ developer.apple.com เชธเชพเชฅเซ เชเชพเชฎ เชชเซเชฐเซเชฃ เชเชฐเซ เชฒเซเชงเซเช เชเซ, เชชเชฐเชเชคเซ เช
เชฎเซ เชฌเซเชฐเชพเชเชเชฐ เชตเชฟเชจเซเชกเซเชจเซ เชจเชพเชจเซ เชจเชนเซเช เชเชฐเซเช. เชเชพเชฒเซ เชเชเช
เชเช เชธเชเซเชค เชตเชพเชเชเซ เชจเซเชเชงเซเชฏเซเช เชเซ เชเซ เช เชเชชเชฏเซเชเชฟเชคเชพเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เช เชฎเชจเซ เชเช เชเชพเชจเชเซ เชฐเซเชชเซเชเซเชเชฐเซ เช เชจเซ เชเชชเชฒ เชกเซเชตเชฒเชชเชฐ เชชเซเชฐเซเชเซเชฐเชพเชฎ เช เชจเซ เชเซเชฅเชฌ เชฌเชเชจเซเชจเซ เชเชเซเชธเซเชธ เชธเชพเชฅเซ เชเชเชพเชเชจเซเชเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ. เช เชฎเซ เชซเซเชฐเซเชฎเชจเซเช เชเชเชพเชเชจเซเช เชฌเชจเชพเชตเซเช เชเซเช (เชเซ เช เชเชพเชจเช เชเชตเซ เชเซเช เชตเชธเซเชคเซ เชจ เชนเซเชฏ เชคเซ) [เชเชฎเซเชเชฒ เชธเซเชฐเชเซเชทเชฟเชค], เชฎเชเชฌเซเชค เชชเชพเชธเชตเชฐเซเชก เชธเชพเชฅเซ เชเชตเซ, เชคเซเชจเซ developer.apple.com เชธเชพเชฅเซ เชฐเชเซเชธเซเชเชฐ เชเชฐเซ เช เชจเซ เชคเซเชจเซ เชชเซเชฐเซเชเซเชเซเช เชเชกเชฎเชฟเชจเชฟเชธเซเชเซเชฐเซเชเชฐ เชคเชฐเซเชเซ เชจเชฟเชฏเซเชเซเชค เชเชฐเซ. เชเชเชณ, เช เชฎเซ เชเชเชพเชเชจเซเชเชจเซ เชคเชฎเชพเชฐเซ เชเชเชชเชจเซเชจเชพ เชเซเชฅเชฌ เชฐเชฟเชชเซเชเซเชเชฐเซเชจเซ เชเชเซเชธเซเชธ เชเชชเซเช เชเซเช เช เชจเซ เช เชฎเซเชเชฟเชเช เชเชชเชฎเซเช เชเซเชตเชพ เชจเชพเชฎ เชธเชพเชฅเซ เชเช เชจเชตเซเช เชเชพเชจเชเซ เชญเชเชกเชพเชฐ เชฌเชจเชพเชตเซเช เชเซเช.
3. เชซเชพเชธเซเชเชฒเซเชจ เช เชจเซ เชฎเซเช เชฏเซเชเชฟเชฒเชฟเชเซ เชธเซเช เชเชฐเชตเซ
เชเชฐเซเชฎเชฟเชจเชฒ เชเซเชฒเซ, เชชเซเชฐเซเชเซเชเซเช เชธเชพเชฅเซ เชซเซเชฒเซเชกเชฐ เชชเชฐ เชเชพเช เช
เชจเซ เชฆเชฐเซเชถเชพเชตเซเชฒ เชชเซเชฐเชฎเชพเชฃเซ เชซเชพเชธเซเชเชฒเซเชจ เชถเชฐเซ เชเชฐเซ
$ fastlane init
เชคเชฎเชจเซ เชเชชเชฒเชฌเซเชง เชเชชเชฏเซเช เชฐเซเชชเชฐเซเชเชพเชเชเชจเซ เชชเชธเชเชฆ เชเชฐเชตเชพ เชฎเชพเชเซ เชธเชเชเซเชค เชเชชเชตเชพเชฎเชพเช เชเชตเชถเซ. เชเซเชฅเซ เชตเชฟเชเชฒเซเชช เชชเชธเชเชฆ เชเชฐเซ - เชฎเซเชจเซเชฏเซเช เชฒ เชชเซเชฐเซเชเซเชเซเช เชธเซเชเช เชช.
เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชจเชตเซ เชกเชฟเชฐเซเชเซเชเชฐเซ เชซเชพเชธเซเชเชฒเซเชจ เชเซ, เชเซเชฎเชพเช เชฌเซ เชซเชพเชเชฒเซ เชเซ - เชเชชเชซเชพเชเชฒ เช
เชจเซ เชซเชพเชธเซเชเชซเชพเชเชฒ. เชเซเชเชเชฎเชพเช, เช
เชฎเซ เชเชชเชซเชพเชเชฒเชฎเชพเช เชธเชฐเซเชตเชฟเชธ เชกเซเชเชพ เชธเซเชเซเชฐ เชเชฐเซเช เชเซเช, เช
เชจเซ เชซเชพเชธเซเชเชซเชพเชเชฒเชฎเชพเช เชจเซเชเชฐเซเช เชฒเชเซเช เชเซเช, เชเซเชจเซ เชซเชพเชธเซเชเชฒเซเชจ เชชเชฐเชฟเชญเชพเชทเชพเชฎเชพเช เชฒเซเชจ เชเชนเซเชตเชพเชฏ เชเซ. เชนเซเช เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซเชเซ เชตเชพเชเชเชตเชพเชจเซ เชญเชฒเชพเชฎเชฃ เชเชฐเซเช เชเซเช:
เชคเชฎเชพเชฐเชพ เชฎเชจเชชเชธเชเชฆ เชเซเชเซเชธเซเช เชเชกเชฟเชเชฐเชฎเชพเช 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
เช เชฎเซ เชเชฐเซเชฎเชฟเชจเชฒ เชชเชฐ เชชเชพเชเชพ เชซเชฐเซเช เชเซเช เช เชจเซ เช เชงเชฟเชเซเชค เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชฟเชเชพ เช เชจเซเชธเชพเชฐ เช เชฎเซ เชฎเซเชเชจเซ เชเซเช เชตเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเช เชเซเช.
$ fastlane match init
$ fastlane match development
เชเชเชณ, เชตเชฟเชจเชเชคเซ เชเชฐเซเชฒ เชกเซเชเชพ เชฆเชพเชเชฒ เชเชฐเซ - เชฐเซเชชเซเชเซเชเชฐเซ, เชเชเชพเชเชจเซเช, เชชเชพเชธเชตเชฐเซเชก, เชตเชเซเชฐเซ.
เชคเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ: เชเซเชฏเชพเชฐเซ เชคเชฎเซ เชชเซเชฐเชฅเชฎ เชฎเซเช เชฏเซเชเชฟเชฒเชฟเชเซ เชฒเซเชเช เชเชฐเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเชฎเชจเซ เชฐเซเชชเซเชเซเชเชฐเซเชจเซ เชกเชฟเชเซเชฐเชฟเชชเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชชเชพเชธเชตเชฐเซเชก เชฆเชพเชเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชนเซเชตเชพเชฎเชพเช เชเชตเชถเซ. เช เชชเชพเชธเชตเชฐเซเชก เชธเชพเชเชตเชตเซ เชเซเชฌ เช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ; CI เชธเชฐเซเชตเชฐ เชธเซเช เชเชฐเชคเซ เชตเชเชคเซ เช เชฎเชจเซ เชคเซเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ!
เชซเชพเชธเซเชเชฒเซเชจ เชซเซเชฒเซเชกเชฐเชฎเชพเช เชเช เชจเชตเซ เชซเชพเชเชฒ เชฆเซเชเชพเช เชเซ - เชฎเซเชเชซเชพเชเชฒ. เชคเซเชจเซ เชคเชฎเชพเชฐเชพ เชฎเชจเชชเชธเชเชฆ เชเซเชเซเชธเซเช เชเชกเชฟเชเชฐเชฎเชพเช เชเซเชฒเซ เช เชจเซ เชคเซเชจเซ เช เชฐเซเชคเซ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเซ:
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 เชฎเชพเช เชชเซเชธเซเช เชเชฐเชตเชพ เชฎเชพเชเซ, เชเชเชฒเซ เชเซ เชคเชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเชพ เชฌเชเชกเชฒ ID เชชเชฐ เชนเชธเซเชคเชพเชเซเชทเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ เชฌเชฟเชฒเซเชกเซเชธ เชชเชฐ เชนเชธเซเชคเชพเชเซเชทเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ เชฎเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเชเชคเชพ เชนเซเชต เชคเซ เช เชฎเซ เชคเซเชจเซ เชฌเชฐเชพเชฌเชฐ เช เชฐเซเชคเซ เชญเชฐเซเช เชเซเช.
เชชเชฐเชเชคเซ, เชเซเชฎ เช เชฎเชจเซ เชฏเชพเชฆ เชเซ, เช เชฎเซ เชเซเชธเซเช เชฌเชฟเชฒเซเชก เชชเชฐ เชนเชธเซเชคเชพเชเซเชทเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ เชเช เชตเชฟเชถเชฟเชทเซเช เชตเชพเชเชฒเซเชกเชเชพเชฐเซเชก ID เชฌเชจเชพเชตเซเชฏเซเช เชเซ. เชคเซเชฅเซ, เชซเชพเชธเซเชเชซเชพเชเชฒ เชเซเชฒเซ เช เชจเซ เชจเชตเซ เชฒเซเชจ เชฆเชพเชเชฒ เชเชฐเซ:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ัะพะทะดะฐะตะผ ะพัะดะตะปัะฝัะน ะฑัะฐะฝั ะดะปั development ัะตััะธัะธะบะฐัะฐ ะดะปั ะฟะพะดะฟะธัะธ ัะตััะพะฒะพะน ัะฑะพัะบะธ.
)
end
เชธเชพเชเชตเซ เช เชจเซ เชเชฐเซเชฎเชฟเชจเชฒเชฎเชพเช เชฆเชพเชเชฒ เชเชฐเซ
fastlane testing_build_for_firebase
เช เชจเซ เชเชชเชฃเซ เชเซเชเช เชเซเช เชเซ เชเซเชตเซ เชฐเซเชคเซ เชซเชพเชธเซเชเชฒเซเชจเซ เชจเชตเซเช เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฌเชจเชพเชตเซเชฏเซเช เช เชจเซ เชคเซเชจเซ เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเช เชฎเซเชเซเชฏเซเช. เชธเชฐเชธ!
XCode เชเซเชฒเซ. เชนเชตเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ Match Development com.company.* เชซเซเชฐเซเชฎเชจเซ เชเชฐเซเชฐเซ เชชเซเชฐเซเชตเชฟเชเชจเชฟเชเช เชชเซเชฐเซเชซเชพเชเชฒ เชเซ, เชเซ AmazingApp เช เชจเซ AmazingAppUITests เชฒเชเซเชทเซเชฏเซ เชฎเชพเชเซ เชชเซเชฐเซเชตเชฟเชเชจเชฟเชเช เชชเซเชฐเซเชซเชพเชเชฒ เชตเชฟเชญเชพเชเชฎเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชนเซเชตเซ เชเชตเชถเซเชฏเช เชเซ.
เชคเซ เชเชธเซเชฎเซเชฌเชฒเชฟเชเช เชชเชฐเซเชเซเชทเชฃเซ เชฎเชพเชเซ เชฒเซเชจ เชเชฎเซเชฐเชตเชพเชจเซเช เชฌเชพเชเซ เชเซ. เชเชพเชฒเซ เชเชเช
เชเชพเชฒเซ เชฎเซเชณ เชเชฆเชพเชนเชฐเชฃเชฎเชพเชเชฅเซ เชเซเชชเซ-เชชเซเชธเซเช เชเชฐเซเช เชเซเชฅเซ เชเชชเชฃเซเช เชฒเซเชจ 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 เชฎเชพเช เชซเชพเชธเซเชเชฒเซเชจ เชธเซเช เชเชฐเชตเชพ เชตเชฟเชถเซ เชธเชเชชเซเชฐเซเชฃ เชฎเชพเชนเชฟเชคเซ เชฎเชพเชเซ, เชนเซเช เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซเชเซ เชตเชพเชเชเชตเชพเชจเซ เชญเชฒเชพเชฎเชฃ เชเชฐเซเช เชเซเช
เช เชฎเชพเชฐเชพ 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 เชจเชพ เชเซเชธเซเช เชกเซเชฌเชฟเชเชจเซ เชฐเชพเชน เชเซเช เช เชจเซ เชคเชฎเชพเชฐเชพ เชเชเชพเชเชจเซเชเชฎเชพเช $300 เชชเซเชฐเชพเชชเซเชค เชเชฐเซ. เชเช เชตเชฐเซเชท เชชเชเซ, เชชเซเชฐเซเชเซเชเซเช เชเชชเชฎเซเชณเซ เชฎเชซเชค เชเซเชฐเชฟเชซ เชชเซเชฒเชพเชจเชฎเชพเช เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชฅเช เชเชถเซ, เชคเซเชฅเซ เชจเชพเชฃเชพเชเชจเซ เชธเชเชญเชตเชฟเชค เชเซเช เชตเชฟเชถเซ เชเชฟเชเชคเชพ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
เชเชพเชฒเซ เชซเชพเชฏเชฐเชฌเซเช เชชเซเชฐเซเชเซเชเซเช เชธเชพเชฅเซ เชเซเชฌ เชชเชฐ เชชเชพเชเชพ เชเชตเซเช เช เชจเซ เชคเซเชจเซ เชฌเซเชฒเซเช เชเซเชฐเชฟเชซ เชชเซเชฒเชพเชจเชฎเชพเช เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชเชฐเซเช - เชนเชตเซ เชเซ เชฎเชฐเซเชฏเชพเชฆเชพ เชเชณเชเชเชพเช เชเชพเชฏ เชคเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชเชเชเช เชเซเชเชตเชตเชพเชจเซเช เชเซ.
gcloud เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช, เช เชฎเชพเชฐเซ Firebase เชชเซเชฐเซเชเซเชเซเช เชชเชธเชเชฆ เชเชฐเซ, "เชกเชฟเชฐเซเชเซเชเชฐเซ" เชฎเซเชเซเชฏ เชฎเซเชจเซ เชเชเชเชฎ เชชเชธเชเชฆ เชเชฐเซ เช เชจเซ Cloud Testing API เช เชจเซ Cloud Tools Result API เชเชฎเซเชฐเซ.
เชชเชเซ เชฎเซเชจเซ เชเชเชเชฎ โIAM เช
เชจเซ เชตเชนเซเชตเชโ -> เชธเชฐเซเชตเชฟเชธ เชเชเชพเชเชจเซเชเซเชธ -> เชธเชฐเซเชตเชฟเชธ เชเชเชพเชเชจเซเช เชฌเชจเชพเชตเซ เชชเชฐ เชเชพเช. เช
เชฎเซ เชชเซเชฐเซเชเซเชเซเชเชจเซ เชธเชเชชเชพเชฆเชฟเชค เชเชฐเชตเชพเชจเชพ เช
เชงเชฟเชเชพเชฐเซ เชเชชเซเช เชเซเช.
JSON เชซเซเชฐเซเชฎเซเชเชฎเชพเช API เชเซ เชฌเชจเชพเชตเซ
เช
เชฎเชจเซ เชฅเซเชกเชพ เชธเชฎเชฏ เชชเชเซ เชกเชพเชเชจเชฒเซเชก เชเชฐเซเชฒ JSON เชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ, เชชเชฐเชเชคเซ เชนเชฎเชฃเชพเช เชฎเชพเชเซ เช
เชฎเซ เชเซเชธเซเช เชฒเซเชฌ เชธเซเชเช
เชชเชจเซ เชชเซเชฐเซเชฃ เชเชฃเซเชถเซเช.
5. CircleCI เชจเซ เชธเซเชฅเชพเชชเชจเชพ
เชตเชพเชเชฌเซ เชชเซเชฐเชถเซเชจ เชเชญเซ เชฅเชพเชฏ เชเซ - เชชเชพเชธเชตเชฐเซเชกเซเชธ เชธเชพเชฅเซ เชถเซเช เชเชฐเชตเซเช? เช เชฎเชพเชฐเชพ เชฌเชฟเชฒเซเชก เชฎเชถเซเชจเชจเซ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซเชจเซเช เชตเซเชฐเซเชเชฌเชฒ เชฎเชฟเชเซเชจเชฟเชเชฎ เช เชฎเชจเซ เช เชฎเชพเชฐเชพ เชชเชพเชธเชตเชฐเซเชกเซเชธ เช เชจเซ เช เชจเซเชฏ เชธเชเชตเซเชฆเชจเชถเซเชฒ เชกเซเชเชพเชจเซ เชธเซเชฐเชเซเชทเชฟเชค เชฐเซเชคเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเชถเซ. CircleCI เชชเซเชฐเซเชเซเชเซเช เชธเซเชเชฟเชเชเซเชธเชฎเชพเช, Environment Variables เชชเชธเชเชฆ เชเชฐเซ
เช
เชจเซ เชจเซเชเซเชจเชพ เชเชฒเซ เชธเซเช เชเชฐเซ:
- เชเซ: GOOGLE_APPLICATION_CREDENTIALS
เชฎเซเชฒเซเชฏ: gcloud เชธเซเชตเชพ เชเชเชพเชเชจเซเช เชเซเชจเซ json เชซเชพเชเชฒเชจเซ เชธเชพเชฎเชเซเชฐเซ - เชเซ: MATCH_PASSWORD
เชฎเซเชฒเซเชฏ: เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ เชธเชพเชฅเซ เชเซเชฅเชฌ เชฐเซเชชเซเชเซเชเชฐเซเชจเซ เชกเชฟเชเซเชฐเชฟเชชเซเช เชเชฐเชตเชพ เชฎเชพเชเซเชจเซ เชชเชพเชธเชตเชฐเซเชก - เชเซ: FASTLANE_PASSWORD
เชฎเซเชฒเซเชฏ: เชเชชเชฒ เชกเซเชตเชฒเชชเชฐ เชชเซเชฐเซเชเชฒ เชเชจเซเชซเซเชฐเชพเชธเซเชเซเชฐเชเซเชเชฐ เชเชเชพเชเชจเซเช เชชเชพเชธเชตเชฐเซเชก
เช เชฎเซ เชซเซเชฐเชซเชพเชฐเซ เชธเชพเชเชตเซเช เชเซเช, PR เชฌเชจเชพเชตเซเช เชเซเช เช เชจเซ เชคเซเชจเซ เชธเชฎเซเชเซเชทเชพ เชฎเชพเชเซ เช เชฎเชพเชฐเซ เชเซเชฎ เชฒเซเชกเชจเซ เชฎเซเชเชฒเซเช เชเซเช.
เชชเชฐเชฟเชฃเชพเชฎเซ
เช เชธเชฐเชณ เชฎเซเชจเชฟเชชเซเชฏเซเชฒเซเชถเชจเซเชธเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ, เช เชฎเชจเซ เชชเชฐเซเชเซเชทเชฃ เชธเชฎเชฏเซ เชเชชเชเชฐเชฃ เชธเซเชเซเชฐเซเชจ เชชเชฐ เชตเชฟเชกเชฟเช เชฐเซเชเซเชฐเซเชก เชเชฐเชตเชพเชจเซ เชเซเชทเชฎเชคเชพ เชธเชพเชฅเซ เชเช เชธเชพเชฐเซเช, เชธเซเชฅเชฟเชฐ เชเชพเชฐเซเชฏเชเชพเชฐเซ เชธเซเชเซเชจเซเชก เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเช. เชชเชฐเซเชเซเชทเชฃเชจเชพ เชเชฆเชพเชนเชฐเชฃเชฎเชพเช, เชฎเซเช iPhone X เชเชชเชเชฐเชฃ เชฎเซเชกเซเชฒเชจเซ เชเชฒเซเชฒเซเช เชเชฐเซเชฏเซ เชเซ, เชชเชฐเชเชคเซ เชซเชพเชฐเซเชฎ เชตเชฟเชตเชฟเชง เชฎเซเชกเซเชฒเซ เช เชจเซ iOS เชธเชเชธเซเชเชฐเชฃเซเชจเชพ เชธเชเชฏเซเชเชจเชฎเชพเชเชฅเซ เชธเชฎเซเชฆเซเชง เชชเชธเชเชฆเชเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ.
เชฌเซเชเซ เชญเชพเช เชเชจเซเชกเซเชฐเซเชเชก เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เชซเชพเชฏเชฐเชฌเซเช เชเซเชธเซเช เชฒเซเชฌเชจเชพ เชธเซเชเซเชช-เชฌเชพเชฏ-เชธเซเชเซเชช เชธเซเชเช
เชชเชจเซ เชธเชฎเชฐเซเชชเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชธเซเชฐเซเชธ: www.habr.com