GitLab рдЖрдгрд┐ fastlane рд╕рд╣ App Store рд╡рд░ iOS рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ

GitLab рдЖрдгрд┐ fastlane рд╕рд╣ App Store рд╡рд░ iOS рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ

рдлрд╛рд╕реНрдЯрд▓реЗрдирд╕рд╣ GitLab рдЕреЕрдк рд╕реНрдЯреЛрдЕрд░рд╡рд░ iOS рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ, рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ.

рдЖрдореНрд╣реА рдЕрд▓реАрдХрдбреЗ рд╣реЛрддреЗ рдЕрдБрдбреНрд░реЙрдЗрдб рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддреНрд╡рд░реАрдд рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ рдЖрдгрд┐ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рдпрд╛рдмрджреНрджрд▓ рдкреЛрд╕реНрдЯ рдХрд░рд╛ GitLab рд╕рд╣ рдЖрдгрд┐ рдЬрд▓рдж рдорд╛рд░реНрдЧрд┐рдХрд╛. рдпреЗрдереЗ рдЖрдкрдг iOS рдЕреЕрдк рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреЗ рдЖрдгрд┐ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рдЖрдгрд┐ рддреЗ TestFlight рд╡рд░ рдХрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рд╛рдпрдЪреЗ рддреЗ рдкрд╛рд╣реВ. рдХрд┐рддреА рдорд╕реНрдд рдЖрд╣реЗ рддреЗ рдкрд╣рд╛ рдореА GitLab Web IDE рд╕рд╣ iPad Pro рд╡рд░ рдмрджрд▓ рдХрд░рдд рдЖрд╣реЗ, рдореА рдЕрд╕реЗрдВрдмреНрд▓реА рдШреЗрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдЪ iPad Pro рд╡рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рдЪрд╛рдЪрдгреА рдЖрд╡реГрддреНрддреАрдЪреЗ рдЕрдкрдбреЗрдЯ рдорд┐рд│рд╡рддреЛ рдЬрд┐рдереЗ рдореА рддреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рд╣реЛрддреЗ.

рдпреЗрдереЗ рдЖрдкрдг рдШреЗрдК рд╕реНрд╡рд┐рдлреНрдЯрд╡рд░ рд╕рд╛рдзреЗ iOS рдЕреЕрдк, рдЬреНрдпрд╛рдВрдЪреНрдпрд╛рд╕реЛрдмрдд рдореА рд╡реНрд╣рд┐рдбрд┐рдУ рд░реЗрдХреЙрд░реНрдб рдХреЗрд▓рд╛.

рдНрдкрд▓ рд╕реНрдЯреЛрдЕрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдмрджреНрджрд▓ рдХрд╛рд╣реА рд╢рдмреНрдж

рд╕рд░реНрд╡рдХрд╛рд╣реА рдПрдХрддреНрд░ рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рдЕреЕрдк рд╕реНрдЯреЛрдЕрд░ рдЕреЕрдк, рд╡рд┐рддрд░рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдЖрдгрд┐ рдкреНрд░реЛрд╡реНрд╣рд┐рдЬрдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓.

рдпреЗрдереЗ рд╕рд░реНрд╡рд╛рдд рдХрдареАрдг рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдЕреЕрдк рд╕реНрдЯреЛрдЕрд░рдордзреНрдпреЗ рд╕рд╛рдЗрдирд┐рдВрдЧрдЪреЗ рдЕрдзрд┐рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдгреЗ. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рдЖрдкрдг рд╣реЗ рд╕реНрд╡рддрдГрд╕рд╛рдареА рд╢реЛрдзреВрди рдХрд╛рдвреВ рд╢рдХрд╛рд▓. рддреБрдореНрд╣реА рдирд╡реАрди рдЕрд╕рд▓реНрдпрд╛рд╕, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдпреЛрдЧреНрдп рджрд┐рд╢реЗрдиреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрди, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдпреЗрдереЗ Apple рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдмрджреНрджрд▓ рдмреЛрд▓рдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ рддреЗ рд╕рддрдд рдмрджрд▓рдд рдЕрд╕рддрд╛рдд. рд╣реЗ рдкреЛрд╕реНрдЯ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░реЗрд▓.

