рдЕрдм рдЖрдк рдирд┐рдпрдорд┐рдд рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдпрд░рдл рдореЗрдВ рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

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

рдЕрдм рдЖрдк рдирд┐рдпрдорд┐рдд рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдпрд░рдл рдореЗрдВ рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

рд╣рдо рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ Werf - GitOps рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА CI/CD рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреАрд╡рдирдЪрдХреНрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ:

  • рдЫрд╡рд┐рдпрд╛рдБ рдПрдХрддреНрд░ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ,
  • рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдирд╛рдд рдХрд░реЗрдВ,
  • рд╡рд┐рд╢реЗрд╖ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВред


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

рдкреГрд╖реНрдарднреВрдорд┐: рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рдЫрд╡рд┐ рд╕рдВрдЧреНрд░рд╛рд╣рдХ

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

рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрд▓ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдореЗрдВ рддреБрд░рдВрдд рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ:

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

рдЖрдЬ рд╣рдорд╛рд░реЗ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдФрд░ рднреА рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЗ рд╢реБрд░реБрдЖрддреА рдЗрдЪреНрдЫрд╛рдПрдВ рдФрд░ рдЖрдЧреНрд░рд╣ рдереЗред

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

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

рдЕрдм рдЖрдк рдирд┐рдпрдорд┐рдд рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдпрд░рдл рдореЗрдВ рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
YAML рдкрд░ рд╡реЗрдпрд░рдлрд╝ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

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

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

рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреНрд░рддрд┐ рдЬрд╛рдЧрд░реВрдХрддрд╛

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

рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ Dockerfile (рдпрд╛ Dockerfiles рдХрд╛ рдПрдХ рд╕реЗрдЯ) рд╣реИ рдФрд░ рдЖрдк werf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

NB: рд╡реИрд╕реЗ, рдЖрдк рд╡реЗрдпрд░рдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:

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

рдЙрдирдХреА рдЕрдзрд┐рдХ рд╕рдВрдкреВрд░реНрдг рд╕реВрдЪреА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ.

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

рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

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

рдЪрд▓рд┐рдП рдЕрдЧрд▓реЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ Dockerfile рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ:

FROM ubuntu:18.04
RUN echo Building ...

рдФрд░ рд╣рдо рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВрдЧреЗ werf.yamlрдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ Dockerfile:

configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile

рд╕рднреА! рдмрд╛рдПрдВ рд░рди werf build:

рдЕрдм рдЖрдк рдирд┐рдпрдорд┐рдд рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдпрд░рдл рдореЗрдВ рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ werf.yaml рд╡рд┐рднрд┐рдиреНрди Dockerfiles рд╕реЗ рдПрдХ рд╕рд╛рде рдХрдИ рдЫрд╡рд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: ./dockerfiles/Dockerfile-backend
---
image: frontend
dockerfile: ./dockerfiles/Dockerfile-frontend

рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рд▓реНрдб рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ --build-arg ╨╕ --add-host - рд╡реЗрдпрд░рдлрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред Dockerfile рдЫрд╡рд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреГрд╖реНрда.

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

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

  1. Dockerfile рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдореЗрдВ рдПрдХ рдЪрд░рдг рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ dockerfile (рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдпрд░рдлрд╝ рдореЗрдВ рдХреМрди рд╕реЗ рдЪрд░рдг рд╣реИрдВ рдпрд╣рд╛рдВ).
  2. рдордВрдЪ рдХреЗ рд▓рд┐рдП dockerfile рд╡реЗрдпрд░рдлрд╝ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЬрдм Dockerfile рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреЗрдЬ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ dockerfile рдФрд░ рд╡реЗрдпрд░рдлрд╝ рдПрдХ рдирдП рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЗрд╕ рдЪрд░рдг рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╡реЗрдпрд░рдлрд╝ рдХреИрд╢ рд╕реЗ рдЫрд╡рд┐ рд▓реЗрддрд╛ рд╣реИ (рд╡реЗрд░реНрдлрд╝ рдореЗрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ).
  3. рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдХрддреНрд░рд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ werf publish (рдпрд╛ werf build-and-publish) рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдбреЙрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдорд╛рдирдХ рд╡реЗрдпрд░реНрдлрд╝ рдХреНрд▓реАрдирдЕрдк рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рддред рдкреБрд░рд╛рдиреА рдЫрд╡рд┐рдпрд╛рдВ (рдПрди рджрд┐рдиреЛрдВ рд╕реЗ рдкреБрд░рд╛рдиреА), рдЧреИрд░-рдореМрдЬреВрдж рдЧрд┐рдЯ рд╢рд╛рдЦрд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝реА рдЫрд╡рд┐рдпрд╛рдВ рдФрд░ рдЕрдиреНрдп рдиреАрддрд┐рдпрд╛рдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдл рд╣реЛ рдЬрд╛рдПрдВрдЧреАред

рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдФрд░ рд╕рд╛рд╡рдзрд╛рдирд┐рдпрд╛рдБ

1. рдмрд╛рд╣рд░реА URL ADD рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рд╕реА рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдмрд╛рд╣рд░реА URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ ADD. рдЬрдм рдирд┐рд░реНрджрд┐рд╖реНрдЯ URL рдкрд░ рд╕рдВрд╕рд╛рдзрди рдмрджрд▓рддрд╛ рд╣реИ рддреЛ Werf рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╣рдо рдЬрд▓реНрдж рд╣реА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

2. рдЖрдк рдЫрд╡рд┐ рдореЗрдВ .git рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬреЛрдбрд╝рдирд╛ .git рдЫрд╡рд┐ рдореЗрдВ - рдПрдХ рднрдпрд╛рдирдХ рдХреБрдкреНрд░рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣рд╛рдБ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  1. рдЕрдЧрд░ .git рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ 12 рдлреИрдХреНрдЯрд░ рдРрдк: рдЪреВрдБрдХрд┐ рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдХреЛ рдПрдХ рд╣реА рдХрдорд┐рдЯ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП git checkout рдордирдорд╛рдиреА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛.
  2. .git рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рд╛рддрд╛ рд╣реИ (рднрдВрдбрд╛рд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдПрдХ рдмрд╛рд░ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝реА рдЧрдИрдВ рдФрд░ рдлрд┐рд░ рд╣рдЯрд╛ рджреА рдЧрдИрдВ)ред рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдп-рд╡реГрдХреНрд╖ рдХрд╛ рдЖрдХрд╛рд░ Git рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреЛрдбрд╝ рдФрд░ рдмрд╛рдж рдореЗрдВ рдирд┐рд╖реНрдХрд╛рд╕рди .git рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛: рдЫрд╡рд┐ рдЕрднреА рднреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреА - рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдбреЙрдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  3. рдбреЙрдХрд░ рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдПрдХ рд╣реА рдХрдорд┐рдЯ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдп-рд╡реГрдХреНрд╖реЛрдВ рд╕реЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GitLab рдЕрд▓рдЧ рдХреНрд▓реЛрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдмрдирд╛рддрд╛ рд╣реИ /home/gitlab-runner/builds/HASH/[0-N]/yourproject рдЬрдм рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрд╕реЗрдВрдмрд▓реА рд╕рдХреНрд╖рдо рд╣реЛ. рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрдирд░реНрд╕рдВрдпреЛрдЬрди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ .git рдПрдХ рд╣реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓реЛрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдПрдХ рд╣реА рдХрдорд┐рдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛред

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

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

рд╕рдВрдкреВрд░реНрдг

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

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

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдЪрд╛рдирдХ рдХреБрдЫ Dockerfiles рдкрдбрд╝реА рд╣реЛрдВ... рдХреЛрд╢рд┐рд╢ Werf!

рд╡рд┐рд╖рдп рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреА рдкреАрдПрд╕ рд╕реВрдЪреА

рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ: тАЬwerf - рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ CI / CD рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдЯреВрд▓ (рдЕрд╡рд▓реЛрдХрди рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)'.

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

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