рд╡реЗрдпрд░рдлрд╝ рдмрд┐рд▓реНрдбрд░ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА-рдЖрдзрд╛рд░рд┐рдд рдЯреИрдЧрд┐рдВрдЧ: рдпрд╣ рдХреНрдпреЛрдВ рдФрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

рд╡реЗрдпрд░рдлрд╝ рдмрд┐рд▓реНрдбрд░ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА-рдЖрдзрд╛рд░рд┐рдд рдЯреИрдЧрд┐рдВрдЧ: рдпрд╣ рдХреНрдпреЛрдВ рдФрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

Werf рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд GitOps CLI рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ v1.1 рдЫрд╡рд┐ рд╕рдВрдЧреНрд░рд╛рд╣рдХ рдореЗрдВ рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдкреЗрд╢ рдХреА рдЧрдИ: рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЯреИрдЧ рдХрд░рдирд╛ рдпрд╛ рд╕рд╛рдордЧреНрд░реА-рдЖрдзрд╛рд░рд┐рдд рдЯреИрдЧрд┐рдВрдЧ. рдЕрдм рддрдХ, рд╡реЗрдпрд░рдлрд╝ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреИрдЧрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ Git рдЯреИрдЧ, Git рд╢рд╛рдЦрд╛ рдпрд╛ Git рдХрдорд┐рдЯ рджреНрд╡рд╛рд░рд╛ Docker рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЯреИрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рдерд╛ред рд▓реЗрдХрд┐рди рдЗрди рд╕рднреА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВ рдЬреЛ рдирдИ рдЯреИрдЧрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдП рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдФрд░ рдпрд╣ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред

рдПрдХ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛

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

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

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

Git рд╢рд╛рдЦрд╛ рдФрд░ Git рдЯреИрдЧ рджреНрд╡рд╛рд░рд╛ рдЯреИрдЧрд┐рдВрдЧ

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рдмрд╕реЗ рдЖрдо рдЯреИрдЧрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЯреИрдЧ-рдпрд╛-рд╢рд╛рдЦрд╛. Git рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдЦрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╢рд╛рдЦрд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЫрд╡рд┐ рд╣реЛрддреА рд╣реИред Git рдЯреИрдЧ рдХреЗ рд▓рд┐рдП, рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЯреИрдЧ рдирд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬрдм рдПрдХ рдирдпрд╛ Git рдЯреИрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - Docker рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ Docker рдЯреИрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:

  • myregistry.org/myproject/frontend:v1.1.10
  • myregistry.org/myproject/myservice1:v1.1.10
  • myregistry.org/myproject/myservice2:v1.1.10
  • myregistry.org/myproject/myservice3:v1.1.10
  • myregistry.org/myproject/myservice4:v1.1.10
  • myregistry.org/myproject/myservice5:v1.1.10
  • myregistry.org/myproject/database:v1.1.10

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

рд╕рдорд╕реНрдпрд╛: рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдм, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЫрд╡рд┐ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд┐рдЫрд▓реЗ рд░реЛрд▓рдЖрдЙрдЯ (рдЧрд┐рдЯ рдЯреИрдЧ) рдХреЗ рдмрд╛рдж рд╕реЗ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдбреЙрдХрд░ рдЯреИрдЧ, рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЕрдзрд┐рдХ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдХреБрдЫ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╕рдВрднрд╡ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рдкреБрдирд░рд╛рд░рдВрдн рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рдерд╛ред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд░реНрддрдорд╛рди рдЯреИрдЧрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдШреЗрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЗрди рдХрдИ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реЛрд▓рдЖрдЙрдЯ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдРрд╕реА рдпреЛрдЬрдирд╛ рдЕрддрд┐рднрд╛рд░рд┐рдд рдФрд░ рдЬрдЯрд┐рд▓ рд╕рд╛рдмрд┐рдд рд╣реЛрддреА рд╣реИред рдХрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдбреЙрдХрд░ рдЯреИрдЧ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреБрдирд░рд╛рд░рдВрдн рди рд╣реЛред

Git рдкреНрд░рддрд┐рдмрджреНрдз рджреНрд╡рд╛рд░рд╛ рдЯреИрдЧрд┐рдВрдЧ

