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

рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдиреЗ GitOps рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдмрд╛рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред Werf, рдФрд░ рдЗрд╕ рдмрд╛рд░ рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ - werf.io (рдЗрд╕рдХрд╛ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИ en.werf.io). рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдереИрддрд┐рдХ рд╕рд╛рдЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрд╕реЗрдВрдмрд▓реА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

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

рдкрд░рд┐рдЪрдп: рд╕рд╛рдЗрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ

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

  • рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдП рдмрд┐рдирд╛ рдирдП рд╡реЗрдпрд░рдлрд╝ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╡реЗрдпрд░рдлрд╝ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ;
  • рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдХрд╛рдлреА рдЧрд╣рди рд╡рд┐рдХрд╛рд╕ рд╣реБрдЖ рд╣реИ: рдирдП рд╕рдВрд╕реНрдХрд░рдг рджрд┐рди рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ;
  • рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдореИрдиреНрдпреБрдЕрд▓ рд╕рдВрдЪрд╛рд▓рди рдХрдо рд╕реЗ рдХрдо рдХрдард┐рди рд╣реИ;
  • рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдЕрд░реНрдердкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рддреА рд╣реИ рд╡рд░реНрдЬрд╝рдирд┐рдВрдЧ, 5 рд╕реНрдерд┐рд░рддрд╛ рдЪреИрдирд▓реЛрдВ рдХреЗ рд╕рд╛рдеред рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд┐рд░рддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдХреНрд░рдорд┐рдХ рдорд╛рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ: рдЕрд▓реНрдлрд╛ рд╕реЗ рд░реЙрдХ-рд╕реЙрд▓рд┐рдб рддрдХ;
  • рд╕рд╛рдЗрдЯ рдореЗрдВ рдПрдХ рд░реВрд╕реА-рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬреЛ рдореБрдЦреНрдп (рдпрд╛рдиреА, рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛) рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ "рдЬреАрд╡рд┐рдд рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ" (рдпрд╛рдиреА, рдЬрд┐рд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдЕрджреНрдпрддрди рдХреА рдЬрд╛рддреА рд╣реИ)ред

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

рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдЪрдпрди рдореЗрдиреВ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдореЗрдВ рд╡реЗрдпрд░рдлрд╝ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрддреЗ рд╕реЗ werf.io/documentation рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реНрдерд┐рд░ рдЪреИрдирд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЦреБрд▓рддрд╛ рд╣реИ - рдЗрд╕реЗ рдЦреЛрдЬ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рднреА рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрддреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, werf.io/v1.0-beta/documentation рдмреАрдЯрд╛ рд░рд┐рд▓реАрдЬрд╝ 1.0 рдХреЗ рд▓рд┐рдП)ред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╕рд╛рдЗрдЯ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:

  1. рд░реВрдЯ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЦреБрд▓рддрд╛ рд╣реИ),
  2. рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдХреНрд░рд┐рдп рдЕрджреНрдпрддрди рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, werf.io/v1.0-рдмреАрдЯрд╛).

рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ Jekyllрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЪрд▓рд╛рдХрд░ /docs рд╡реЗрдпрд░рдлрд╝ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд╛рдВрдб (jekyll build), рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ Git рдЯреИрдЧ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред

рдХреЗрд╡рд▓ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдмрд╛рдХреА рд╣реИ:

  • рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реНрд╡рдпрдВ (рд╡реЗрд░реНрдлрд╝) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • CI/CD рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ GitLab CI рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ;
  • рдФрд░ рдпрд╣ рд╕рдм, рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред

рдХрд╛рд░реНрдп

рдЖрдЗрдП рдЕрдм рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рд╡рд░реНрдгрд┐рдд рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ:

  1. рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди рдЪреИрдирд▓ рдкрд░ рд╡реЗрдпрд░рдлрд╝ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╕рд╛рдЗрдЯ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП.
  2. рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрднреА-рдХрднреА рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд╕рд╛рдЗрдЯ рдХреЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВ.

рд╕рдВрдмрдВрдзрд┐рдд Git рдЯреИрдЧ рд╕реЗ рдХрд┐рд╕реА рднреА рдЪреИрдирд▓ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╕рд╛рдЗрдЯ рдХреЛ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдорд┐рд▓реЗрдВрдЧреА:

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

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ.

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЪреБрдирдирд╛

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

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

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