рдорд╛рдЭреЗ рдЕреЕрдкреНрд╕

рддреБрдореНтАНрд╣рд╛рд▓рд╛ App Store Connect рдордзреНтАНрдпреЗ рдЕтАНреЕрдкрдЪреА рдЖрд╡рд╢реНтАНрдпрдХрддрд╛ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╛рдареА рдЖрдпрдбреА рдЕрд╕реЗрд▓ .xcodebuild. рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЖрдгрд┐ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдпрдбреА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдЪрд╛рдЪрдгреА рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдб рдмрд┐рд▓реНрдб, рдХрд┐рдВрдордд рдЖрдгрд┐ рдЙрдкрд▓рдмреНрдзрддрд╛ рдЖрдгрд┐ рдЯреЗрд╕реНрдЯрдлреНрд▓рд╛рдЗрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдПрдХрддреНрд░ рдХрд░рддрд╛рдд. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЪрд╛рдЪрдгреА рдХрд░реВ рдирдХрд╛, рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд▓рд╣рд╛рди рдЧрдЯ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╕реЛрдкреЗ рд╕реЗрдЯрдЕрдк рдЕрд╕рд▓реНрдпрд╛рд╕ рдЖрдгрд┐ рдНрдкрд▓рдХрдбреВрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд╡рд╛рдирдЧреНрдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рд▓реНрдпрд╛рд╕ рдЦрд╛рдЬрдЧреА рдЪрд╛рдЪрдгреА рдкреБрд░реЗрд╢реА рдЖрд╣реЗ.

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░реЛрдлрд╛рдЗрд▓

рдЕреЕрдк рд╕реЗрдЯрдЕрдк рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рддреБрдореНрд╣рд╛рд▓рд╛ Apple рдбреЗрд╡реНрд╣рд▓рдкрд░ рдХрдиреНрд╕реЛрд▓рдЪреНрдпрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ, рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рдЖрдгрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╡рд┐рднрд╛рдЧрд╛рдд рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ iOS рд╡рд┐рддрд░рдг рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рд╣реА рд╕рд░реНрд╡ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдкреНрд░реЛрд╡реНрд╣рд┐рдЬрдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓рдордзреНрдпреЗ рдПрдХрддреНрд░ рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддрд╛рдд.

рдЬреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдкреНрд░рдорд╛рдгреАрдХреГрдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ рддреНрдпрд╛рдВрдирд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЕрдиреНрдпрдерд╛ рдкрд╛рдпрд▒реНрдпрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдгрд┐ рдЙрд╕рд╛рд╕рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рддреНрд░реБрдЯреА рджрд┐рд╕реЗрд▓.

рдЗрддрд░ рдкрд░реНрдпрд╛рдп

рдпрд╛ рд╕реЛрдкреНрдпрд╛ рдкрджреНрдзрддреАрд╢рд┐рд╡рд╛рдп, рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдЖрдгрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЗрддрд░ рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд. рддреНрдпрд╛рдореБрд│реЗ, рддреБрдореНрд╣реА рд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдХрд╛рдо рдХреЗрд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдЬреБрд│рд╡реВрди рдШреНрдпрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ .xcodebuild, рдЬреЗ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реНрд╕рдХрдбреЗ рдирд┐рд░реНрджреЗрд╢ рдХрд░реЗрд▓ рдЖрдгрд┐ рдЬреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдЦрд╛рд▓реА рдзрд╛рд╡рдкрдЯреВ рдЪрд╛рд▓рдд рдЖрд╣реЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдмрд┐рд▓реНрдб рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдХреАрдЪреЗрди рдЙрдкрд▓рдмреНрдз рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдбрд┐рдЬрд┐рдЯрд▓ рд╕реНрд╡рд╛рдХреНрд╖рд░реАрд╕рд╛рдареА рдЖрдореНрд╣реА рдлрд╛рд╕реНрдЯрд▓реЗрди рд╡рд╛рдкрд░рддреЛ рдЖрдгрд┐ рдХрд╛рд╣реА рд╕рдорд╕реНрдпрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреНрдпрд╛рдВрдЪреЗ рддрдкрд╢реАрд▓ рдкрд╣рд╛ рдбрд┐рдЬрд┐рдЯрд▓ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдмрджреНрджрд▓ рджрд╕реНрддрдРрд╡рдЬ.

рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд рдореА рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд╛рдкрд░рдд рдЖрд╣реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдгрд┐ рдЙрд╕рд╛рд╕рд╛, рдкрд░рдВрддреБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рддреЗ рдХрджрд╛рдЪрд┐рдд рдЕрдзрд┐рдХ рдпреЛрдЧреНрдп рдЖрд╣реЗ рд╕рд╛рдордирд╛.

GitLab рдЖрдгрд┐ рдлрд╛рд╕реНрдЯрд▓реЗрди рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ

рд╕реАрдЖрдп рд░рдирд░ рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ

рд╣рд╛ рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА MacOS рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░ GitLab рд░рдирд░рдЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдХрдбреЗ рдЬрд╛рдК. рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рддреБрдореНрд╣реА рдлрдХреНрдд MacOS рд╡рд░ iOS рдЕреЕрдкреНрд╕ рдмрдирд╡реВ рд╢рдХрддрд╛. рдкрд░рдВрддреБ рд╕рд░реНрд╡рдХрд╛рд╣реА рдмрджрд▓реВ рд╢рдХрддреЗ, рдЖрдгрд┐ рдЖрдкрдг рдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдд рдкреНрд░рдЧрддреАрдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡рд╛ xcрдмрд┐рд▓реНрдб ╨╕ рдЪрд┐рдиреНрд╣, рдЖрдгрд┐ рдЖрдордЪреЗ рдЕрдВрддрд░реНрдЧрдд рдХрд╛рд░реНрдп gitlab-ce#57576.

рдзрд╛рд╡рдкрдЯреВ рд╕реЗрдЯ рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ. рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд╕рд░рдг рдХрд░рд╛ macOS рд╡рд░ GitLab рд░рдирд░ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрдирд╛.

рдиреЛрдВрдж. рдзрд╛рд╡рдкрдЯреВрдиреЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ shell. рдХрдВрдЯреЗрдирд░рджреНрд╡рд╛рд░реЗ рди рд╡рд╛рдкрд░рддрд╛ рдереЗрдЯ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА macOS рд╡рд░ iOS рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреБрдореНрд╣реА рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓ рддрд░ shell, рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдЖрдгрд┐ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд░рдирд░ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рдереЗрдЯ рдмрд┐рд▓реНрдб рд╣реЛрд╕реНрдЯрд╡рд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд╣реЗ рдХрдВрдЯреЗрдирд░рд╕рд╛рд░рдЦреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╛рд╣реА, рддреНрдпрд╛рдореБрд│реЗ рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реЗ рдмреНрд░рд╛рдЙрдЭ рдХрд░рд╛ рд╕реБрд░рдХреНрд╖рд╛ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрдореНрд╣рдгреВрди рддреБрдореНрд╣реА рдХрд╛рд╣реАрд╣реА рдЪреБрдХрд╡реВ рдирдХрд╛.

sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner start

