เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดŽเดจเตเดฑเต† เดชเต‡เดฐเต เดฆเดฟเดฎเดฟเดคเตเดฐเดฟ, เดžเดพเตป เด•เดฎเตเดชเดจเดฟเดฏเดฟเตฝ เด’เดฐเต เดŸเต†เดธเตเดฑเตเดฑเดฑเดพเดฏเดฟ เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดฎเต†เตฝ เดธเดฏเตปเดธเต. เดคเดพเดฐเดคเดฎเตเดฏเต‡เดจ เด…เดŸเตเดคเตเดคเดฟเดŸเต†เดฏเตเดณเตเดณ เด’เดฐเต เดซเต€เดšเตเดšเตผ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดžเดพเตป เด…เดŸเตเดคเตเดคเดฟเดŸเต† เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเต โ€” เด…เดคเดพเดฏเดคเต, เดจเต‡เดฑเตเดฑเต€เดตเต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต XCUITest เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต iOS เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต.

เด‡เดคเดฟเดจเตเดฎเตเดฎเตเดชเต, เดžเดพเตป เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเดฟเดจเตเดณเตเดณ เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเต เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเต, เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเด•เตเด•เตเด‚ เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† 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 -> File -> New -> Target -> iOS Testing Bundle] เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดชเตเดคเดฟเดฏ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเด‚, เด…เดคเดฟเดจเต AmazingAppUITests เดŽเดจเตเดจ เดธเตเดตเดฏเด‚ เดตเดฟเดถเดฆเต€เด•เดฐเดฃ เดจเดพเดฎเด‚ เดจเตฝเด•เดพเด‚.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดŸเดพเตผเด—เต†เดฑเตเดฑเดฟเดจเตเดฑเต† เดฌเดฟเตฝเดกเต เดซเต‡เดธเดธเต เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เดณเตเดŸเต† เดธเดพเดจเตเดจเดฟเดงเตเดฏเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด• - AmazingApp, เด•เด‚เดชเตˆเตฝ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเตฝ - AmazingAppUITests.swift.

เดตเตเดฏเดคเตเดฏเดธเตโ€Œเดค เดฌเดฟเตฝเดกเต เด“เดชเตโ€Œเดทเดจเตเด•เตพ เดชเตเดฐเดคเตเดฏเต‡เด• เดธเตโ€Œเด•เต€เดฎเตเด•เดณเดพเดฏเดฟ เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒ เดฐเต€เดคเดฟ. เดžเด™เตเด™เดณเตเดŸเต† UI เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดธเตเด•เต€เด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต [XCode -> เด‰เตฝเดชเตเดชเดจเตเดจเด‚ -> เดธเตเด•เต€เด‚ -> เดชเตเดคเดฟเดฏ เดธเตเด•เต€เด‚] เด…เดคเดฟเดจเต เด…เดคเต‡ เดชเต‡เดฐเต เดจเตฝเด•เตเดจเตเดจเต: AmazingAppUITests.

เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดธเตเด•เต€เดฎเดฟเดจเตเดฑเต† เดฌเดฟเตฝเดกเดฟเตฝ เดชเตเดฐเดงเดพเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดฒเด•เตเดทเตเดฏเด‚ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚ - AmazingApp, Target UI เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ - AmazingAppUITests - เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเต เด•เดพเดฃเตเด•

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, UI เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดชเตเดคเดฟเดฏ เดฌเดฟเตฝเดกเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. XCode-เตฝ, เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดซเดฏเดฒเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดคเต เดตเดฟเดตเดฐ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•. "+" เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดคเต เด’เดฐเต เดชเตเดคเดฟเดฏ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต XCtest. เด•เต‹เดกเต เด’เดชเตเดชเดฟเดŸเตเดฎเตเดชเต‹เตพ เดŸเดพเด‚เดฌเต‹เดฑเดฟเดจเต‹เดŸเตŠเดชเตเดชเด‚ เดจเตƒเดคเตเดคเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด’เดดเดฟเดตเดพเด•เตเด•เดพเตป เดญเดพเดตเดฟเดฏเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเด‚.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เด•เตเดฑเดžเตเดžเดคเต เดฎเต‚เดจเตเดจเต เดŸเดพเตผเด—เต†เดฑเตเดฑเตเด•เดณเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดฃเตเดŸเต: เดชเตเดฐเดงเดพเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป, เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ (เดŽเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเดฎเตเดชเดฐเดฟ, เด…เดต เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต, เด…เดฒเตเดฒเต‡?) เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดฏเตเด เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ.