рд╡реЗрдпрд░рдлрд╝ рдмрдирд╛рдо рдЧрд┐рдЯ рдХреНрд▓реЛрди рдФрд░ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ

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

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

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

рд╣рдо werf.yaml рд▓рд┐рдЦрддреЗ рд╣реИрдВ

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

рд╡реЗрдпрд░рдлрд╝ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдЬрд╛рдУ рдЖрдкрдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ (werf.yaml), рдФрд░ рдпрд╣ рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рддреБрд░рдВрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП!) рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рджреЛ рдЫрд╡рд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ: werf-doc ╨╕ werf-dev рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрдХрд┐рдЯреЛрдВ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред

рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрдирдХреА рд░рдЪрдирд╛ рд╣реИ:

  • RELEASES - рд░рд┐рд▓реАрдЬрд╝ рдХреА рд╕реВрдЪреА рдФрд░ рд╡реЗрдпрд░рдлрд╝ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐, рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реНрдерд╛рди-рдкреГрдердХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ <╨Э╨Ю╨Ь╨Х╨а_╨а╨Х╨Ы╨Ш╨Ч╨Р>%<╨Э╨Ю╨Ь╨Х╨а_╨Т╨Х╨а╨б╨Ш╨Ш>. рдЙрджрд╛рд╣рд░рдг: 1.0%v1.0.4-beta.20
  • CHANNELS - рдЪреИрдирд▓реЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рд╡реЗрдпрд░рдлрд╝ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐, рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реНрдерд╛рди-рдкреГрдердХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ <╨Ъ╨Р╨Э╨Р╨Ы>%<╨Э╨Ю╨Ь╨Х╨а_╨Т╨Х╨а╨б╨Ш╨Ш>. рдЙрджрд╛рд╣рд░рдг: 1.0-beta%v1.0.4-beta.20 1.0-alpha%v1.0.5-alpha.22
  • ROOT_VERSION - рд╡реЗрдпрд░рдлрд╝ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рд╛рдЗрдЯ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрдЪреНрдЪрддрдо рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг: v1.0.4-beta.20
  • REVIEW_SHA - рд╕рдореАрдХреНрд╖рд╛ рд╕рдорд┐рддрд┐ рдХрд╛ рд╣реИрд╢ рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпреЗ рд╡реЗрд░рд┐рдПрдмрд▓ GitLab CI рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рднрд░реЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдиреАрдЪреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ werf.yaml рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдкрд░ рдЬрд╛рдПрдВ, рдЙрдиреНрд╣реЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

{{ $_ := set . "WerfVersions" (cat (env "CHANNELS") (env "RELEASES") | splitList " ") }}
{{ $Root := . }}
{{ $_ := set . "WerfRootVersion" (env "ROOT_VERSION") }}
{{ $_ := set . "WerfReviewCommit" (env "REVIEW_SHA") }}

рд╕рд╛рдЗрдЯ рдХреЗ рд╕реНрдереИрддрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЖрдо рддреМрд░ рдкрд░ рдЙрди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рд░реВрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдбреЗрд╡ рд╕рд░реНрдХрд┐рдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ define - рдмрд╛рдж рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП include. рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ:

  • Version - рдЙрддреНрдкрдиреНрди рд╕рдВрд╕реНрдХрд░рдг (рдЯреИрдЧ рдирд╛рдо);
  • Channel - рдЕрджреНрдпрддрди рдЪреИрдирд▓ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ;
  • Commit - рдХрдорд┐рдЯ рд╣реИрд╢, рдпрджрд┐ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рд╕рдореАрдХреНрд╖рд╛ рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
  • рдкреНрд░рд╕рдВрдЧред

рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рд╡рд░рдг

{{- define "doc_artifact" -}}
{{- $Root := index . "Root" -}}
artifact: doc-{{ .Channel }}
from: jekyll/builder:3
mount:
- from: build_dir
  to: /usr/local/bundle
