แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒ›แƒ” แƒ›แƒฅแƒ•แƒ˜แƒ แƒ“แƒ˜แƒ›แƒ˜แƒขแƒ แƒ˜, แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ แƒขแƒ”แƒกแƒขแƒ”แƒ แƒแƒ“ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒแƒจแƒ˜ MEL แƒ›แƒ”แƒชแƒœแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ. แƒกแƒฃแƒš แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒ“แƒแƒ•แƒแƒกแƒ แƒฃแƒšแƒ” แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ‘แƒแƒšแƒ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ—แƒแƒœ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ Firebase แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒšแƒแƒ‘แƒแƒ แƒแƒขแƒแƒ แƒ˜แƒ โ€” แƒ™แƒ”แƒ แƒซแƒแƒ“, iOS แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒจแƒแƒ‘แƒšแƒ˜แƒฃแƒ แƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ แƒฉแƒแƒก XCUITest-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ›แƒแƒœแƒแƒ›แƒ“แƒ” แƒ›แƒ” แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ›แƒแƒ•แƒชแƒแƒ“แƒ” Firebase Test Lab Android-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ›แƒ”แƒฌแƒแƒœแƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก iOS แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ“แƒแƒœแƒ”แƒ–แƒ” แƒ“แƒแƒ›แƒ”แƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒœแƒ. แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ แƒ’แƒฃแƒ’แƒšแƒจแƒ˜ แƒจแƒ”แƒ›แƒแƒกแƒ•แƒšแƒ แƒ“แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒแƒ  แƒ’แƒแƒ›แƒแƒ›แƒ˜แƒ•แƒ˜แƒ“แƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒ“แƒแƒ›แƒ”แƒฌแƒ”แƒ แƒ แƒกแƒแƒ›แƒ”แƒฃแƒ แƒ•แƒ”แƒ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒกแƒแƒช แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒญแƒ˜แƒ แƒก.

แƒแƒกแƒ” แƒ แƒแƒ›, แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— UI แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ”, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฃแƒ™แƒ•แƒ” แƒกแƒชแƒแƒ“แƒแƒ— แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ–แƒ” แƒ“แƒฆแƒ”แƒก, แƒ™แƒ”แƒ—แƒ˜แƒšแƒกแƒ˜แƒœแƒ“แƒ˜แƒกแƒ˜แƒ”แƒ แƒแƒ“ แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ Good Corporation-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ . แƒ“แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒฃแƒšแƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ’แƒ”แƒกแƒแƒšแƒ›แƒ”แƒ‘แƒ˜แƒ— แƒ™แƒแƒขแƒแƒจแƒ˜.

แƒกแƒ˜แƒฃแƒŸแƒ”แƒขแƒจแƒ˜ แƒ›แƒ” แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒ“แƒแƒ›แƒ”แƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒ˜แƒœแƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ - แƒ™แƒ”แƒ แƒซแƒ แƒกแƒแƒชแƒแƒ•แƒ˜ GitHub-แƒ–แƒ” แƒ“แƒ CircleCI build แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ–แƒ”. แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ AmazingApp, bundleID แƒแƒ แƒ˜แƒก com.company.amazingapp. แƒ›แƒ” แƒฌแƒแƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒ’แƒ”แƒœแƒ— แƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ•, แƒ แƒแƒ—แƒ แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ“แƒ”แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒ“แƒแƒ‘แƒœแƒ”แƒฃแƒšแƒแƒ‘แƒ.

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ”แƒ—, แƒ’แƒแƒ’แƒ•แƒ˜แƒ–แƒ˜แƒแƒ แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜.

1. แƒ—แƒแƒ•แƒแƒ“ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ UI แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

$ git checkout develop
$ git pull
$ git checkout -b โ€œfeature/add-ui-testsโ€

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒฎแƒกแƒœแƒแƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ XCode-แƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ Target แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒ— [XCode -> File -> New -> Target -> iOS Testing Bundle] แƒ“แƒ แƒ›แƒ˜แƒ•แƒชแƒ”แƒ— แƒ›แƒแƒก แƒแƒฎแƒกแƒœแƒ-แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ AmazingAppUITests.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ Target-แƒ˜แƒก Build Phases แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— Target Dependencies - AmazingApp, แƒ™แƒแƒ›แƒžแƒ˜แƒš แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒจแƒ˜ - AmazingAppUITests.swift.

แƒ™แƒแƒ แƒ’แƒ˜ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒ แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ” แƒกแƒฅแƒ”แƒ›แƒ”แƒ‘แƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒกแƒฅแƒ”แƒ›แƒแƒก แƒฉแƒ•แƒ”แƒœแƒ˜ UI แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก [XCode -> Product -> Scheme -> New Scheme] แƒ“แƒ แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒแƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒก: AmazingAppUITests.

แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ”แƒก - AmazingApp แƒ“แƒ Target UI แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก - AmazingAppUITests - แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒฎแƒแƒš build แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก UI แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. XCode-แƒจแƒ˜ แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜. แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— "+" แƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“ XCtest. แƒ”แƒก แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜, แƒ แƒแƒ—แƒ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ•แƒ˜แƒชแƒ˜แƒšแƒแƒ— แƒขแƒแƒ›แƒ‘แƒฃแƒ แƒ˜แƒ— แƒชแƒ”แƒ™แƒ•แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒกแƒแƒฅแƒ›แƒ” แƒ”แƒฎแƒ”แƒ‘แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒแƒก.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒกแƒแƒ›แƒ˜ แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ”: แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ (แƒ‘แƒแƒšแƒแƒก แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ”แƒœ, แƒแƒ แƒ?) แƒ“แƒ Target UI แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ—.

แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— Target AmazingApp, Build Settings แƒฉแƒแƒœแƒแƒ แƒ—แƒ–แƒ”, Code Signing Identity แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜. XCtest แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— iOS Developer. แƒ™แƒแƒ“แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒกแƒขแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— Manual. แƒฉแƒ•แƒ”แƒœ แƒฏแƒ”แƒ  แƒแƒ  แƒจแƒ”แƒ’แƒ•แƒ˜แƒฅแƒ›แƒœแƒ˜แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒชแƒแƒขแƒ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ—.

Target AmazingAppUITests-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒก แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› Product Bundle Identifier แƒกแƒ•แƒ”แƒขแƒจแƒ˜ แƒจแƒ”แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— com.company.amazingappuitests.

2. Apple Developer Program-แƒจแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— Apple Developer Program-แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ”, แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒกแƒ”แƒฅแƒชแƒ˜แƒแƒจแƒ˜ แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜, แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒžแƒ แƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒฃแƒœแƒฅแƒขแƒ˜แƒก App IDs แƒกแƒ•แƒ”แƒขแƒจแƒ˜. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก ID แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— AmazingAppUITests แƒ“แƒ bundleID com.company.amazingappuitests.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒแƒฎแƒšแƒ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒชแƒแƒšแƒ™แƒ” แƒกแƒ”แƒ แƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜แƒ— แƒ›แƒแƒ•แƒแƒฌแƒ”แƒ แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ›... แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒ แƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒแƒ‘แƒก แƒ—แƒแƒ•แƒแƒ“ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒแƒฌแƒงแƒแƒ‘แƒแƒก แƒ“แƒ แƒกแƒแƒชแƒ“แƒ”แƒšแƒ˜ แƒ แƒ‘แƒ”แƒœแƒ˜แƒก แƒแƒฌแƒงแƒแƒ‘แƒแƒก. แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒฌแƒ˜แƒœแƒแƒจแƒ” แƒ•แƒ“แƒ’แƒแƒ•แƒแƒ แƒ— แƒแƒ แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“แƒแƒ‘แƒ˜แƒก แƒ›แƒแƒฌแƒ›แƒแƒ‘แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒ”แƒ แƒ—แƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜แƒ—. แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ“แƒ แƒ”แƒšแƒ”แƒ’แƒแƒœแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ - Wildcard App ID. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ— แƒแƒžแƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ ID-แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› Explicit App ID-แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— Wildcard App ID, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ”.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒแƒ› แƒ”แƒขแƒแƒžแƒ–แƒ” แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ— developer.apple.com-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒก แƒคแƒแƒœแƒฏแƒแƒ แƒแƒก แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ—. แฒฌแƒแƒ•แƒ˜แƒ“แƒ”แƒ— Fastlane แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒ˜แƒขแƒ˜ แƒ“แƒ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— Match แƒฃแƒขแƒ˜แƒšแƒ˜แƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒ‘แƒแƒšแƒแƒ›แƒ“แƒ”.

แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ˜แƒแƒœแƒ›แƒ แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒšแƒ›แƒ แƒจแƒ”แƒœแƒ˜แƒจแƒœแƒ, แƒ แƒแƒ› แƒแƒ› แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ“แƒ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ Apple Developer Program-แƒ–แƒ” แƒ“แƒ Github-แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— (แƒ—แƒฃ แƒ›แƒแƒฃแƒšแƒแƒ“แƒœแƒ”แƒšแƒแƒ“ แƒแƒกแƒ”แƒ—แƒ˜ แƒ แƒแƒ› แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก) แƒคแƒแƒ แƒ›แƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒก [แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒ— แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ], แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒซแƒšแƒ˜แƒ”แƒ แƒ˜ แƒžแƒแƒ แƒแƒšแƒ˜, แƒ“แƒแƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ— developer.apple.com-แƒ–แƒ” แƒ“แƒ แƒ“แƒแƒœแƒ˜แƒจแƒœแƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒแƒ“. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ˜แƒก github แƒกแƒแƒชแƒแƒ•แƒ–แƒ” แƒ“แƒ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒฎแƒแƒš แƒ™แƒ”แƒ แƒซแƒ แƒกแƒแƒชแƒแƒ•แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ AmazingAppMatch.