рд╡реЗрдпрд░рдлрд╝ рдХреЗ рдкрд╛рд╕ Git рдХрдорд┐рдЯ рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рдЯреИрдЧрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рднреА рд╣реИред

Git-рдХрдорд┐рдЯ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдФрд░ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдкрд╛рджрди рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЙрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЯреИрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, Git рдХрдорд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдЯреИрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд╣реА рдиреБрдХрд╕рд╛рди рд╣реИрдВ рдЬреЛ Git рд╢рд╛рдЦрд╛рдУрдВ рдпрд╛ Git рдЯреИрдЧ рджреНрд╡рд╛рд░рд╛ рдЯреИрдЧ рдХрд░рдиреЗ рдХреЗ рд╣реИрдВ:

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

Git рд╢рд╛рдЦрд╛ рдХрд╛ рдирд╛рдо рдЯреИрдЧ рдХрд░рдиреЗ рд╕реЗ рдЫрд╡рд┐ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

Git рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЯреИрдЧрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╢рд╛рдЦрд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдЯреИрдЧ рдХрд░рдирд╛ рддрдм рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЙрд╕ рд╢рд╛рдЦрд╛ рдкрд░ рдХрд┐рдП рдЧрдП рдХрдорд┐рдЯ рдХрд╛рд▓рд╛рдиреБрдХреНрд░рдорд┐рдХ рдХреНрд░рдо рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдХреЗ рдмреАрдЪ рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХреНрд░рдорд┐рдХ рдзрдХреНрдХрд╛ рдХреЗ рд╕рд╛рде, рдкреБрд░рд╛рдиреА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЛ рдирдП рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЫрд╡рд┐ рдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг Git рд╢рд╛рдЦрд╛ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдП рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрдЧрд╛ред рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕реАрдЖрдИ/рд╕реАрдбреА рдкреНрд░рдгрд╛рд▓реА рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрд┐рдЯрд▓реИрдм рд╕реАрдЖрдИ рдореЗрдВ рдмрд╛рдж рдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ рдФрд░ рдРрд╕реА рдореВрд▓рднреВрдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рдордЧреНрд░реА-рдЖрдзрд╛рд░рд┐рдд рдЯреИрдЧрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?

рддреЛ, рд╕рд╛рдордЧреНрд░реА-рдЖрдзрд╛рд░рд┐рдд рдЯреИрдЧрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ - рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЯреИрдЧ рдХрд░рдирд╛ред

рдбреЙрдХрд░ рдЯреИрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, Git рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡ (Git рдмреНрд░рд╛рдВрдЪ, Git рдЯреИрдЧ...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдПрдХ рдЪреЗрдХрд╕рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

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

рдРрд╕рд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЯреИрдЧ рддрдерд╛рдХрдерд┐рдд рд╣реИ рдЫрд╡рд┐ рдордВрдЪ рд╣рд╕реНрддрд╛рдХреНрд╖рд░.

рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдореЗрдВ рдЪрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ: from, before-install, git-archive, install, imports-after-install, before-setup, ... git-latest-patch рд╡рдЧреИрд░рд╣ред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ - рдордВрдЪ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдордВрдЪ рд╣рд╕реНрддрд╛рдХреНрд╖рд░).

рдЗрди рдЪрд░рдгреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдХреЛ рдЗрди рдЪрд░рдгреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рддрдерд╛рдХрдерд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЪрд░рдг рд╣рд╕реНрддрд╛рдХреНрд╖рд░, - рдЬреЛ рдЫрд╡рд┐ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП werf.yaml рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдЧрд╛ рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдПрдХ рдбреЙрдХрд░ рдЯреИрдЧ рд╣реЛрдЧрд╛ред

рдордВрдЪ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ:

  • рдЦрд╛рд▓реА Git рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рд░реЛрдзреАред
  • Git рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рд░реЛрдзреА рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ рдЬреЛ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред
  • рдХрд┐рд╕реА рд╢рд╛рдЦрд╛ рдХреЗ рдкреБрд░рд╛рдиреЗ Git рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдкрд░ рдЫрд╡рд┐ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдУрд╡рд░рд╣рд╛рд▓ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

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