рдНрдкрд▓ рдХреАрдЪреЗрди рдпрд╛ рд╣реЛрд╕реНрдЯрд╡рд░ Xcode рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреАрдЬрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢рд╛рд╕рд╣ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рд▓реЙрдЧ рдЗрди рдХрд░рдгреЗ рдЬреЛ рдмрд┐рд▓реНрдб рдЪрд╛рд▓рд╡реЗрд▓ рдЖрдгрд┐ рд╕реНрд╡рддрдГ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реЗрд▓. рдкреНрд░рдгрд╛рд▓реАрдиреЗ рдХреАрдЪреЗрди рдкреНрд░рд╡реЗрд╢рд╛рд╕рд╛рдареА рд╡рд┐рдЪрд╛рд░рд▓реНрдпрд╛рд╕, CI рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдиреЗрд╣рдореА рдЕрдиреБрдорддреА рджреНрдпрд╛ рдирд┐рд╡рдбрд╛. рддреЗ рдпрд╛рдкреБрдвреЗ рдХреАрдЪреЗрди рдорд╛рдЧрдгрд╛рд░ рдирд╛рд╣реАрдд рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╣рд┐рд▓реНрдпрд╛ рджреЛрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рдЬрд╛рдКрди рдкрд╛рд╣рдгреЗ рдпреЛрдЧреНрдп рдард░реЗрд▓. рдЕрдбрдЪрдг рдЕрд╢реА рдЖрд╣реЗ рдХреА рдНрдкрд▓ рдЖрдореНрд╣рд╛рд▓рд╛ рдСрдЯреЛ рдореЛрдб рд╡рд╛рдкрд░рдгреЗ рд╕реЛрдкреЗ рдХрд░рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдПрдХрджрд╛ рддреБрдореНрд╣реА рддреЗ рдЪрд╛рд▓реВ рдХреЗрд▓реЗ рдХреА рд╕рд░реНрд╡рдХрд╛рд╣реА рдареАрдХ рд╣реЛрдИрд▓.

рдлрд╛рд╕реНрдЯрд▓реЗрди рдЗрдирд┐рдЯ

рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдлрд╛рд╕реНрдЯрд▓реЗрди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЪрд╛рд▓рд╡рд╛ fastlane init. рдлрдХреНрдд рдЕрдиреБрд╕рд░рдг рдХрд░рд╛ рдлрд╛рд╕реНрдЯрд▓реЗрди рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрдирд╛, рд╡рд┐рд╢реЗрд╖рддрдГ рдмрджреНрджрд▓ рд╡рд┐рднрд╛рдЧрд╛рдд Gemfile, рдХрд╛рд░рдг рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд CI рдкрд╛рдЗрдкрд▓рд╛рдЗрдирджреНрд╡рд╛рд░реЗ рдЬрд▓рдж рдЖрдгрд┐ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡рддрд╛ рдпреЗрдгреНрдпрд╛рдЬреЛрдЧреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ, рдпрд╛ рдХрдорд╛рдВрдбреНрд╕ рдЪрд╛рд▓рд╡рд╛:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

рдлрд╛рд╕реНрдЯрд▓реЗрди рдореВрд▓рднреВрдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╛рдареА рд╡рд┐рдЪрд╛рд░реЗрд▓ рдЖрдгрд┐ рдирдВрддрд░ рддреАрди рдлрд╛рдЗрд▓реНрд╕рд╕рд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдПрдХ рдлрд╛рд╕реНрдЯрд▓реЗрди рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░реЗрд▓:

1. fastlane/Appfile

рдпреЗрдереЗ рдХрд╛рд╣реАрд╣реА рдХреНрд▓рд┐рд╖реНрдЯ рдирд╛рд╣реА. рдлрдХреНрдд рддреБрдордЪрд╛ рдНрдкрд▓ рдЖрдпрдбреА рдЖрдгрд┐ рдЕреЕрдк рдЖрдпрдбреА рдмрд░реЛрдмрд░ рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile рдмрд┐рд▓реНрдб рдЯрдкреНрдкреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ. рдЖрдореНрд╣реА рдлрд╛рд╕реНрдЯрд▓реЗрдирдЪреА рдЕрдиреЗрдХ рдЕрдВрдЧрднреВрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд╡рд╛рдкрд░рддреЛ, рддреНрдпрд╛рдореБрд│реЗ рдпреЗрдереЗрд╣реА рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдПрдХ рдУрд│ рддрдпрд╛рд░ рдХрд░рддреЛ рдЬреА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдорд┐рд│рд╡рддреЗ, рдЕрд╕реЗрдВрдмреНрд▓реА рдХрд░рддреЗ рдЖрдгрд┐ рдЯреЗрд╕реНрдЯрдлреНрд▓рд╛рдЗрдЯрд╡рд░ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ. рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдкрдг рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧреВ рд╢рдХрддрд╛. рдпрд╛ рд╕рд░реНрд╡ рдСрдкрд░реЗрд╢рдиреНрд╕ (get_certificates, get_provisioning_profile, gym ╨╕ upload_to_testflight) рдЖрдзреАрдЪ рдлрд╛рд╕реНрдЯрд▓реЗрдирдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд.

