рдлрд╛рд╕реНрдЯрд▓реЗрдирд╕рд╣ GitLab рдЕреЕрдк рд╕реНрдЯреЛрдЕрд░рд╡рд░ iOS рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ, рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ.
рдЖрдореНрд╣реА рдЕрд▓реАрдХрдбреЗ рд╣реЛрддреЗ
рдпреЗрдереЗ рдЖрдкрдг рдШреЗрдК
рдНрдкрд▓ рд╕реНрдЯреЛрдЕрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдмрджреНрджрд▓ рдХрд╛рд╣реА рд╢рдмреНрдж
рд╕рд░реНрд╡рдХрд╛рд╣реА рдПрдХрддреНрд░ рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рдЕреЕрдк рд╕реНрдЯреЛрдЕрд░ рдЕреЕрдк, рд╡рд┐рддрд░рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдЖрдгрд┐ рдкреНрд░реЛрд╡реНрд╣рд┐рдЬрдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓.
рдпреЗрдереЗ рд╕рд░реНрд╡рд╛рдд рдХрдареАрдг рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдЕреЕрдк рд╕реНрдЯреЛрдЕрд░рдордзреНрдпреЗ рд╕рд╛рдЗрдирд┐рдВрдЧрдЪреЗ рдЕрдзрд┐рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдгреЗ. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рдЖрдкрдг рд╣реЗ рд╕реНрд╡рддрдГрд╕рд╛рдареА рд╢реЛрдзреВрди рдХрд╛рдвреВ рд╢рдХрд╛рд▓. рддреБрдореНрд╣реА рдирд╡реАрди рдЕрд╕рд▓реНрдпрд╛рд╕, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдпреЛрдЧреНрдп рджрд┐рд╢реЗрдиреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрди, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдпреЗрдереЗ Apple рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдмрджреНрджрд▓ рдмреЛрд▓рдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ рддреЗ рд╕рддрдд рдмрджрд▓рдд рдЕрд╕рддрд╛рдд. рд╣реЗ рдкреЛрд╕реНрдЯ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░реЗрд▓.
рдорд╛рдЭреЗ рдЕреЕрдкреНрд╕
рддреБрдореНтАНрд╣рд╛рд▓рд╛ App Store Connect рдордзреНтАНрдпреЗ рдЕтАНреЕрдкрдЪреА рдЖрд╡рд╢реНтАНрдпрдХрддрд╛ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╛рдареА рдЖрдпрдбреА рдЕрд╕реЗрд▓ .xcodebuild
. рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЖрдгрд┐ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдпрдбреА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдЪрд╛рдЪрдгреА рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдб рдмрд┐рд▓реНрдб, рдХрд┐рдВрдордд рдЖрдгрд┐ рдЙрдкрд▓рдмреНрдзрддрд╛ рдЖрдгрд┐ рдЯреЗрд╕реНрдЯрдлреНрд▓рд╛рдЗрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдПрдХрддреНрд░ рдХрд░рддрд╛рдд. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЪрд╛рдЪрдгреА рдХрд░реВ рдирдХрд╛, рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд▓рд╣рд╛рди рдЧрдЯ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╕реЛрдкреЗ рд╕реЗрдЯрдЕрдк рдЕрд╕рд▓реНрдпрд╛рд╕ рдЖрдгрд┐ рдНрдкрд▓рдХрдбреВрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд╡рд╛рдирдЧреНрдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рд▓реНрдпрд╛рд╕ рдЦрд╛рдЬрдЧреА рдЪрд╛рдЪрдгреА рдкреБрд░реЗрд╢реА рдЖрд╣реЗ.
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░реЛрдлрд╛рдЗрд▓
рдЕреЕрдк рд╕реЗрдЯрдЕрдк рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рддреБрдореНрд╣рд╛рд▓рд╛ Apple рдбреЗрд╡реНрд╣рд▓рдкрд░ рдХрдиреНрд╕реЛрд▓рдЪреНрдпрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ, рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рдЖрдгрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╡рд┐рднрд╛рдЧрд╛рдд рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ iOS рд╡рд┐рддрд░рдг рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рд╣реА рд╕рд░реНрд╡ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдкреНрд░реЛрд╡реНрд╣рд┐рдЬрдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓рдордзреНрдпреЗ рдПрдХрддреНрд░ рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддрд╛рдд.
рдЬреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдкреНрд░рдорд╛рдгреАрдХреГрдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ рддреНрдпрд╛рдВрдирд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЕрдиреНрдпрдерд╛ рдкрд╛рдпрд▒реНрдпрд╛
рдЗрддрд░ рдкрд░реНрдпрд╛рдп
рдпрд╛ рд╕реЛрдкреНрдпрд╛ рдкрджреНрдзрддреАрд╢рд┐рд╡рд╛рдп, рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдЖрдгрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЗрддрд░ рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд. рддреНрдпрд╛рдореБрд│реЗ, рддреБрдореНрд╣реА рд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдХрд╛рдо рдХреЗрд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдЬреБрд│рд╡реВрди рдШреНрдпрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ .xcodebuild
, рдЬреЗ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реНрд╕рдХрдбреЗ рдирд┐рд░реНрджреЗрд╢ рдХрд░реЗрд▓ рдЖрдгрд┐ рдЬреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдЦрд╛рд▓реА рдзрд╛рд╡рдкрдЯреВ рдЪрд╛рд▓рдд рдЖрд╣реЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдмрд┐рд▓реНрдб рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдХреАрдЪреЗрди рдЙрдкрд▓рдмреНрдз рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдбрд┐рдЬрд┐рдЯрд▓ рд╕реНрд╡рд╛рдХреНрд╖рд░реАрд╕рд╛рдареА рдЖрдореНрд╣реА рдлрд╛рд╕реНрдЯрд▓реЗрди рд╡рд╛рдкрд░рддреЛ рдЖрдгрд┐ рдХрд╛рд╣реА рд╕рдорд╕реНрдпрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреНрдпрд╛рдВрдЪреЗ рддрдкрд╢реАрд▓ рдкрд╣рд╛
рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд рдореА рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд╛рдкрд░рдд рдЖрд╣реЗ
GitLab рдЖрдгрд┐ рдлрд╛рд╕реНрдЯрд▓реЗрди рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ
рд╕реАрдЖрдп рд░рдирд░ рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ
рд╣рд╛ рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА MacOS рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░ GitLab рд░рдирд░рдЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдХрдбреЗ рдЬрд╛рдК. рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рддреБрдореНрд╣реА рдлрдХреНрдд MacOS рд╡рд░ iOS рдЕреЕрдкреНрд╕ рдмрдирд╡реВ рд╢рдХрддрд╛. рдкрд░рдВрддреБ рд╕рд░реНрд╡рдХрд╛рд╣реА рдмрджрд▓реВ рд╢рдХрддреЗ, рдЖрдгрд┐ рдЖрдкрдг рдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдд рдкреНрд░рдЧрддреАрдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡рд╛
рдзрд╛рд╡рдкрдЯреВ рд╕реЗрдЯ рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ. рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд╕рд░рдг рдХрд░рд╛
рдиреЛрдВрдж. рдзрд╛рд╡рдкрдЯреВрдиреЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ 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
. рдлрдХреНрдд рдЕрдиреБрд╕рд░рдг рдХрд░рд╛
рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ, рдпрд╛ рдХрдорд╛рдВрдбреНрд╕ рдЪрд╛рд▓рд╡рд╛:
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
рдкреВрд░реНрдгрдкрдгреЗ рдмрдВрдж! 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_BUILD_ID
(рд╡рд╛рдвреАрд╡ рдмрд┐рд▓реНрдбрд╕рд╛рдареА).
рдлрд╛рд╕реНрдЯрд▓реЗрдирдЪреЗ рдЖрдгрдЦреА рдПрдХ рдорд╕реНрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ
рддреБрдордЪреНрдпрд╛ рдЕрдиреБрднрд╡рд╛рдмрджреНрджрд▓ рдЖрдореНрд╣рд╛рд▓рд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд╕рд╛рдВрдЧрд╛ рдЖрдгрд┐ iOS рдЕреЕрдк рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрд╕рд╛рдареА GitLab рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдордЪреНрдпрд╛ рдХрд▓реНрдкрдирд╛ рд╢реЗрдЕрд░ рдХрд░рд╛.
рд╕реНрддреНрд░реЛрдд: www.habr.com