เดŸเดพเตผเด—เต†เดฑเตเดฑเต เด…เดฎเต‡เดธเดฟเด‚เด—เต เด†เดชเตเดชเต, เดฌเดฟเตฝเดกเต เดธเต†เดฑเตเดฑเดฟเด‚เด—เตเดธเต เดŸเดพเดฌเต, เด•เต‹เดกเต เดธเตˆเดจเดฟเด‚เด—เต เดเดกเดจเตเดฑเดฟเดฑเตเดฑเดฟ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•. XCtest เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดพเดฏเดฟ, iOS เดกเต†เดตเดฒเดชเตเดชเตผ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•. เด•เต‹เดกเต เดธเตˆเดจเดฟเด‚เด—เต เดธเตเดฑเตเดฑเตˆเตฝ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ, เดฎเดพเดจเตเดตเตฝ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•. เดžเด™เตเด™เตพ เด‡เดคเตเดตเดฐเต† เด’เดฐเต เดชเตเดฐเตŠเดตเดฟเดทเดจเดฟเด‚เด—เต เดชเตเดฐเตŠเดซเตˆเตฝ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด•เตเดฑเดšเตเดšเต เด•เดดเดฟเดžเตเดžเต เดžเด™เตเด™เตพ เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด‚.

Target AmazingAppUITests-เดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด…เดคเต เดคเดจเตเดจเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด‰เตฝเดชเตเดชเดจเตเดจ เดฌเดฃเตเดŸเดฟเตฝ เดเดกเดจเตเดฑเดฟเดซเดฏเตผ เด•เต‹เดณเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ com.company.amazingappuitess เดŽเดจเตเดจเต เดจเตฝเด•เตเดจเตเดจเต.

2. เด†เดชเตเดชเดฟเตพ เดกเต†เดตเดฒเดชเตเดชเตผ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเตฝ เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

Apple เดกเต†เดตเดฒเดชเตเดชเตผ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดชเต‡เดœเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•, เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ, เดเดกเดจเตเดฑเดฟเดซเดฏเดฑเตเด•เตพ & เดชเตเดฐเตŠเดซเตˆเดฒเตเด•เตพ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•, เดคเตเดŸเตผเดจเตเดจเต เดเดกเดจเตเดฑเดฟเดซเดฏเดฑเตเด•เตพ เด‡เดจเดคเตเดคเดฟเดจเตเดฑเต† เด†เดชเตเดชเต เดเดกเดฟ เด•เต‹เดณเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•. AmazingAppUITests, bundleID com.company.amazingappuitests เดŽเดจเตเดจ เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เด†เดชเตเดชเต เดเดกเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เด‡เดชเตเดชเต‹เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเดฟเตฝ เด’เดชเตเดชเดฟเดŸเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด…เดตเดธเดฐเดฎเตเดฃเตเดŸเต, เดชเด•เตเดทเต‡... เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เด’เดฐเต เดฌเดฟเตฝเดกเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดคเดจเตเดจเต† เด…เดธเด‚เดฌเดฟเตพ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดŸเต†เดธเตเดฑเตเดฑเต เดฑเดฃเตเดฃเดฑเต† เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต, เด’เดฐเต เดชเตเดฐเตŠเดตเดฟเดทเดจเดฟเด‚เด—เต เดชเตเดฐเตŠเดซเตˆเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฐเดฃเตเดŸเต เดฌเดฃเตเดŸเดฟเตฝ เดเดกเดฟเด•เตพ เด’เดชเตเดชเดฟเดŸเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดถเตเดจเด‚ เดžเด™เตเด™เตพ เด…เดญเดฟเดฎเตเด–เต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดฒเดณเดฟเดคเดตเตเด‚ เดฎเดจเต‹เดนเดฐเดตเตเดฎเดพเดฏ เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเดฎเตเดฃเตเดŸเต - เดตเตˆเตฝเดกเตเด•เดพเตผเดกเต เด†เดชเตเดชเต เดเดกเดฟ. เด’เดฐเต เดชเตเดคเดฟเดฏ เด†เดชเตเดชเต เดเดกเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเด‚ เดžเด™เตเด™เตพ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เด†เดชเตเดชเต เดเดกเดฟเด•เตเด•เต เดชเด•เดฐเด‚, เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเดฟเดฒเต† เดชเต‹เดฒเต† เดตเตˆเตฝเดกเตเด•เดพเตผเดกเต เด†เดชเตเดชเต เดเดกเดฟ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, developer.apple.com-เตฝ เดžเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ, เดชเด•เตเดทเต‡ เดžเด™เตเด™เตพ เดฌเตเดฐเต—เดธเตผ เดตเดฟเตปเดกเต‹ เดšเต†เดฑเตเดคเดพเด•เตเด•เดฟเดฒเตเดฒ. เดจเดฎเตเด•เตเด•เต เดชเต‹เด•เดพเด‚ เดซเดพเดธเตเดฑเตเดฑเตเดฒเต†เดฏเตเตป เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดธเตˆเดฑเตเดฑเต เด’เดชเตเดชเด‚ เดฎเดพเดšเตเดšเต เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเต† เด•เตเดฑเดฟเดšเตเดšเต เด•เดตเตผ เดฎเตเดคเตฝ เด•เดตเตผ เดตเดฐเต† เดตเดพเดฏเดฟเด•เตเด•เตเด•.