рдХреНрд░рд┐рдпрд╛ get_certificates ╨╕ get_provisioning_profile рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреАрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдгрд┐ рдЙрд╕рд╛рд╕рд╛. рддреБрдореНрд╣реА рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓ рддрд░ рд╕рд╛рдордирд╛ рдХрд┐рдВрд╡рд╛ рдХрд╛рд╣реАрд╣реА, рдмрджрд▓ рдХрд░рд╛.

default_platform(:ios)

platform :ios do
  desc "Build the application"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

рд╣реА рдПрдХ рдкрд░реНрдпрд╛рдпреА рдлрд╛рдЗрд▓ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдореА рдбрд┐рдлреЙрд▓реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╡рд░реНрддрдорд╛рди рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдЖрдЙрдЯрдкреБрдЯ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА рддреА рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рддрдпрд╛рд░ рдХреЗрд▓реА рдЖрд╣реЗ. рд╣реЗ CI рд╕реЛрдкреЗ рдХрд░рддреЗ. рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реНрдпрд╛рд╕, рдпрд╛рдмрджреНрджрд▓ рд╡рд╛рдЪрд╛ gym рдЖрдгрд┐ рддреНрдпрд╛рддреАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг.

https://docs.fastlane.tools/actions/gym/

рдЖрдордЪрд╛ .gitlab-ci.yml

рддрд░, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдкреНрд░рдХрд▓реНрдкрд╛рд╕рд╛рдареА рд╕реАрдЖрдп рдзрд╛рд╡рдгрд╛рд░рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЛрдд. рдЖрдкрд▓реНрдпрд╛рдд рдХрд╛рдп рдЖрд╣реЗ рддреЗ рдкрд╛рд╣реВрдпрд╛ .gitlab-ci.yml:

stages:
  - build

variables:
  LC_ALL: "en_US.UTF-8"
  LANG: "en_US.UTF-8"
  GIT_STRATEGY: clone

build:
  stage: build
  script:
    - bundle install
    - bundle exec fastlane flappybuild
  artifacts:
    paths:
    - ./FlappyBird.ipa

рдкреВрд░реНрдгрдкрдгреЗ рдмрдВрдж! рдЖрдореНрд╣реА рдлрд╛рд╕реНрдЯрд▓реЗрдирд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХрддреЗрдиреБрд╕рд╛рд░ UTF-8 рдлреЙрд░рдореЕрдЯ рд╕реЗрдЯ рдХреЗрд▓реЗ, рдзреЛрд░рдг рд╡рд╛рдкрд░рд╛ clone рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд╣ shell, рдЬреЗрдгреЗрдХрд░реВрди рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕реЗрдВрдмреНрд▓реАрд╕рд╛рдареА рд╕реНрд╡рдЪреНрдЫ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рдлрдХреНрдд рдХреЙрд▓ рдХрд░рд╛ flappybuild рдлрд╛рд╕реНрдЯрд▓реЗрди, рд╡рд░ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ. рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣рд╛рд▓рд╛ TestFlight рдордзреАрд▓ рдирд╡реАрдирддрдо рдЕрд╕реЗрдВрдмреНрд▓реАрдЪреА рдЕрд╕реЗрдВрдмреНрд▓реА, рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдЖрдгрд┐ рддреИрдирд╛рддреА рдорд┐рд│рддреЗ.

рдЖрдореНрд╣реА рдЖрд░реНрдЯрд┐рдлреЕрдХреНрдЯ рджреЗрдЦреАрд▓ рдорд┐рд│рд╡рддреЛ рдЖрдгрд┐ рдЕрд╕реЗрдВрдмреНрд▓реАрд╕рд╣ рдЬрддрди рдХрд░рддреЛ. рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рд╕реНрд╡рд░реВрдк .ipa рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХреЗрд▓реЗрд▓реЗ рдПрдЖрд░рдПрдо рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдЖрд╣реЗ рдЬреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдЪрд╛рд▓рдд рдирд╛рд╣реА. рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░рд╕рд╛рдареА рдЖрдЙрдЯрдкреБрдЯ рд╣рд╡реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреЗ рддрдпрд╛рд░ рдХрд░рдгрд╛рд░реЗ рдмрд┐рд▓реНрдб рдЯрд╛рд░реНрдЧреЗрдЯ рдЬреЛрдбрд╛ рдЖрдгрд┐ рдирдВрддрд░ рдЖрд░реНрдЯрд┐рдлреЕрдХреНрдЯ рдкрд╛рдердордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рд╛.