3. Fastlane-แƒ˜แƒก แƒ“แƒ แƒ›แƒแƒขแƒฉแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒ˜, แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— fastlane, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ. แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’

$ fastlane init

แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒแƒ’แƒ”แƒ—แƒฎแƒแƒ•แƒ”แƒ‘แƒแƒ— แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜. แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒ›แƒ”แƒแƒ—แƒฎแƒ” แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ - แƒฎแƒ”แƒšแƒ˜แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒžแƒ แƒแƒ”แƒฅแƒขแƒก แƒแƒฅแƒ•แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ fastlane, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒแƒ  แƒคแƒแƒ˜แƒšแƒก - Appfile แƒ“แƒ Fastfile. แƒ›แƒแƒ™แƒšแƒ”แƒ“, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก Appfile-แƒจแƒ˜ แƒ“แƒ แƒ•แƒฌแƒ”แƒ แƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ”แƒ‘แƒก Fastfile-แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช 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 แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก!

แƒแƒฎแƒแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ 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-แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก build-แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒคแƒแƒ แƒ›แƒ”แƒ‘แƒšแƒแƒ“, แƒแƒœแƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก ID-แƒ–แƒ” แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ›แƒแƒ’แƒ แƒแƒ›, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒ•แƒแƒฎแƒกแƒแƒ•แƒก, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ Wildcard ID, แƒ แƒแƒ—แƒ แƒฎแƒ”แƒšแƒ˜ แƒ›แƒแƒแƒฌแƒ”แƒ แƒแƒ— แƒกแƒแƒขแƒ”แƒกแƒขแƒ build-แƒก. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— 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

แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒฅแƒ›แƒœแƒ fastlane-แƒ›แƒ แƒแƒฎแƒแƒšแƒ˜ แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜ แƒ“แƒ แƒฉแƒแƒ“แƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜. แƒ“แƒ˜แƒ“แƒ˜!

แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— XCode. แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก Match Development com.company.* แƒคแƒแƒ แƒ›แƒ˜แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ Provisioning แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ AmazingApp แƒ“แƒ AmazingAppUITests แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ”แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒ แƒฉแƒ”แƒ‘แƒ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒšแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ. แฒฌแƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ fastlane-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒแƒ“แƒ•แƒ˜แƒšแƒ”แƒ‘แƒก แƒ”แƒฅแƒกแƒžแƒแƒ แƒขแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก Firebase Test Lab-แƒจแƒ˜ แƒ“แƒ แƒ›แƒ˜แƒฐแƒงแƒ•แƒ”แƒ‘แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒ™แƒแƒžแƒ˜แƒ แƒแƒ—-แƒžแƒแƒกแƒขแƒ˜ แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ“แƒแƒœ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ–แƒแƒšแƒ˜แƒก 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

แƒกแƒ แƒฃแƒšแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก fastlane-แƒ˜แƒก 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 แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ AmazingAppUITests.

แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ: แƒฌแƒ˜แƒœแƒ แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ–แƒ” Fastfile in lane firebase_test_lab_ios_xctest-แƒจแƒ˜ gcp_project แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ’แƒ•แƒ”แƒ แƒ’แƒ”แƒ‘แƒ.

แƒแƒ  แƒ“แƒแƒฎแƒฃแƒ แƒแƒ— แƒฉแƒแƒœแƒแƒ แƒ—แƒ˜, แƒ“แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ“แƒ˜แƒ— แƒ˜แƒ›แƒแƒ•แƒ” แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ–แƒ” Gcloud - แƒ”แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฆแƒแƒœแƒ˜แƒกแƒซแƒ˜แƒ”แƒ‘แƒแƒ, แƒ แƒแƒ“แƒ’แƒแƒœ Firebase-แƒ—แƒแƒœ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒฎแƒ“แƒ”แƒ‘แƒ gcloud แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ’แƒฃแƒ’แƒšแƒ˜ แƒฌแƒ”แƒšแƒ˜แƒฌแƒแƒ“แƒจแƒ˜ 300 แƒ“แƒแƒšแƒแƒ แƒก แƒ’แƒแƒกแƒชแƒ”แƒ›แƒก, แƒ แƒแƒช แƒแƒ•แƒขแƒแƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒจแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒ— แƒฃแƒคแƒแƒกแƒ แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒขแƒแƒšแƒคแƒแƒกแƒ˜แƒ. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒ“แƒแƒฎแƒ“แƒ˜แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก, แƒ•แƒ”แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ“แƒ”แƒ‘แƒ”แƒขแƒก $1 แƒ“แƒ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— $300 แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ–แƒ”. แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ’แƒแƒ“แƒแƒ˜แƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒก แƒฃแƒคแƒแƒกแƒ แƒกแƒแƒขแƒแƒ แƒ˜แƒคแƒ แƒ’แƒ”แƒ’แƒ›แƒแƒ–แƒ”, แƒแƒกแƒ” แƒ แƒแƒ› แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒคแƒฃแƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒแƒ–แƒ” แƒคแƒ˜แƒฅแƒ แƒ˜.

แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ— แƒฉแƒแƒœแƒแƒ แƒ—แƒก Firebase แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— Blaze-แƒ˜แƒก แƒกแƒแƒขแƒแƒ แƒ˜แƒคแƒ แƒ’แƒ”แƒ’แƒ›แƒแƒจแƒ˜ - แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒฎแƒ“แƒ”แƒšแƒ˜, แƒ—แƒฃ แƒšแƒ˜แƒ›แƒ˜แƒขแƒ˜ แƒ’แƒแƒ“แƒแƒแƒญแƒแƒ แƒ‘แƒ”แƒ‘แƒก.

gcloud แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜ แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ Firebase แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜, แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒ›แƒ”แƒœแƒ˜แƒฃแƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ "Directory" แƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— Cloud Testing API แƒ“แƒ Cloud Tools Result API.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ›แƒ”แƒœแƒ˜แƒฃแƒก แƒžแƒฃแƒœแƒฅแƒขแƒจแƒ˜ "IAM แƒ“แƒ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ" -> แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜ -> แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— API แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ JSON แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒ’แƒแƒ“แƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ JSON แƒชแƒแƒขแƒ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฎแƒšแƒ แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒšแƒแƒ‘แƒแƒ แƒแƒขแƒแƒ แƒ˜แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒ›แƒ˜แƒ’แƒ•แƒแƒฉแƒœแƒ˜แƒ.

5. CircleCI-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ˜แƒ•แƒ แƒฃแƒšแƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ - แƒ แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒแƒ— แƒžแƒแƒ แƒแƒšแƒ”แƒ‘แƒ—แƒแƒœ? แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒฃแƒšแƒ˜ แƒแƒžแƒแƒ แƒแƒขแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜ แƒ“แƒแƒ’แƒ•แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ“ แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒžแƒแƒ แƒแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ›แƒ’แƒ แƒซแƒœแƒแƒ‘แƒ˜แƒแƒ แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜. CircleCI แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜ แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— Environment Variables

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒฃแƒš แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก Firebase Test Lab-แƒจแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1: iOS แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜
แƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜:

  • แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: GOOGLE_APPLICATION_CREDENTIALS
    แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ: gcloud แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก json แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒจแƒ˜แƒ’แƒ—แƒแƒ•แƒกแƒ˜
  • แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: MATCH_PASSWORD
    แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ: แƒžแƒแƒ แƒแƒšแƒ˜ แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒ— github แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ’แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: FASTLANE_PASSWORD
    แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ: Apple Developer Portal แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— PR-แƒก แƒ“แƒ แƒ•แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ— แƒ›แƒแƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒฃแƒœแƒ“แƒ˜แƒก แƒšแƒ˜แƒ“แƒ”แƒ แƒก แƒ’แƒแƒœแƒกแƒแƒฎแƒ˜แƒšแƒ•แƒ”แƒšแƒแƒ“.

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒแƒ› แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒ™แƒแƒ แƒ’แƒ˜, แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒกแƒขแƒ”แƒœแƒ“แƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ” แƒ•แƒ˜แƒ“แƒ”แƒแƒก แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒ—. แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒ›แƒ” แƒ“แƒแƒ•แƒแƒ–แƒฃแƒกแƒขแƒ” iPhone X แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒคแƒ”แƒ แƒ›แƒ แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— แƒ›แƒ“แƒ˜แƒ“แƒแƒ  แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ iOS แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒ˜แƒ“แƒแƒœ.

แƒ›แƒ”แƒแƒ แƒ” แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ“แƒแƒ”แƒ—แƒ›แƒแƒ‘แƒ Firebase แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒšแƒแƒ‘แƒแƒ แƒแƒขแƒแƒ แƒ˜แƒ˜แƒก แƒ”แƒขแƒแƒžแƒแƒ‘แƒ แƒ˜แƒ• แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก Android แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