เดˆ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเตเดตเด•เดพเดฐเตเดฏ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเด‚ เด†เดชเตเดชเดฟเตพ เดกเต†เดตเดฒเดชเตเดชเตผ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดฒเต‡เด•เตเด•เตเด‚ เด—เดฟเดคเตเดคเดฌเตเดฌเดฟเดฒเต‡เด•เตเด•เตเด‚ เด†เด•เตโ€Œเดธเดธเต เด‰เดณเตเดณ เด’เดฐเต เด…เด•เตเด•เต—เดฃเตเดŸเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดถเตเดฐเดฆเตเดงเดฏเตเดณเตเดณ เด’เดฐเต เดตเดพเดฏเดจเด•เตเด•เดพเดฐเตป เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเต. เดซเต‹เดฎเดฟเดจเตเดฑเต† เด’เดฐเต เด…เด•เตเด•เต—เดฃเตเดŸเต เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต (เดชเต†เดŸเตเดŸเต†เดจเตเดจเต เด…เด™เตเด™เดจเต†เดฏเตŠเดจเตเดจเตเด‚ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ). [เด‡เดฎเต†เดฏเดฟเตฝ เดชเดฐเดฟเดฐเด•เตเดทเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต], เดถเด•เตเดคเดฎเดพเดฏ เด’เดฐเต เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด•เตŠเดฃเตเดŸเตเดตเดฐเดฟเด•, developer.apple.com-เตฝ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเตเด•, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเดฟเดจเต† เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเดฑเดพเดฏเดฟ เดจเดฟเดฏเดฎเดฟเด•เตเด•เตเด•. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดฎเตเดชเดจเดฟเดฏเตเดŸเต† เด—เดฟเดคเตเดคเดฌเต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เตพ เด…เด•เตเด•เต—เดฃเตเดŸเต เด†เด•เตโ€Œเดธเดธเต เดจเตฝเด•เตเด•เดฏเตเด‚ AmazingAppMatch เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดธเตเดตเด•เดพเดฐเตเดฏ เดถเต‡เด–เดฐเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

3. เดซเดพเดธเตเดฑเตเดฑเตเดฒเต†เดฏเตเดจเตเด‚ เดฎเดพเดšเตเดšเต เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด’เดฐเต เดŸเต†เตผเดฎเดฟเดจเตฝ เดคเตเดฑเดจเตเดจเต, เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเตเดณเตเดณ เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เด…เดคเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต† เดซเดพเดธเตเดฑเตเดฑเตโ€Œเดฒเต†เดฏเตโ€Œเตป เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด• เด”เดฆเตเดฏเต‹เด—เดฟเด• เดฎเดพเดจเตเดตเตฝ. เด•เดฎเดพเตปเดกเต เดจเตฝเด•เดฟเดฏ เดถเต‡เดทเด‚

$ fastlane init

