рдлрд╛рдпрд░рдмреЗрд╕ рдЯреЗрд╕реНрдЯ рд▓реИрдм рдореЗрдВ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯрд▓ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдПрдВред рднрд╛рдЧ 1: рдЖрдИрдУрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛

рдЫрд╡рд┐

рдореЗрд░рд╛ рдирд╛рдо рджрд┐рдорд┐рддреНрд░реА рд╣реИ, рдореИрдВ рдПрдордИрдПрд▓ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдлрд╛рдпрд░рдмреЗрд╕ рдЯреЗрд╕реНрдЯ рд▓реИрдм рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдП рдлреАрдЪрд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдХрд╛рдо рдЦрддреНрдо рдХрд┐рдпрд╛ - рдЕрд░реНрдерд╛рддреН, рдореВрд▓ XCUITest рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП iOS рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯрд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рдеред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рдЯреЗрд╕реНрдЯ рд▓реИрдм рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА рдФрд░ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд╕рдВрдж рдЖрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдИрдУрдПрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЯреЗрд╕реНрдЯ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдЙрд╕реА рдЯреНрд░реИрдХ рдкрд░ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдмрд╣реБрдд рдХреБрдЫ рдЧреВрдЧрд▓ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдирд╣реАрдВ рд╣реБрдЖ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрднреА рднреА рдХрд░рдирд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЖрдИрдУрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ, рддреЛ рдЖрдЬ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЧреБрдб рдХреЙрд░реНрдкреЛрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд░реБрдЪрд┐ - рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдХрд╣рд╛рдиреА рдореЗрдВ, рдореИрдВрдиреЗ рдХреБрдЫ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ - рдЧрд┐рдЯрд╣рдм рдФрд░ рд╕рд░реНрдХрд┐рд▓рд╕реА рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдирд┐рдЬреА рднрдВрдбрд╛рд░ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рд╣реИ рдЕрдореЗрдЬрдирдРрдк, рдмрдВрдбрд▓рдПрдб рд╣реИред com.company.amazingappред рдореИрдВ рддреБрд░рдВрдд рдмрд╛рдж рдХреЗ рднреНрд░рдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддрд╛ рд╣реВрдВред

рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рд╣реИрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

1. рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдпрдВ


UI рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдБ:

$ git checkout develop $ git pull $ git checkout -b тАЬfeature/add-ui-testsтАЭ 

Xcode рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ рдФрд░ UI рдкрд░реАрдХреНрд╖рдгреЛрдВ [XCode -> рдлрд╝рд╛рдЗрд▓ -> рдирдпрд╛ -> рд▓рдХреНрд╖реНрдп -> тАЛтАЛiOS рдкрд░реАрдХреНрд╖рдг рдмрдВрдбрд▓] рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рдЯреЙрдХрд┐рдВрдЧ рдирд╛рдо AmazingAppUITests рджреЗрдВред

рдЫрд╡рд┐

рдирд┐рд░реНрдорд┐рдд рд▓рдХреНрд╖реНрдп рдХреЗ рдмрд┐рд▓реНрдб рдЪрд░рдгреЛрдВ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЯрд╛рд░рдЧреЗрдЯ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА - рдЕрдореЗрдЬрди рдПрдк рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░реЗрдВ - AmazingAppUITests.swiftред

рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреЗ UI рдкрд░реАрдХреНрд╖рдгреЛрдВ [XCode -> рдЙрддреНрдкрд╛рдж -> рдпреЛрдЬрдирд╛ -> рдирдИ рдпреЛрдЬрдирд╛] рдХреЗ рд▓рд┐рдП рдПрдХ рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╣реА рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ: AmazingAppUITestsред

рдирд┐рд░реНрдорд┐рдд рдпреЛрдЬрдирд╛ рдореЗрдВ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд▓рдХреНрд╖реНрдп рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - AmazingApp рдФрд░ рд▓рдХреНрд╖реНрдп UI рдкрд░реАрдХреНрд╖рдг - AmazingAppUITests - рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдЦреЗрдВ

рдЫрд╡рд┐

рдЕрдЧрд▓рд╛, UI рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдПрдВред Xcode рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЬрд╛рдирдХрд╛рд░реА рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдБред "+" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдмрдирд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП XCtestред рдХреЛрдб рд╕рд╛рдЗрдирд┐рдВрдЧ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдбрд╛рдВрд╕ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЫрд╡рд┐

рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рддреАрди рд▓рдХреНрд╖реНрдп рд╣реИрдВ: рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг (рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд╣реА рд╣реИрдВ?) рдФрд░ рд▓рдХреНрд╖рд┐рдд рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рд╣рдордиреЗ рдмрдирд╛рдПред

рдЯрд╛рд░рдЧреЗрдЯ рдЕрдореЗрдЬрд╝реЕрди рдкрд░ рдЬрд╛рдПрдВ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдмрдирд╛рдПрдВ, рдХреЛрдб рд╕рд╛рдЗрдирд┐рдВрдЧ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рд╕реЗрдХреНрд╢рдиред XCtest рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, iOS рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдХреЛрдб рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдореИрдиреБрдЕрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рд╣рдордиреЗ рдЕрднреА рддрдХ рдкреНрд░реЛрд╡рд┐рдЬрд╝рдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрдирд╛рдИ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдПрдВрдЧреЗред

рд▓рдХреНрд╖реНрдп AmazingAppUITests рдХреЗ рд▓рд┐рдП рд╣рдо рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдо рдЙрддреНрдкрд╛рдж рдмрдВрдбрд▓ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдореЗрдВ рд╣рдо com.company.amazingappuitests рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред

2. Apple рдбреЗрд╡рд▓рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛


рд╣рдо Apple рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрдиреБрднрд╛рдЧ рдкрд░ рдФрд░ рдлрд┐рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЖрдЗрдЯрдо рдХреЗ рдРрдк рдЖрдИрдбреА рдХреЙрд▓рдо рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рдирдпрд╛ рдРрдк рдЖрдИрдбреА рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо AmazingAppUITests рдФрд░ bundleID com.company.amazingappuitests рд╣реИред

рдЫрд╡рд┐

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рд▓реЗрдХрд┐рди ... рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрд╡реЗрджрди рдХреЛ рд╕реНрд╡рдпрдВ рдмрдирд╛рдирд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдПрдХ рдкреНрд░реЛрд╡рд┐рдЬрдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рджреЛ рдмрдВрдбрд▓ рдЖрдИрдбреА рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИ - рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдРрдк рдЖрдИрдбреАред рд╣рдо рдПрдХ рдирдИ рдРрдк рдЖрдИрдбреА рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рдРрдк рдЖрдИрдбреА рдХреЗ рдмрдЬрд╛рдп рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдРрдк рдЖрдИрдбреА рдЪреБрдиреЗрдВред

рдЫрд╡рд┐

рд╣рдордиреЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ developer.apple.com рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╣рдо рдлрд╛рд╕реНрдЯрд▓реЗрди рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрд╡рд░ рд╕реЗ рдХрд╡рд░ рддрдХ рдореИрдЪ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВред

рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдПрдХ рдЦрд╛рддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕рдХреА рдкрд╣реБрдВрдЪ Apple рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдЬреАрдердм рджреЛрдиреЛрдВ рддрдХ рд╣реЛред рд╣рдо рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдпрд╣ рдирд╣реАрдВ рд╣реИ) InfrastructureAccount@your.company.domain рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЦрд╛рддрд╛, рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдЗрд╕реЗ developer.apple.com рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдпреБрдХреНрдд рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдХреЛ рдЕрдкрдиреА рдХрдВрдкрдиреА рдХреЗ рдЧрд┐рдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪ рджреЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдирд┐рдЬреА рднрдВрдбрд╛рд░ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╣реИ рдЕрдореЗрдЬрди рдПрдкреИрдЪред

3. рдлрд╛рд╕реНрдЯрд▓реЗрди рдФрд░ рдореИрдЪ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕


рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдореИрдиреБрдЕрд▓ рдореЗрдВ рд╕рдВрдХреЗрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╛рд╕реНрдЯрд▓реЗрди рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред рдХрдорд╛рдВрдб рдбрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж

 $ fastlane init 

рдЖрдкрдХреЛ рдЙрдкрд▓рдмреНрдз рдЙрдкрдпреЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЪреМрдереЗ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ - рдореИрдиреБрдЕрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдкред

рдЫрд╡рд┐

