เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจฎเฉ‡เจฐเจพ เจจเจพเจฎ เจฆเจฟเจฎเจฟเจคเจฐเฉ€ เจนเฉˆ, เจฎเฉˆเจ‚ เจ•เฉฐเจชเจจเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸเจฐ เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจเจฎเจˆเจเจฒ เจธเจพเจ‡เฉฐเจธ. เจ•เจพเจซเจผเฉ€ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจฎเฉเจ•เจพเจฌเจฒเจคเจจ เจนเจพเจฒเฉ€เจ† เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เฉ€เจคเจพ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ โ€” เจ…เจฐเจฅเจพเจค, เจจเฉ‡เจŸเจฟเจต เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจซเจฐเฉ‡เจฎเจตเจฐเจ• 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: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจฌเจฃเจพเจ เจ—เจ เจŸเฉ€เจšเฉ‡ เจฆเฉ‡ เจฌเจฟเจฒเจก เจซเฉ‡เจœเจผ เจธเฉˆเจ•เจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ“ เจ…เจคเฉ‡ เจ•เฉฐเจชเจพเจˆเจฒ เจธเจฐเฉ‹เจคเจพเจ‚ - AmazingAppUITests.swift เจตเจฟเฉฑเจš เจŸเจพเจฐเจ—เฉ‡เจŸ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ - AmazingApp เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹เฅค

เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจ…เจญเจฟเจ†เจธ เจตเฉฑเจ–-เจตเฉฑเจ– เจฌเจฟเจฒเจก เจตเจฟเจ•เจฒเจชเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ€เจ†เจ‚ เจธเจ•เฉ€เจฎเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฑเจ– เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ UI เจŸเฉˆเจธเจŸเจพเจ‚ [XCode -> เจ‰เจคเจชเจพเจฆ -> เจธเจ•เฉ€เจฎ -> เจจเจตเฉ€เจ‚ เจธเจ•เฉ€เจฎ] เจฒเจˆ เจ‡เฉฑเจ• เจธเจ•เฉ€เจฎ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‰เจนเฉ€ เจจเจพเจฎ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚: AmazingAppUITestsเฅค

เจฌเจฃเจพเจˆ เจ—เจˆ เจธเจ•เฉ€เจฎ เจฆเฉ‡ เจฌเจฟเจฒเจก เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ– เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเจพ เจŸเฉ€เจšเจพ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ - AmazingApp เจ…เจคเฉ‡ Target UI เจŸเฉˆเจธเจŸ - AmazingAppUITests - เจธเจ•เฉเจฐเฉ€เจจเจธเจผเฉŒเจŸ เจฆเฉ‡เจ–เฉ‹

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจ…เฉฑเจ—เฉ‡, เจ…เจธเฉ€เจ‚ UI เจŸเฉˆเจธเจŸเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจฌเจฟเจฒเจก เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค XCode เจตเจฟเฉฑเจš, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเจพเจˆเจฒ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเฉˆเจ•เจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ“เฅค โ€œ+โ€ เจ‰เฉฑเจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจฌเจฃเจพเจ“, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ XCtestเฅค เจธเจพเจจเฉ‚เฉฐ เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€ เจคเจพเจ‚ เจ•เจฟ เจœเจฆเฉ‹เจ‚ เจ‡เจน เจ•เฉ‹เจก เจธเจพเจˆเจจเจฟเฉฐเจ— เจฆเฉ€ เจ—เฉฑเจฒ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจคเจพเจ‚ เจกเฉฑเจฌเฉ‚ เจจเจพเจฒ เจจเฉฑเจšเจฃ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆเฅค

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจคเฉเจนเจพเจกเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจคเจฟเฉฐเจจ เจŸเฉ€เจšเฉ‡ เจนเจจ: เจฎเฉเฉฑเจ– เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฏเฉ‚เจจเจฟเจŸ เจŸเฉˆเจธเจŸ (เจ†เจ–เจผเจฐเจ•เจพเจฐ, เจ‰เจน เจฎเฉŒเจœเฉ‚เจฆ เจนเจจ, เจ เฉ€เจ•?) เจ…เจคเฉ‡ เจธเจพเจกเฉ‡ เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ เจ—เจ เจŸเจพเจฐเจ—เฉ‡เจŸ UI เจŸเฉˆเจธเจŸเฅค