เดฒเดญเตเดฏเดฎเดพเดฏ เด‰เดชเดฏเต‹เด— เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเด‚. เดจเดพเดฒเดพเดฎเดคเตเดคเต† เด“เดชเตเดทเตป เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด• - เดฎเดพเดจเตเดตเตฝ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฃเด‚.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเต เด’เดฐเต เดชเตเดคเดฟเดฏ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ เดซเดพเดธเตเดฑเตเดฑเตโ€Œเดฒเตˆเตป เด‰เดฃเตเดŸเต, เด…เดคเดฟเตฝ เดฐเดฃเตเดŸเต เดซเดฏเดฒเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต - Appfile, Fastfile. เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดธเต‡เดตเดจ เดกเดพเดฑเตเดฑ Appfile-เตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดซเดพเดธเตเดฑเตเดฑเตโ€Œเดซเตˆเดฒเดฟเตฝ เดœเต‹เดฒเดฟเด•เตพ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด‡เดคเดฟเดจเต† Fastlane เดŸเต†เตผเดฎเดฟเดจเต‹เดณเดœเดฟเดฏเดฟเตฝ เดฒเต‡เตปเดธเต เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต. เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต: เดคเดตเดฃ, ะดะฒะฐ.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดŽเดกเดฟเดฑเตเดฑเดฑเดฟเตฝ 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 เดธเต†เตผเดตเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต!

เดซเดพเดธเตเดฑเตเดฑเตโ€Œเดฒเต†เดฏเตโ€Œเตป เดซเต‹เตพเดกเดฑเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดซเดฏเตฝ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต - 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-เตฝ เดชเต‹เดธเตโ€Œเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ, เด…เดคเดพเดฏเดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดฌเดฃเตเดŸเดฟเตฝ เดเดกเดฟเดฏเดฟเตฝ เด’เดชเตเดชเดฟเดŸเตเดจเตเดจเดคเดฟเดจเต, เดฌเดฟเตฝเดกเตเด•เตพ เดธเตˆเตป เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เดฎเดพเดšเตเดšเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพ เด‡เดคเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเด•เตเดทเต‡, เดžเด™เตเด™เตพ เด“เตผเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดŸเต†เดธเตเดฑเตเดฑเต เดฌเดฟเตฝเดกเดฟเตฝ เด’เดชเตเดชเดฟเดŸเดพเตป เดžเด™เตเด™เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเตˆเตฝเดกเตเด•เดพเตผเดกเต เดเดกเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต. เด…เดคเดฟเดจเดพเตฝ, Fastfile เดคเตเดฑเดจเตเดจเต เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดพเดค เดจเตฝเด•เตเด•:

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 เดŸเดพเตผเด—เต†เดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เดชเตเดฐเตŠเดตเดฟเดทเดจเดฟเด‚เด—เต เดชเตเดฐเตŠเดซเตˆเตฝ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เด…เดธเด‚เดฌเตเดฒเดฟเด‚เด—เต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดฒเต†เดฏเดฟเตป เดšเต‡เตผเด•เตเด•เดพเตป เด‡เดคเต เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดชเต‹เด•เดพเด‚ เดธเด‚เดญเดฐเดฃเดฟเดฏเดพเดฃเต เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเดฒเต‡เด•เตเด•เต เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดชเดพเดฒเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจ เดซเดพเดธเตเดฑเตเดฑเตเดฒเต†เดฏเตเดจเดฟเดจเดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต.

เด’เดฑเดฟเดœเดฟเดจเตฝ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด•เต‹เดชเตเดชเดฟ-เดชเต‡เดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚, เด…เด™เตเด™เดจเต† เดจเดฎเตเดฎเตเดŸเต† 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

เดธเตผเด•เตเด•เดฟเตพเดธเดฟเดเดฏเดฟเตฝ เดซเดพเดธเตเดฑเตเดฑเตเดฒเต†เดฏเดฟเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพเด•เตเด•เต, เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดคเดตเดฃ, ะดะฒะฐ.

เดžเด™เตเด™เดณเตเดŸเต† 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 เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเตเดชเด•เตเดทเต‡ เด‡เดฒเตเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏ เดตเตเดฏเดคเตเดฏเดพเดธเดฎเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดตเตผเดทเดคเตเดคเต† เดธเต—เดœเดจเตเดฏ เด‰เดชเดฏเต‹เด—เดคเตเดคเต‹เดŸเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เดคเดฃเตเดคเตเดค, เดถเดฐเดฟเดฏเดฒเตเดฒเต‡?)

เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด…เด•เตเด•เต—เดฃเตเดŸเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเต (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚, เด…เดคเต เดชเตเดฐเดถเตเดจเดฎเดฒเตเดฒ), เด’เดชเตเดชเด‚ เดชเต‹เด•เตเด• เดซเดฏเตผเดฌเต‡เดธเต เด•เตบเดธเต‹เตพ เดชเต‡เดœเต. AmazingAppUITests เดŽเดจเตเดจ เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•.