ansible:
  install:
  - shell: |
      export PATH=/usr/jekyll/bin/:$PATH
  - name: "Install Dependencies"
    shell: bundle install
    args:
      executable: /bin/bash
      chdir: /app/docs
  beforeSetup:
{{- if .Commit }}
  - shell: echo "Review SHA - {{ .Commit }}."
{{- end }}
{{- if eq .Channel "root" }}
  - name: "releases.yml HASH: {{ $Root.Files.Get "releases.yml" | sha256sum }}"
    copy:
      content: |
{{ $Root.Files.Get "releases.yml" | indent 8 }}
      dest:  /app/docs/_data/releases.yml
{{- else }}
  - file:
      path: /app/docs/_data/releases.yml
      state: touch
{{- end }}
  - file:
      path: "{{`{{ item }}`}}"
      state: directory
      mode: 0777
    with_items:
    - /app/main_site/
    - /app/ru_site/
  - file:
      dest: /app/docs/pages_ru/cli
      state: link
      src: /app/docs/pages/cli
  - shell: |
      echo -e "werfVersion: {{ .Version }}nwerfChannel: {{ .Channel }}" > /tmp/_config_additional.yml
      export PATH=/usr/jekyll/bin/:$PATH
{{- if and (ne .Version "review") (ne .Channel "root") }}
{{- $_ := set . "BaseURL" ( printf "v%s" .Channel ) }}
{{- else if ne .Channel "root" }}
{{- $_ := set . "BaseURL" .Channel }}
{{- end }}
      jekyll build -s /app/docs  -d /app/_main_site/{{ if .BaseURL }} --baseurl /{{ .BaseURL }}{{ end }} --config /app/docs/_config.yml,/tmp/_config_additional.yml
      jekyll build -s /app/docs  -d /app/_ru_site/{{ if .BaseURL }} --baseurl /{{ .BaseURL }}{{ end }} --config /app/docs/_config.yml,/app/docs/_config_ru.yml,/tmp/_config_additional.yml
    args:
      executable: /bin/bash
      chdir: /app/docs
git:
- url: https://github.com/flant/werf.git
  to: /app/
  owner: jekyll
  group: jekyll
{{- if .Commit }}
  commit: {{ .Commit }}
{{- else }}
  tag: {{ .Version }}
{{- end }}
  stageDependencies:
    install: ['docs/Gemfile','docs/Gemfile.lock']
    beforeSetup: '**/*'
  includePaths: 'docs'
  excludePaths: '**/*.sh'
{{- end }}

рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХрд╛ рдирд╛рдо рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреИрдирд▓ рдХрд╛ рдирд╛рдо (рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди) рдЬреЛрдбрд╝рдХрд░ .Channel) рдХрд▓рд╛рдХреГрддрд┐ рдХреЗ рдирд╛рдо рдХреЗ рдкреНрд░рддреНрдпрдп рдХреЗ рд░реВрдк рдореЗрдВ: artifact: doc-{{ .Channel }}. рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрдиреНрд╣реАрдВ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

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

рдЖрдкрдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реЛрдЧрд╛ releases.yml рдПрдХ YAML рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд░рд┐рд▓реАрдЬрд╝ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ github.com (рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдПрдХ рдХрд▓рд╛рдХреГрддрд┐)ред рд╕рд╛рдЗрдЯ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХреЗрд╡рд▓ рдПрдХ рдХрд▓рд╛рдХреГрддрд┐ рдХрд╛ рдкреБрдирдГ рд╕рдВрдпреЛрдЬрди тАФ рд╕рд╛рдЗрдЯ рдХреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдПрдХ рдХрд▓рд╛рдХреГрддрд┐ (рдЕрдиреНрдп рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

рдЗрд╕реЗ рд╕рд╢рд░реНрдд рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ if рдЬрд╛рдУ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдФрд░ рдбрд┐рдЬрд╛рдЗрди {{ $Root.Files.Get "releases.yml" | sha256sum }} рдордВрдЪ рдкрд░ рдЪрд░рдгреЛрдВ. рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд░реВрдЯ рд╕рдВрд╕реНрдХрд░рдг (рд╡реЗрд░рд┐рдПрдмрд▓) рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп .Channel рд╣реИ root) рдлрд╝рд╛рдЗрд▓ рд╣реИрд╢ releases.yml рдкреВрд░реЗ рдЪрд░рдг рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ Ansible рдХрд╛рд░реНрдп (рдкреИрд░рд╛рдореАрдЯрд░) рдХреЗ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ name). рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрджрд▓рддреЗ рд╕рдордп рд╕рд╛рдордЧреНрд░реА рдлрд╝рд╛рдЗрд▓ releases.yml рд╕рдВрдмрдВрдзрд┐рдд рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдЪреИрдирд▓реЛрдВ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд░ рдПрдХ рд▓реВрдк рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ .WerfVersions ╨▓ werf.yaml:

{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ dict "Version" $VersionsDict._1 "Channel" $VersionsDict._0 "Root" $Root | include "doc_artifact" }}
---
{{ end -}}

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

рдЗрд╕реА рддрд░рд╣, рд▓реЗрдХрд┐рди рд▓реВрдк рдХреЗ рдмрд┐рдирд╛, рд╣рдо "рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ" рдХреЗ рд▓рд┐рдП рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ: рд░реВрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП:

{{ dict "Version" .WerfRootVersion "Channel" "root" "Root" $Root  | include "doc_artifact" }}
---
{{- if .WerfReviewCommit }}
{{ dict "Version" "review" "Channel" "review" "Commit" .WerfReviewCommit "Root" $Root  | include "doc_artifact" }}
{{- end }}

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдореАрдХреНрд╖рд╛ рд╕рдорд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХреЗрд╡рд▓ рддрднреА рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рд╣реЛ .WerfReviewCommit.

рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рддреИрдпрд╛рд░ рд╣реИрдВ - рдЖрдпрд╛рдд рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ!

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

рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рд╡реЗрдпрд░рдлрд╝-рдбреЙрдХ рдХрд╛ рд╡рд┐рд╡рд░рдг

image: werf-doc
from: nginx:stable-alpine
ansible:
  setup:
  - name: "Setup /etc/nginx/nginx.conf"
    copy:
      content: |
{{ .Files.Get ".werf/nginx.conf" | indent 8 }}
      dest: /etc/nginx/nginx.conf
  - file:
      path: "{{`{{ item }}`}}"
      state: directory
      mode: 0777
    with_items:
    - /app/main_site/assets
    - /app/ru_site/assets
import:
- artifact: doc-root
  add: /app/_main_site
  to: /app/main_site
  before: setup
- artifact: doc-root
  add: /app/_ru_site
  to: /app/ru_site
  before: setup
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ $Channel := $VersionsDict._0 -}}
{{ $Version := $VersionsDict._1 -}}
- artifact: doc-{{ $Channel }}
  add: /app/_main_site
  to: /app/main_site/v{{ $Channel }}
  before: setup
{{ end -}}
{{ range .WerfVersions -}}
{{ $VersionsDict := splitn "%" 2 . -}}
{{ $Channel := $VersionsDict._0 -}}
{{ $Version := $VersionsDict._1 -}}
- artifact: doc-{{ $Channel }}
  add: /app/_ru_site
  to: /app/ru_site/v{{ $Channel }}
  before: setup
{{ end -}}

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

image: werf-dev
...
import:
- artifact: doc-root
  add: /app/_main_site
  to: /app/main_site
  before: setup
- artifact: doc-root
  add: /app/_ru_site
  to: /app/ru_site
  before: setup
{{- if .WerfReviewCommit  }}
- artifact: doc-review
  add: /app/_main_site
  to: /app/main_site/review
  before: setup