เจŸเจพเจฐเจ—เฉ‡เจŸ เจ…เจฎเฉ‡เจœเจผเจฟเฉฐเจ— เจเจช, เจฌเจฟเจฒเจก เจธเฉˆเจŸเจฟเฉฐเจ—เจœเจผ เจŸเฉˆเจฌ, เจ•เฉ‹เจก เจธเจพเจˆเจจเจฟเฉฐเจ— เจ†เจˆเจกเฉˆเจ‚เจŸเจฟเจŸเฉ€ เจธเฉˆเจ•เจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ“เฅค XCtest เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ, iOS เจกเจฟเจตเฉˆเจฒเจชเจฐ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเฉ‹เฅค เจ•เฉ‹เจก เจธเจพเจˆเจจเจฟเฉฐเจ— เจธเจŸเจพเจˆเจฒ เจธเฉˆเจ•เจธเจผเจจ เจตเจฟเฉฑเจš, เจฎเฉˆเจจเฉ‚เจ…เจฒ เจšเฉเจฃเฉ‹เฅค เจ…เจธเฉ€เจ‚ เจ…เจœเฉ‡ เจคเฉฑเจ• เจ•เฉ‹เจˆ เจชเฉเจฐเฉ‹เจตเจฟเจœเจผเจจเจฟเฉฐเจ— เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจจเจนเฉ€เจ‚ เจฌเจฃเจพเจ‡เจ† เจนเฉˆ, เจชเจฐ เจ…เจธเฉ€เจ‚ เจจเจฟเจธเจผเจšเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจฅเฉ‹เฉœเฉเจนเฉ€ เจฆเฉ‡เจฐ เจฌเจพเจ…เจฆ เจ‡เจธ 'เจคเฉ‡ เจตเจพเจชเจธ เจ†เจตเจพเจ‚เจ—เฉ‡เฅค

Target AmazingAppUITests เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจนเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจชเจฐ เจ‰เจคเจชเจพเจฆ เจฌเฉฐเจกเจฒ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจ•เจพเจฒเจฎ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ com.company.amazingappuitests เจฆเจพเจ–เจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

2. เจเจชเจฒ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ

เจเจชเจฒ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจชเฉ‡เจœ 'เจคเฉ‡ เจœเจพเจ“, เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ, เจ†เจˆเจกเฉˆเจ‚เจŸเฉ€เจซเจพเจ‡เจฐ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจธเฉˆเจ•เจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ“ เจ…เจคเฉ‡ เจซเจฟเจฐ เจ†เจˆเจกเฉˆเจ‚เจŸเฉ€เจซเจพเจ‡เจฐ เจ†เจˆเจŸเจฎ เจฆเฉ‡ เจเจช เจ†เจˆเจกเฉ€ เจ•เจพเจฒเจฎ 'เจคเฉ‡ เจœเจพเจ“เฅค AmazingAppUITests เจ…เจคเฉ‡ bundleID com.company.amazingappuitest เจจเจพเจฎเจ• เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจเจช เจ†เจˆเจกเฉ€ เจฌเจฃเจพเจ“เฅค

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจนเฉเจฃ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเฉ‡ เจจเจพเจฒ เจ†เจชเจฃเฉ‡ เจŸเฉˆเจธเจŸเจพเจ‚ 'เจคเฉ‡ เจฆเจธเจคเจ–เจค เจ•เจฐเจจ เจฆเจพ เจฎเฉŒเจ•เจพ เจนเฉˆ, เจชเจฐ... เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจฒเจˆ เจ‡เฉฑเจ• เจฌเจฟเจฒเจก เจจเฉ‚เฉฐ เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ–เฉเจฆ เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจŸเฉˆเจธเจŸ เจฐเจจเจฐ เจจเฉ‚เฉฐ เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เจฐเจจเจพ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค เจ‡เจธ เจ…เจจเฉเจธเจพเจฐ, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจตเจฟเจœเจผเจจเจฟเฉฐเจ— เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจฆเฉ‡ เจจเจพเจฒ เจฆเฉ‹ เจฌเฉฐเจกเจฒ เจ†เจˆเจกเฉ€ 'เจคเฉ‡ เจฆเจธเจคเจ–เจค เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเฉˆ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจธเจผเจพเจจเจฆเจพเจฐ เจนเฉฑเจฒ เจนเฉˆ - เจตเจพเจˆเจฒเจกเจ•เจพเจฐเจก เจเจช เจ†เจˆ.เจกเฉ€. เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจเจช เจ†เจˆเจกเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจชเจฐ เจธเจชเจธเจผเจŸ เจเจช เจ†เจˆเจกเฉ€ เจฆเฉ€ เจฌเจœเจพเจ, เจธเจ•เฉเจฐเฉ€เจจเจธเจผเจพเจŸ เจตเจพเจ‚เจ— เจตเจพเจˆเจฒเจกเจ•เจพเจฐเจก เจเจช เจ†เจˆเจกเฉ€ เจšเฉเจฃเฉ‹เฅค

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจ‡เจธ เจธเจฎเฉ‡เจ‚, เจ…เจธเฉ€เจ‚ developer.apple.com เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐ เจฒเจฟเจ† เจนเฉˆ, เจชเจฐ เจ…เจธเฉ€เจ‚ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฐเจกเฉ‹ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจšเจฒเฉ‹ เจšเจฒเฉ€เจ เจซเจพเจธเจŸเจฒเฉ‡เจจ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเฉ€ เจธเจพเจˆเจŸ เจ…เจคเฉ‡ เจ•เจตเจฐ เจคเฉ‹เจ‚ เจ•เจตเจฐ เจคเฉฑเจ• เจฎเฉˆเจš เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฌเจพเจฐเฉ‡ เจชเฉœเฉเจนเฉ‹เฅค

เจ‡เฉฑเจ• เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจตเจพเจฒเฉ‡ เจชเจพเจ เจ• เจจเฉ‡ เจฆเฉ‡เจ–เจฟเจ† เจ•เจฟ เจ‡เจธ เจธเจนเฉ‚เจฒเจค เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจ…เจคเฉ‡ เจเจชเจฒ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ…เจคเฉ‡ เจ—เจฟเจฅเจฌ เจฆเฉ‹เจตเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจตเจพเจฒเฉ‡ เจ–เจพเจคเฉ‡ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ…เจธเฉ€เจ‚ (เจœเฉ‡ เจ…เจšเจพเจจเจ• เจ…เจœเจฟเจนเฉ€ เจ•เฉ‹เจˆ เจšเฉ€เจœเจผ เจจเจพ เจนเฉ‹เจตเฉ‡) เจซเจพเจฐเจฎ เจฆเจพ เจ–เจพเจคเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ [เจˆเจฎเฉ‡เจฒ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค], เจ‡เฉฑเจ• เจฎเจœเจผเจฌเฉ‚เจค โ€‹โ€‹เจชเจพเจธเจตเจฐเจก เจฒเฉˆ เจ•เฉ‡ เจ†เจ“, เจ‡เจธเจจเฉ‚เฉฐ developer.apple.com เจจเจพเจฒ เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเฉ‹, เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจชเฉเจฐเจธเจผเจพเจธเจ• เจตเจœเฉ‹เจ‚ เจจเจฟเจฏเฉเจ•เจค เจ•เจฐเฉ‹เฅค เจ…เฉฑเจ—เฉ‡, เจ…เจธเฉ€เจ‚ เจ–เจพเจคเฉ‡ เจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ€ เจ•เฉฐเจชเจจเฉ€ เจฆเฉ‡ เจ—เจฟเจฅเจฌ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ AmazingAppMatch เจตเจฐเจ—เฉ‡ เจจเจพเจฎ เจจเจพเจฒ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค

3. เจซเจพเจธเจŸเจฒเฉ‡เจจ เจ…เจคเฉ‡ เจฎเฉˆเจš เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ

เจ‡เฉฑเจ• เจŸเจฐเจฎเฉ€เจจเจฒ เจ–เฉ‹เจฒเฉเจนเฉ‹, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจพเจฒเฉ‡ เจซเฉ‹เจฒเจกเจฐ 'เจคเฉ‡ เจœเจพเจ“ เจ…เจคเฉ‡ เจซเจพเจธเจŸเจฒเฉ‡เจจ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ‹ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฆเจฐเจธเจพเจ เจ—เจ เจนเจจ เจ…เจงเจฟเจ•เจพเจฐเจค เจฎเฉˆเจจเฉ‚เจ…เจฒ. เจ•เจฎเจพเจ‚เจก เจฆเจพเจ–เจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ

$ fastlane init

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจชเจฒเจฌเจง เจตเจฐเจคเฉ‹เจ‚ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเจนเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจšเฉŒเจฅเจพ เจตเจฟเจ•เจฒเจช เจšเฉเจฃเฉ‹ - เจฎเฉˆเจจเฉ‚เจ…เจฒ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเฉˆเฉฑเจŸเจ…เฉฑเจชเฅค

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจซเจพเจธเจŸเจฒเฉ‡เจจ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจฆเฉ‹ เจซเจพเจˆเจฒเจพเจ‚ เจนเจจ - เจเจชเจซเจพเจˆเจฒ เจ…เจคเฉ‡ เจซเจพเจธเจŸเจซเจพเจˆเจฒเฅค เจธเฉฐเจ–เฉ‡เจช เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจเจชเจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเฉ‡เจตเจพ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจซเจพเจธเจŸเจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจจเฉŒเจ•เจฐเฉ€เจ†เจ‚ เจฒเจฟเจ–เจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจธเจจเฉ‚เฉฐ เจซเจพเจธเจŸเจฒเฉ‡เจจ เจธเจผเจฌเจฆเจพเจตเจฒเฉ€ เจตเจฟเฉฑเจš เจฒเฉ‡เจจ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจ…เจงเจฟเจ•เจพเจฐเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚: เจตเจพเจฐ, ะดะฒะฐ.

เจเจชเจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจฎเจจเจชเจธเฉฐเจฆ เจŸเฉˆเจ•เจธเจŸ เจเจกเฉ€เจŸเจฐ เจตเจฟเฉฑเจš เจ–เฉ‹เจฒเฉเจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจซเจพเจฐเจฎ เจตเจฟเฉฑเจš เจฒเจฟเจ†เจ“:

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

เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฌเจฟเจฒเจ•เฉเจฒ เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจญเจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจ•เฉเจฐเฉˆเจธเจผเจฒเจพเจˆเจŸเจฟเจ•เจธ เจ…เจคเฉ‡/เจœเจพเจ‚ เจเจชเจธเจŸเฉ‹เจฐ เจตเจฟเฉฑเจš เจชเฉ‹เจธเจŸ เจ•เจฐเจจ เจฒเจˆ เจฌเจฟเจฒเจกเจพเจ‚ 'เจคเฉ‡ เจฆเจธเจคเจ–เจค เจ•เจฐเจจ เจฒเจˆ เจฎเฉˆเจš เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚, เจฏเจพเจจเฉ€ เจคเฉเจนเจพเจกเฉ€ เจ…เจฐเจœเจผเฉ€ เจฆเฉ‡ เจฌเฉฐเจกเจฒ 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 เจ–เฉ‹เจฒเฉเจนเฉ‹เฅค เจนเฉเจฃ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจซเจพเจฐเจฎ เจฎเฉˆเจš เจกเจฟเจตเฉˆเจฒเจชเจฎเฉˆเจ‚เจŸ com.com

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจ‡เจน เจ…เจธเฉˆเจ‚เจฌเจฒเจฟเฉฐเจ— เจŸเฉˆเจธเจŸเจพเจ‚ เจฒเจˆ เจฒเฉ‡เจจ เจœเฉ‹เฉœเจจเจพ เจฌเจพเจ•เฉ€ เจนเฉˆ. เจšเจฒเฉ‹ เจšเจฒเฉ€เจ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจซเจพเจธเจŸเจฒเฉ‡เจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจœเฉ‹ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจจเจฟเจฐเจฏเจพเจค เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจ†เจ‰ เจ…เจธเจฒเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจคเฉ‹เจ‚ เจ•เจพเจชเฉ€-เจชเฉ‡เจธเจŸ เจ•เจฐเฉ€เจ เจคเจพเจ‚ เจ•เจฟ เจธเจพเจกเฉ€ เจฒเฉ‡เจจ เจŸเฉˆเจธเจŸเจฟเฉฐเจ—_เจฌเจฟเจฒเจก_เจซเฉ‹เจฐ_เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡:


 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. เจธเจพเจกเฉ‡ เจŸเฉˆเจธเจŸ เจฌเฉˆเจ‚เจš เจฌเจพเจฐเฉ‡ เจ•เฉ€? เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจ†เจ‰ เจนเฉ‡เจ เจพเจ‚ เจœเจพเจฃเฉ€เจ เจ•เจฟ เจฒเฉ‡เจ– เจ•เจฟเจธ เจฒเจˆ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค

เจธเจผเจพเจ‡เจฆ เจคเฉเจนเจพเจกเฉ€ เจเจช เจ‡เฉฑเจ• เจฎเฉเจซเจค เจฏเฉ‹เจœเจจเจพ 'เจคเฉ‡ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจœเจพเจ‚ เจธเจผเจพเจ‡เจฆ เจฌเจฟเจฒเจ•เฉเจฒ เจจเจนเฉ€เจ‚เฅค เจ‡เฉฑเจฅเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจ•เฉ‹เจˆ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ…เฉฐเจคเจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจฒเฉ‹เฉœเจพเจ‚ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจพเจฒ เจฆเฉ€ เจฎเฉเจซเจค เจตเจฐเจคเฉ‹เจ‚ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ (เจ เฉฐเจขเฉ‡, เจ เฉ€เจ•?)

เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจ–เจพเจคเฉ‡ (เจœเจพเจ‚ เจ•เฉ‹เจˆ เจนเฉ‹เจฐ, เจ‡เจธ เจจเจพเจฒ เจ•เฉ‹เจˆ เจซเจผเจฐเจ• เจจเจนเฉ€เจ‚ เจชเฉˆเจ‚เจฆเจพ) เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจ•เฉฐเจธเฉ‹เจฒ เจชเฉฐเจจเจพ. AmazingAppUITests เจจเจพเจฎ เจฆเจพ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ“เฅค

เจ‡เจน เจ•เจฐเจจ เจฒเจˆ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ: Fastfile in lane firebase_test_lab_ios_xctest เจตเจฟเฉฑเจš เจชเจฟเจ›เจฒเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš gcp_project เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเจพเจฎ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเจพ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจกเจฟเจซเฉŒเจฒเจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจธเจพเจกเฉ‡ เจฒเจˆ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเจจ.

เจŸเฉˆเจฌ เจจเฉ‚เฉฐ เจฌเฉฐเจฆ เจจเจพ เจ•เจฐเฉ‹, เจ‰เจธเฉ‡ เจ–เจพเจคเฉ‡ เจฆเฉ‡ เจคเจนเจฟเจค เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเฉ‹ GCloud - เจ‡เจน เจ‡เฉฑเจ• เจœเจผเจฐเฉ‚เจฐเฉ€ เจ‰เจชเจพเจ… เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจจเจพเจฒ เจธเฉฐเจšเจพเจฐ gcloud เจ•เฉฐเจธเฉ‹เจฒ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