เด‡เดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต: lane firebase_test_lab_ios_xctest เดฒเต† Fastfile-เดฒเต† เดฎเตเดฎเตเดชเดคเตเดคเต† เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, gcp_project เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดจเดพเดฎเดตเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเดฃเด‚.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดžเด™เตเด™เตพเด•เตเด•เต เดจเดจเตเดจเดพเดฏเดฟ เดฏเต‹เดœเดฟเด•เตเด•เตเดจเตเดจเต.

เดŸเดพเดฌเต เด…เดŸเดฏเตเด•เตเด•เดฐเตเดคเต, เด…เดคเต‡ เด…เด•เตเด•เต—เดฃเตเดŸเดฟเตฝ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเตเด• เด—เตเดฒเต—เดกเต - เดซเดฏเตผเดฌเต‡เดธเตเดฎเดพเดฏเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดœเดฟเด•เตเดฒเต—เดกเต เด•เตบเดธเต‹เตพ เด‡เดจเตเดฑเตผเดซเต‡เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณเดคเดฟเดจเดพเตฝ เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เด…เดณเดตเดพเดฃเต.

เด—เต‚เด—เดฟเตพ เด’เดฐเต เดตเตผเดทเดคเตเดคเต‡เด•เตเด•เต $300 เดจเตฝเด•เตเดจเตเดจเต, เด‡เดคเต เด“เดŸเตเดŸเต‹เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดตเตผเดทเดคเตเดคเต† เดธเต—เดœเดจเตเดฏ เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต. เดžเด™เตเด™เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเต‡เดฏเตโ€Œเดฎเต†เดจเตเดฑเต เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเตฝเด•เตเด•เดฏเตเด‚ $1 เดจเตเดฑเต† เดŸเต†เดธเตเดฑเตเดฑเต เดกเต†เดฌเดฟเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เด•เตเด•เต—เดฃเตเดŸเดฟเดฒเต‡เด•เตเด•เต $300 เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•. เด’เดฐเต เดตเตผเดทเดคเตเดคเดฟเดจเตเดถเต‡เดทเด‚, เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตเดตเดฏเดฎเต‡เดต เด’เดฐเต เดธเต—เดœเดจเตเดฏ เดคเดพเดฐเดฟเดซเต เดชเตเดฒเดพเดจเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดชเตเดชเต†เดŸเตเด‚, เด…เดคเดฟเดจเดพเตฝ เดธเดพเดงเตเดฏเดฎเดพเดฏ เดชเดฃเดจเดทเตเดŸเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.

เดจเดฎเตเด•เตเด•เต เดซเดฏเตผเดฌเต‡เดธเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเดณเตเดณ เดŸเดพเดฌเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เดพเด‚, เด…เดคเต เดฌเตเดฒเต‡เดธเต เดคเดพเดฐเดฟเดซเต เดชเตเดฒเดพเดจเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดพเด‚ - เด‡เดชเตเดชเต‹เตพ เดชเดฐเดฟเดงเดฟ เด•เดตเดฟเดžเตเดžเดพเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเตฝเด•เดพเดจเตเดฃเตเดŸเต.

เดœเดฟเด•เตเดฒเต—เดกเต เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เดซเดฏเตผเดฌเต‡เดธเต เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•, "เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ" เดชเตเดฐเดงเดพเดจ เดฎเต†เดจเต เด‡เดจเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เด•เตเดฒเต—เดกเต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดŽเดชเดฟเดเดฏเตเด‚ เด•เตเดฒเต—เดกเต เดŸเต‚เตพเดธเต เดฑเดฟเดธเตพเดŸเตเดŸเต เดŽเดชเดฟเดเดฏเตเด‚ เดšเต‡เตผเด•เตเด•เตเด•.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดคเตเดŸเตผเดจเตเดจเต "IAM เด†เตปเดกเต เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดทเตป" เดŽเดจเตเดจ เดฎเต†เดจเต เด‡เดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• -> เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพ -> เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด…เดตเด•เดพเดถเด‚ เดžเด™เตเด™เตพ เดจเตฝเด•เตเดจเตเดจเต.

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

JSON เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เด’เดฐเต API เด•เต€ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต

เดžเด™เตเด™เตพเด•เตเด•เต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตโ€Œเดค JSON เด•เตเดฑเดšเตเดšเต เด•เดดเดฟเดžเตเดžเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเด‚, เดŽเดจเตเดจเดพเตฝ เด‡เดชเตเดชเต‹เตพ เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเต เดธเดœเตเดœเต€เด•เดฐเดฃเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏเดคเดพเดฏเดฟ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด‚.

5. CircleCI เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดจเตเดฏเดพเดฏเดฎเดพเดฏ เด’เดฐเต เดšเต‹เดฆเตเดฏเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต - เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเดฃเด‚? เดžเด™เตเด™เดณเตเดŸเต† เดฌเดฟเตฝเดกเต เดฎเต†เดทเต€เดจเตเดฑเต† เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เดณเตเด‚ เดฎเดฑเตเดฑเต เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต เดกเดพเดฑเตเดฑเดฏเตเด‚ เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดพเดฏเดฟ เดธเด‚เดญเดฐเดฟเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚. เดธเตผเด•เตเด•เดฟเตพเดธเดฟเด เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ, เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•

เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเตฝ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดŸเตเดฐเตเดฎเต†เดจเตเดฑเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดญเดพเด—เด‚ 1: iOS เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต
เด•เต‚เดŸเดพเดคเต† เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•:

  • เด•เต€: GOOGLE_APPLICATION_CREDENTIALS
    เดฎเต‚เดฒเตเดฏเด‚: gCloud เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เด•เต€เดฏเตเดŸเต† json เดซเดฏเดฒเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚
  • เด•เต€: MATCH_PASSWORD
    เดฎเต‚เดฒเตเดฏเด‚: เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด—เดฟเดคเตเดคเดฌเต เดถเต‡เด–เดฐเด‚ เดกเต€เด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเดพเดธเตโ€Œเดตเต‡เดกเต
  • เด•เต€: FASTLANE_PASSWORD
    เดฎเต‚เดฒเตเดฏเด‚: เด†เดชเตเดชเดฟเตพ เดกเต†เดตเดฒเดชเตเดชเตผ เดชเต‹เตผเดŸเตเดŸเตฝ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด…เด•เตเด•เต—เดฃเตเดŸเต เดชเดพเดธเตโ€Œเดตเต‡เดกเต

เดžเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต PR เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฒเต‹เด•เดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เดณเตเดŸเต† เดŸเต€เด‚ เดฒเต€เดกเดฟเดจเต เด…เดฏเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดซเดฒเด™เตเด™เตพ

เดˆ เดฒเดณเดฟเดคเดฎเดพเดฏ เด•เตƒเดคเตเดฐเดฟเดฎเดคเตเดตเด™เตเด™เดณเตเดŸเต† เดซเดฒเดฎเดพเดฏเดฟ, เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดธเดฎเดฏเดคเตเดคเต เด‰เดชเด•เดฐเดฃ เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เดตเต€เดกเดฟเดฏเต‹ เดฑเต†เด•เตเด•เต‹เตผเดกเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเตเดณเตเดณ เด’เดฐเต เดจเดฒเตเดฒ เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณ เดตเตผเด•เตเด•เดฟเด‚เด—เต เดธเตเดฑเตเดฑเดพเตปเดกเต เดžเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเดšเตเดšเต. เดŸเต†เดธเตเดฑเตเดฑเต เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดžเดพเตป iPhone X เด‰เดชเด•เดฐเดฃ เดฎเต‹เดกเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟ, เดŽเดจเตเดจเดพเตฝ เดซเดพเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดค เดฎเต‹เดกเดฒเตเด•เดณเตเดŸเต†เดฏเตเด‚ iOS เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเดฎเตเดชเดจเตเดจเดฎเดพเดฏ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเต เดจเตฝเด•เตเดจเตเดจเต.

เดฐเดฃเตเดŸเดพเด‚ เดญเดพเด—เด‚ เด’เดฐเต เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดซเดฏเตผเดฌเต‡เดธเต เดŸเต†เดธเตเดฑเตเดฑเต เดฒเดพเดฌเดฟเดจเตเดฑเต† เด˜เดŸเตเดŸเด‚ เด˜เดŸเตเดŸเดฎเดพเดฏเตเดณเตเดณ เดธเดœเตเดœเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดจเต€เด•เตเด•เดฟเดตเดฏเตเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•