рдЗрддрд░ рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд▓

рдпреЗрдереЗ рджреЛрди рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд▓ рдЖрд╣реЗрдд рдЬреЗ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD ╨╕ FASTLANE_SESSION

рдлрд╛рд╕реНрдЯрд▓реЗрдирд╕рд╛рдареА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕреЕрдк рд╕реНрдЯреЛрдЕрд░рдордзреНрдпреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ TestFlight рд╡рд░ рдЕрдкрд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рдкрд╛рд╕рд╡рд░реНрдб рддрдпрд╛рд░ рдХрд░рд╛ рдЬреЛ CI рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдИрд▓. рддрдкрд╢реАрд▓ рдпреЗрдереЗ.

рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рджреНрд╡рд┐-рдШрдЯрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрд╕рд▓реНрдпрд╛рд╕, рдПрдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рддрдпрд╛рд░ рдХрд░рд╛ FASTLANE_SESSION (рддреЗрдереЗ рд╕реВрдЪрдирд╛).

FASTLANE_USER ╨╕ FASTLANE_PASSWORD

рдХреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдгрд┐ рдЙрд╕рд╛рд╕рд╛ рд╡рд┐рдирдВрддреА рдХреЗрд▓реНрдпрд╛рд╡рд░ рдЖрд░рдВрднрд┐рдХ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЖрдгрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдореНрд╣рдгрддрд╛рдд, рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ FASTLANE_USER ╨╕ FASTLANE_PASSWORD. рддрдкрд╢реАрд▓ рдпреЗрдереЗ. рддреБрдореНрд╣реА рд╡реЗрдЧрд│реА рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдкрджреНрдзрдд рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рд╣реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА.

рд╢реЗрд╡рдЯреА

рд╣реЗ рд╕рд░реНрд╡ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдорд╛рдЭреНрдпрд╛ рд╕рд╛рдзреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд.

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣реЗ рдЙрдкрдпреБрдХреНрдд рдард░рд▓реЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ GitLab рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ iOS рдмрд┐рд▓реНрдбрд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕ рдкреНрд░реЗрд░рд┐рдд рдХреЗрд▓реЗ. рдпреЗрдереЗ рдЖрдгрдЦреА рдПрдХ рдЖрд╣реЗ CI рдЯрд┐рдкрд╛ рдлрд╛рд╕реНрдЯрд▓реЗрдирд╕рд╛рдареА, рдлрдХреНрдд рдмрд╛рдмрддреАрдд. рддреБрдореНрд╣рд╛рд▓рд╛ рдХрджрд╛рдЪрд┐рдд рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓ CI_BUILD_ID (рд╡рд╛рдвреАрд╡ рдмрд┐рд▓реНрдбрд╕рд╛рдареА). рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдЖрд╡реГрддреНрддреА рд╡рд╛рдврд╡рд╛.

рдлрд╛рд╕реНрдЯрд▓реЗрдирдЪреЗ рдЖрдгрдЦреА рдПрдХ рдорд╕реНрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЕреЕрдк рд╕реНрдЯреЛрдЕрд░рд╕рд╛рдареА, рдЬреЗ рд╕реЗрдЯ рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ.

рддреБрдордЪреНрдпрд╛ рдЕрдиреБрднрд╡рд╛рдмрджреНрджрд▓ рдЖрдореНрд╣рд╛рд▓рд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд╕рд╛рдВрдЧрд╛ рдЖрдгрд┐ iOS рдЕреЕрдк рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрд╕рд╛рдареА GitLab рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдордЪреНрдпрд╛ рдХрд▓реНрдкрдирд╛ рд╢реЗрдЕрд░ рдХрд░рд╛.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