- artifact: doc-review
  add: /app/_ru_site
  to: /app/ru_site/review
  before: setup
{{- end }}

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХреЗрд╡рд▓ рддрднреА рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╕реЗрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ REVIEW_SHA. рдпрджрд┐ рдХреЛрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд╣реАрдВ рд╣реИ рддреЛ рд╡реЗрдпрд░рдлрд╝-рдбреЗрд╡ рдЫрд╡рд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ REVIEW_SHA, рд▓реЗрдХрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдлрд╛рдИ рд╡реЗрдпрд░рдлрд╝ рдореЗрдВ рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рд╡реЗрдпрд░рдлрд╝-рдбреЗрд╡ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд╣рдо рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ рд░реВрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ (рдпрд╣ рд╡реИрд╕реЗ рднреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдЕрд╕реЗрдВрдмрд▓реА рддреИрдпрд╛рд░ рд╣реИ! рдЖрдЗрдП рд╕реАрдЖрдИ/рд╕реАрдбреА рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

GitLab CI рдореЗрдВ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

рдмрд┐рд▓реНрдб рдЪрд▓рд╛рддреЗ рд╕рдордп рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ werf.yaml. рдпрд╣ REVIEW_SHA рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо GitHub рд╣реБрдХ рд╕реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред

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

  • рдлрд╝рд╛рдЗрд▓ releases.yml рд░рд┐рд▓реАрдЬрд╝ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде,
  • рдлрд╝рд╛рдЗрд▓ common_envs.sh, рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА generate_artifacts рдЖрдк рд╣рдорд╛рд░реЗ рдореЗрдВ рдкрд╛рдПрдВрдЧреЗ рдЙрджрд╛рд╣рд░рдг рд╕рд╣рд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА. рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕реНрд╡рдпрдВ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ common_envs.sh рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ werf рдХрд╛ рдХрд╛рд░реНрдп рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

export RELEASES='1.0%v1.0.6-4'
export CHANNELS='1.0-alpha%v1.0.7-1 1.0-beta%v1.0.7-1 1.0-ea%v1.0.6-4 1.0-stable%v1.0.6-4 1.0-rock-solid%v1.0.6-4'
export ROOT_VERSION='v1.0.6-4'

рдЖрдк рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ source.

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

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

рдпрджрд┐ рдкреАрдврд╝реА werf.yaml рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ), рддреЛ рдРрд╕реЗ рдбреЗрдЯрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рднреАрддрд░ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдпрджрд┐ рдмрд╛рд╣рд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдХреНрд╕рд░ рдмрджрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВред

рд╣рдо рдХрд░реЗрдВрдЧреЗ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ GitLab рдореЗрдВ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ (рдкреВрд░реНрд╡ рдирд┐рд░реНрдорд╛рдг) рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлреЙрд░реНрдо рдореЗрдВ рдЖрдЧреЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВ GitLab рд╕реАрдЖрдИ рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп. рдпрд╣ рдЖрдкрдХреЛ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдиреМрдХрд░рд┐рдпреЛрдВ (рдирд┐рд░реНрдорд╛рдг, рддреИрдирд╛рддреА, рд╕рдлрд╛рдИ) рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ werf.yaml.

рдордВрдЪ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреВрд░реНрд╡ рдирд┐рд░реНрдорд╛рдг рдлрд╝рд╛рдЗрд▓ .gitlab-ci.yml:

Prebuild:
  stage: prebuild
  script:
    - bash ./generate_artifacts 1> common_envs.sh
    - cat ./common_envs.sh
  artifacts:
    paths:
      - releases.yml
      - common_envs.sh
    expire_in: 2 week

рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдореЗрдВ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдорд╛рдирдХ GitLab CI рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рддреИрдирд╛рддреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдмрд┐рд▓реНрдб рдФрд░ рддреИрдирд╛рддреАред рд╣рдо рд╡реЗрдпрд░рдлрд╝ GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реНрд╡рдпрдВ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдЬрдм GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ)ред рдЙрдирдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ GitLab рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕реАрдЖрдИ/рд╕реАрдбреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ -> рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЯреНрд░рд┐рдЧрд░реНрд╕, рдФрд░ рдлрд┐рд░ GitHub рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╡реЗрдмрд╣реБрдХ рдмрдирд╛рдПрдВ (рд╕реЗрдЯрд┐рдВрдЧреНрд╕ -> рд╡реЗрдмрд╣реБрдХ).

рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

Build:
  stage: build
  script:
    - type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
    - type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
    - source common_envs.sh
    - werf build-and-publish --stages-storage :local
  except:
    refs:
      - schedules
  dependencies:
    - Prebuild