рдПрдХ рдирдИ рдлрд╛рд╕реНрдЯрд▓реЗрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ - рдПрдкрдлрд╛рдЗрд▓ рдФрд░ рдлрд╛рд╕реНрдЯрдлрд╛рдЗрд▓ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - Appfile рдореЗрдВ рд╣рдо рд╕реЗрд╡рд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ Fastfile рдореЗрдВ рд╣рдо рдЬреЙрдм рд▓рд┐рдЦрддреЗ рд╣реИрдВ, Fastlane рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдЧрд▓рд┐рдпреЛрдВ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ: рдПрдХ , рджреЛ ред

рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ Appfile рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рдореНрди рд░реВрдк рдореЗрдВ рд▓рд╛рдПрдБ:

 app_identifier "com.company.amazingapp" # Bundle ID apple_dev_portal_id "infrastructureaccount@your.company.domain" #   ,     iOS   Apple Developer Program. team_id "LSDY3IFJAY9" # Your Developer Portal Team ID 

рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдореИрдиреБрдЕрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рдо рдореИрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

 $ fastlane match init $ fastlane match development 

рдЕрдЧрд▓рд╛, рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рдЦрд╛рддрд╛, рдкрд╛рд╕рд╡рд░реНрдб, рдЖрджрд┐ред

рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдореИрдЪ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкрд╛рд╕рд╡рд░реНрдб рд░рдЦрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд╕реАрдЖрдИ рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдЪрд░рдг рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛!

рдлрд╛рд╕реНрдЯрд▓реЗрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреА - рдорд╛рдЪрд┐рд╕рд╛рдЗрд▓ред рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ рдФрд░ рдлреЙрд░реНрдо рдореЗрдВ рд▓рд╛рдПрдВ:

 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("infrastructureaccount@your.company.domain") # 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 рдЦреЛрд▓реЗрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореИрдЪ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ com.company рдХреА рдЖрд╡рд╢реНрдпрдХ рдкреНрд░реЛрд╡рд┐рдЬрд╝рдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╣реИред * рдЯрд╛рдЗрдк рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ AmazingApp рдФрд░ AmazingAppUITests рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╡рд┐рдЬрд╝рдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЫрд╡рд┐

рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╣рдо рдлрд╛рд╕реНрдЯрд▓реЗрди рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдлрд╛рдпрд░рдмреЗрд╕ рдЯреЗрд╕реНрдЯ рд▓реИрдм рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред

рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рдорд╛рд░рд╛ рд▓реЗрди рдЯреЗрд╕реНрдЯрд┐рдВрдЧ_рдмрд┐рд▓реНрдбрд░ /for_firebase рдЕрдВрддрддрдГ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗ:

 lane :testing_build_for_firebase do match( type: "development", readonly: true, app_identifier: "com.company.*", git_branch: "uitests" ) scan( scheme: 'AmazingAppUITests', # UI Test scheme clean: true, # Recommended: This would ensure the build would not include unnecessary files skip_detect_devices: true, # Required build_for_testing: true, # Required sdk: 'iphoneos', # Required should_zip_build_products: true, # Must be true to set the correct format for Firebase Test Lab ) firebase_test_lab_ios_xctest( gcp_project: 'AmazingAppUITests', # Your Google Cloud project name (    ) devices: [ # Device(s) to run tests on { ios_model_id: 'iphonex', # Device model ID, see gcloud command above ios_version_id: '12.0', # iOS version ID, see gcloud command above locale: 'en_US', # Optional: default to en_US if not set orientation: 'portrait' # Optional: default to portrait if not set } ] ) end 

CircleCI рдореЗрдВ рдлрд╛рд╕реНрдЯрд▓реЗрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдПрдХ, рджреЛ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

рдПрдХ рдирдП рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ config.yml рдХреЛ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ:

 build-for-firebase-test-lab: macos: xcode: "10.1.0" working_directory: ~/project shell: /bin/bash --login -o pipefail steps: - checkout - attach_workspace: at: ~/project - run: sudo bundle install #   - run: name: install gcloud-sdk #  mac    gcloud command: | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null brew cask install google-cloud-sdk - run: name: build app for testing command: fastlane testing_build_for_firebase #  lane     firebase рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛: 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ред

рдорд╣рддреНрд╡рдкреВрд░реНрдг: рд▓реЗрди рдлрд╛рдпрд░рдмреЗрдЬ рдореЗрдВ рдлрд╛рд╕реНрдЯрдлрд╛рдЗрд▓ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ_рд╕реНрдЯреЗрд╕реНрдЯ_рд▓реИрдм_рдУрд╕_рдПрдХреНрд╕рдХреНрдЯреЗрд╕реНрдЯ, gcp_project рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЫрд╡рд┐

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХрд╛рдлреА рдареАрдХ рд╣реИрдВред

рд╣рдо рдЯреИрдм рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕реА рдЦрд╛рддреЗ рдХреЗ рддрд╣рдд рдЬрд┐рд╕реЗ рд╣рдо рдЧреЙрд▓рдХреЙрдб рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрд╛рдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдЧрдХреНрд▓рд╛рдЙрдб рдХрдВрд╕реЛрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реЛрддрд╛ рд╣реИред

Google рдкреНрд░рддрд┐ рд╡рд░реНрд╖ $ 300 рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдСрдЯреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рдореБрдлреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рдПрдХ рд╡рд░реНрд╖ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╣рдо рднреБрдЧрддрд╛рди рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, $ 1 рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╢реБрд▓реНрдХ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЦрд╛рддреЗ рдореЗрдВ $ 300 рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рд▓ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдореБрдлреНрдд рдЯреИрд░рд┐рдл рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдкреИрд╕реЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдЖрдЗрдП рдлрд╛рдпрд░рдмреЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдЯреИрдм рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдмреНрд▓реЗрдЬрд╝ рдЯреИрд░рд┐рдл рдкреНрд▓рд╛рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ - рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реАрдорд╛ рдкрд╛рд░ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред

Gcloud рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдлрд╛рдпрд░рдмреЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, "рдХреИрдЯрд▓реЙрдЧ" рдореБрдЦреНрдп рдореЗрдиреВ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдкрд░реАрдХреНрд╖рдг рдПрдкреАрдЖрдИ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдЙрдкрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВред

рдЫрд╡рд┐

рдлрд┐рд░ рдореЗрдиреВ рдЖрдЗрдЯрдо "рдЖрдИрдПрдПрдо рдФрд░ рдкреНрд░рд╢рд╛рд╕рди" рдкрд░ рдЬрд╛рдПрдВ -> рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ -> рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдВред рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрддреЗ рд╣реИрдВред

рдЫрд╡рд┐

JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдмрдирд╛рдПрдБ

рдЫрд╡рд┐

рд╣рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП JSON рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд░реАрдХреНрд╖рдг рд▓реИрдм рд╕реЗрдЯрдЕрдк рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

5. CircleCI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рдПрдХ рдЙрдЪрд┐рдд рд╕рд╡рд╛рд▓ рдЪрд▓ рд░рд╣рд╛ рд╣реИ - рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЕрдиреНрдп рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рд╕реЗ рд╣рдореЗрдВ рд╣рдорд╛рд░реЗ рдирд┐рд░реНрдорд╛рдг-рдорд╢реАрди рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рддрдВрддреНрд░ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред CircleCI рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ, рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

рдЫрд╡рд┐
рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░ рд╢реБрд░реВ рдХрд░реЗрдВ:

  • рдХреБрдВрдЬреА: GOOGLE_APPLICATION_CREDENTIALS
    рдорд╛рди: gcloud рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдХреБрдВрдЬреА рдлрд╝рд╛рдЗрд▓ json
  • рдХреБрдВрдЬреА: MATCH_PASSWORD
    рдореВрд▓реНрдп: рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб
  • рдХреБрдВрдЬреА: FASTLANE_PASSWORD
    рдореВрд▓реНрдп: Apple рдбреЗрд╡рд▓рдкрд░ рдкреЛрд░реНрдЯрд▓ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЕрдХрд╛рдЙрдВрдЯ рдкрд╛рд╕рд╡рд░реНрдб

рд╣рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реА рдЯреАрдо рд▓реАрдб рдХреЗ рд▓рд┐рдП рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рднреЗрдЬрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо


рдЗрди рд╕рд░рд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝реЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдордп рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдХреНрд░реАрди рдкрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛, рд╕реНрдерд┐рд░ рдХрд╛рдордХрд╛рдЬреА рд╕реНрдЯреИрдВрдб рдорд┐рд▓рд╛ред рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ iPhone X рдбрд┐рд╡рд╛рдЗрд╕ рдореЙрдбрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдлрд╝рд╛рд░реНрдо iOS рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдФрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЪрдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рднрд╛рдЧ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рдЯреЗрд╕реНрдЯ рд▓реИрдм рдХреЗ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/hi451786/


All Articles