рд╡реЗрдпрд░рдлрд╝ рдореЗрдВ рдХреИрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХрдорд╛рдВрдб рдореЗрдВ рдЕрдм рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИ werf publish: --tag-by-stages-signature=true|false

рд╕реАрдЖрдИ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рдЯреИрдЧрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ werf ci-env. рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ werf ci-env --tagging-strategy=tag-or-branch. рдЕрдм, рдпрджрд┐ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ werf ci-env --tagging-strategy=stages-signature рдпрд╛ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рдХрд░реЗрдВ, рд╡реЗрдпрд░рдлрд╝ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЯреИрдЧрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ stages-signature. рдЯреАрдо werf ci-env рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЭрдВрдбреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛ werf build-and-publish (рдпрд╛ werf publish), рдЗрд╕рд▓рд┐рдП рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрджреЗрд╢:

werf publish --stages-storage :local --images-repo registry.hello.com/web/core/system --tag-by-stages-signature

...рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЫрд╡рд┐рдпрд╛рдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

  • registry.hello.com/web/core/system/backend:4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d
  • registry.hello.com/web/core/system/frontend:f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6

рдпрд╣рд╛рдВ 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d рдЫрд╡рд┐ рдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИ backendрдФрд░ f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - рдЫрд╡рд┐ рдЪрд░рдгреЛрдВ рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ frontend.

рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп werf_container_image ╨╕ werf_container_env рд╣реЗрд▓реНрдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдпреЗ рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдЫрд╡рд┐ рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗред

рд╕реАрдЖрдИ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдиреНрдпрд╛рд╕:

type multiwerf && source <(multiwerf use 1.1 beta)
type werf && source <(werf ci-env gitlab)
werf build-and-publish|deploy

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ:

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░

  • рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк werf publish --tag-by-stages-signature=true|false.
  • рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк рдорд╛рди werf ci-env --tagging-strategy=stages-signature|tag-or-branch (рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдЧрд╛ stages-signature).
  • рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ Git рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдЯреИрдЧрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ (WERF_TAG_GIT_COMMIT рдпрд╛ рд╡рд┐рдХрд▓реНрдк werf publish --tag-git-commit COMMIT), рдлрд┐рд░ рдЯреИрдЧрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдЪрд░рдг-рд╣рд╕реНрддрд╛рдХреНрд╖рд░.
  • рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рддреБрд░рдВрдд рдирдИ рдЯреИрдЧрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
  • рд╡реЗрдпрд░рдлрд╝ 1.1 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдирдИ рдЯреИрдЧрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреА рдЯреИрдЧ-рдпрд╛-рд╢рд╛рдЦрд╛ рдЕрднреА рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИ.

рд╕рд╛рдордЧреНрд░реА-рдЖрдзрд╛рд░рд┐рдд рдЯреИрдЧрд┐рдВрдЧ рд▓реЗрдЦ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреА рд╣реИ:

  • рдЦрд╛рд▓реА Git рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдЯреИрдЧ рдирд╛рдо рдкреНрд░рддрд┐рд░реЛрдзред
  • рдбреЙрдХрд░ рдЯреИрдЧ рдирд╛рдо рдХрд╛ Git рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рд░реЛрдз рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИред
  • Git рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ Git рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдкрд░ рдЫрд╡рд┐ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдУрд╡рд░рд╣рд╛рд▓ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ! рдФрд░ рд╣рдорд╕реЗ рдорд┐рд▓рдиреЗ рдЖрдирд╛ рди рднреВрд▓реЗрдВ GitHubрдХреЛрдИ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рдпрд╛ рдореМрдЬреВрджрд╛ рдореБрджреНрджрд╛ рдвреВрдВрдврдирд╛, рдкреНрд▓рд╕ рджреЗрдирд╛, рдкреАрдЖрд░ рдмрдирд╛рдирд╛, рдпрд╛ рдмрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рджреЗрдЦрдирд╛ред

рдкреБрдирд╢реНрдЪ

рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдкрдврд╝реЗрдВ:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