GitLab рд╕реНрдЯреЗрдЬ рд╕реЗ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдЬ рдореЗрдВ рджреЛ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдЧрд╛ рдкреВрд░реНрд╡ рдирд┐рд░реНрдорд╛рдг, рдЗрд╕рд▓рд┐рдП рд╣рдо рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреИрдпрд╛рд░ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЪрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ source common_envs.sh. рд╣рдо рдПрдХ рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рдореБрддрд╛рдмрд┐рдХ рд╣рдо рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЪрд▓рд╛рдПрдВрдЧреЗ - рдРрд╕реЗ рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЪрд░рдг рдореЗрдВ, рд╣рдо рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ - YAML рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрд╛рджрди рдФрд░ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ:

.base_deploy: &base_deploy
  stage: deploy
  script:
    - type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
    - type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
    - source common_envs.sh
    - werf deploy --stages-storage :local
  dependencies:
    - Prebuild
  except:
    refs:
      - schedules

Deploy to Production:
  <<: *base_deploy
  variables:
    WERF_KUBE_CONTEXT: prod
  environment:
    name: production
    url: werf.io
  only:
    refs:
      - master
  except:
    variables:
      - $REVIEW_SHA
    refs:
      - schedules

Deploy to Test:
  <<: *base_deploy
  variables:
    WERF_KUBE_CONTEXT: dev
  environment:
    name: test
    url: werf.test.flant.com
  except:
    refs:
      - schedules
  only:
    variables:
      - $REVIEW_SHA

рдХрд╛рд░реНрдп рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрджрд░реНрдн рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗрдпрд░рдлрд╝ рдХреЛ рддреИрдирд╛рддреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП (WERF_KUBE_CONTEXT), рдФрд░ рд▓реВрдк рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдирд╛ (environment.name ╨╕ environment.url), рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐... рдкреНрд░рд╢реНрдирдЧрдд рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░.

рдЕрдВрддрд┐рдо рдкрд░рд┐рд╖реНрдХрд░рдг

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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдлрд╝рд╛рдИ рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВ .gitlab-ci.yml;
  • рд╕рдлрд╝рд╛рдИ рдХрд╛рд░реНрдп рдХрд╛ рдЖрд╡рдзрд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдЬреЛрдбрд╝реЗрдВ;
  • рд░рд╛рдЗрдЯ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдлрд╝рд╛рдИ рдЪрд░рдг рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ .gitlab-ci.yml:

Cleanup:
  stage: cleanup
  script:
    - type multiwerf && . $(multiwerf use 1.0 alpha --as-file)
    - type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
    - source common_envs.sh
    - docker login -u nobody -p ${WERF_IMAGES_CLEANUP_PASSWORD} ${WERF_IMAGES_REPO}
    - werf cleanup --stages-storage :local
  only:
    refs:
      - schedules

рд╣рдордиреЗ рд▓рдЧрднрдЧ рдпрд╣ рд╕рдм рдкрд╣рд▓реЗ рд╣реА рдереЛрдбрд╝рд╛ рдКрдкрд░ рджреЗрдЦ рд▓рд┐рдпрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЗрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдбреЙрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдбреЙрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рд░реА GitLab CI рдХрд╛рд░реНрдп рдЯреЛрдХрди рдирд╣реАрдВ рд╣реИ) рдРрд╕реЗ рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВ) рдЯреЛрдХрди рдХреЛ GitLab рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХрд╛ рдорд╛рди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП WERF_IMAGES_CLEANUP_PASSWORD рдкрд░рд┐рдпреЛрдЬрдирд╛ (рд╕реАрдЖрдИ/рд╕реАрдбреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ -> рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕).

рдЖрд╡рд╢реНрдпрдХ рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рдлрд╛рдИ рдХрд╛рд░реНрдп рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЗрд╕рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕реАрдЖрдИ/рд╕реАрдбреА ->
рдЕрдиреБрд╕реВрдЪрд┐рдпреЛрдВ
.

рдмрд╕ рдЗрддрдирд╛ рд╣реА: рдбреЙрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдм рд▓рдЧрд╛рддрд╛рд░ рдЕрдкреНрд░рдпреБрдХреНрдд рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рднрд╛рдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд▓реЗрдЦ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рдЬрд╛рдирд╛:

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

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

рдирд┐рд╖реНрдХрд░реНрд╖

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

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

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

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

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