Google เจ‡เฉฑเจ• เจธเจพเจฒ เจฒเจˆ $300 เจฆเฉ‡ เจฐเจฟเจนเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ†เจŸเฉ‹เจŸเฉˆเจธเจŸ เจ•เจฐเจจ เจฆเฉ‡ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš เจธเฉ‡เจตเจพ เจฆเฉ€ เจฎเฉเจซเจค เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจพเจฒ เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจกเฉ€ เจญเฉเจ—เจคเจพเจจ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเจฐเจœ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, $1 เจฆเฉ‡ เจŸเฉˆเจธเจŸ เจกเฉˆเจฌเจฟเจŸ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจ–เจพเจคเฉ‡ เจตเจฟเฉฑเจš $300 เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เฉฑเจ• เจธเจพเจฒ เจฌเจพเจ…เจฆ, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ†เจชเจฃเฉ‡ เจ†เจช เจ‡เฉฑเจ• เจฎเฉเจซเจค เจŸเฉˆเจฐเจฟเจซ เจชเจฒเจพเจจ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพ, เจ‡เจธเจฒเจˆ เจชเฉˆเจธเฉ‡ เจฆเฉ‡ เจธเฉฐเจญเจพเจตเฉ€ เจจเฉเจ•เจธเจพเจจ เจฌเจพเจฐเฉ‡ เจšเจฟเฉฐเจคเจพ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจšเจฒเฉ‹ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจจเจพเจฒ เจŸเฉˆเจฌ 'เจคเฉ‡ เจตเจพเจชเจธ เจ†เจ“ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฌเจฒเฉ‡เจœเจผ เจŸเฉˆเจฐเจฟเจซ เจชเจฒเจพเจจ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเฉ€เจ - เจนเฉเจฃ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจญเฉเจ—เจคเจพเจจ เจ•เจฐเจจ เจฒเจˆ เจ•เฉเจ เจนเฉˆ เจœเฉ‡เจ•เจฐ เจธเฉ€เจฎเจพ เจตเฉฑเจง เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

gcloud เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเจฟเฉฑเจš, เจธเจพเจกเฉ‡ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจšเฉเจฃเฉ‹, โ€œเจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€โ€ เจฎเฉเฉฑเจ– เจฎเฉ€เจจเฉ‚ เจ†เจˆเจŸเจฎ เจจเฉ‚เฉฐ เจšเฉเจฃเฉ‹ เจ…เจคเฉ‡ เจ•เจฒเจพเจŠเจก เจŸเฉˆเจธเจŸเจฟเฉฐเจ— API เจ…เจคเฉ‡ เจ•เจฒเจพเจŠเจก เจŸเฉ‚เจฒเจœเจผ เจจเจคเฉ€เจœเจพ API เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹เฅค

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจซเจฟเจฐ เจฎเฉ€เจจเฉ‚ เจ†เจˆเจŸเจฎ "IAM เจ…เจคเฉ‡ เจชเฉเจฐเจธเจผเจพเจธเจจ" -> เจธเฉ‡เจตเจพ เจ–เจพเจคเฉ‡ -> เจธเฉ‡เจตเจพ เจ–เจพเจคเจพ เจฌเจฃเจพเจ“ 'เจคเฉ‡ เจœเจพเจ“เฅค เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

JSON เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• API เจ•เฉเฉฐเจœเฉ€ เจฌเจฃเจพเจ“

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจธเจพเจจเฉ‚เฉฐ เจฅเฉ‹เฉœเฉ€ เจฆเฉ‡เจฐ เจฌเจพเจ…เจฆ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ JSON เจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€, เจชเจฐ เจซเจฟเจฒเจนเจพเจฒ เจ…เจธเฉ€เจ‚ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

5. เจธเจฐเจ•เจฒเจธเฉ€เจ†เจˆ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ

เจ‡เฉฑเจ• เจตเจพเจœเจฌ เจธเจตเจพเจฒ เจ‰เฉฑเจ เจฆเจพ เจนเฉˆ - เจชเจพเจธเจตเจฐเจก เจจเจพเจฒ เจ•เฉ€ เจ•เจฐเจจเจพ เจนเฉˆ? เจธเจพเจกเฉ€ เจฌเจฟเจฒเจก เจฎเจธเจผเฉ€เจจ เจฆเจพ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฎเจ•เฉˆเจจเจฟเจœเจผเจฎ เจธเจพเจกเฉ‡ เจชเจพเจธเจตเจฐเจก เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจขเฉฐเจ— เจจเจพเจฒ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจธเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เจฐเฉ‡เจ—เจพเฅค เจธเจฐเจ•เจฒเจธเฉ€เจ†เจˆ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจฟเฉฑเจš, เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจšเฉเจฃเฉ‹

เจ…เจธเฉ€เจ‚ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเจฒ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจญเจพเจ— 1: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ
เจ…เจคเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเฉ‹:

  • เจ•เฉเฉฐเจœเฉ€: GOOGLE_APPLICATION_CREDENTIALS
    เจฎเฉเฉฑเจฒ: gcloud เจธเฉ‡เจตเจพ เจ–เจพเจคเจพ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ€ json เจซเจพเจˆเจฒ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€
  • เจ•เฉเฉฐเจœเฉ€: MATCH_PASSWORD
    เจฎเฉเฉฑเจฒ: เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ เจจเจพเจฒ เจ—เฉ€เจฅเจฌ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจกเฉ€เจ•เฉเจฐเจฟเจชเจŸ เจ•เจฐเจจ เจฒเจˆ เจชเจพเจธเจตเจฐเจก
  • เจ•เฉเฉฐเจœเฉ€: FASTLANE_PASSWORD
    เจฎเฉเฉฑเจฒ: เจเจชเจฒ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจชเฉ‹เจฐเจŸเจฒ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ เจ–เจพเจคเจพ เจชเจพเจธเจตเจฐเจก

เจ…เจธเฉ€เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ‡เฉฑเจ• PR เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฎเฉ€เจ–เจฟเจ† เจฒเจˆ เจธเจพเจกเฉ€ เจŸเฉ€เจฎ เจฒเฉ€เจก เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฆเฉ‡ เจนเจพเจ‚เฅค

เจจเจคเฉ€เจœเฉ‡

เจ‡เจนเจจเจพเจ‚ เจธเจงเจพเจฐเจจ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจพเจจเฉ‚เฉฐ เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจกเจฟเจตเจพเจˆเจธ เจธเจ•เฉเจฐเฉ€เจจ เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจฐเจฟเจ•เจพเจฐเจก เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเจงเฉ€เจ†, เจธเจฅเจฟเจฐ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเจพ เจธเจŸเฉˆเจ‚เจก เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค เจŸเฉˆเจธเจŸ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ†เจˆเจซเฉ‹เจจ X เจกเจฟเจตเจพเจˆเจธ เจฎเจพเจกเจฒ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เฉ€เจคเจพ เจนเฉˆ, เจชเจฐ เจซเจพเจฐเจฎ เจตเฉฑเจ–-เจตเฉฑเจ– เจฎเจพเจกเจฒเจพเจ‚ เจ…เจคเฉ‡ iOS เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ‡ เจธเฉเจฎเฉ‡เจฒ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจ…เจฎเฉ€เจฐ เจšเฉ‹เจฃ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจฆเฉ‚เจœเจพ เจญเจพเจ— เจ‡เฉฑเจ• เจเจ‚เจกเจฐเฉŒเจ‡เจก เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจŸเฉˆเจธเจŸ เจฒเฉˆเจฌ เจฆเฉ‡ เจ•เจฆเจฎ-เจฆเจฐ-เจ•เจฆเจฎ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจฒเจˆ เจธเจฎเจฐเจชเจฟเจค เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