рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ GitOps рдЙрдкрдХрд░рдгрдХреЛ рдмрд╛рд░реЗрдорд╛ рдПрдХ рдкрдЯрдХ рднрдиреНрджрд╛ рдмрдвреА рдХреБрд░рд╛ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред , рд░ рдпрд╕ рдкрдЯрдХ рд╣рд╛рдореА рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдХрд╛рдЧрдЬрд╛рддрдХреЛ рд╕рд╛рде рд╡реЗрдмрд╕рд╛рдЗрдЯ рднреЗрд▓рд╛ рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ - (рдпрд╕рдХреЛ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ )ред рдпреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдерд┐рд░ рд╕рд╛рдЗрдЯ рд╣реЛ, рддрд░ рдпрд╕рдХреЛ рдПрд╕реЗрдореНрдмрд▓реА рд░реЛрдЪрдХ рдЫ рдХрд┐рдирдХрд┐ рдпреЛ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрдирд╛рдЗрдПрдХреЛ рд╣реЛред

рд╣рд╛рдореА рд╕рд╛рдЗрдЯ рд╕рдВрд░рдЪрдирд╛рдХреЛ рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВрдорд╛ рдЬрд╛рдиреЗ рдЫреИрдиреМрдВ: рд╕рдмреИ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдЭрд╛ рдореЗрдиреБ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗ, рд░рд┐рд▓реАрдЬрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рднрдПрдХреЛ рдкреГрд╖реНрда, рдЖрджрд┐ред рдмрд░реБ, рд╣рд╛рдореА рдЧрддрд┐рд╢реАрд▓ рдПрд╕реЗрдореНрдмрд▓реАрдХрд╛ рдореБрджреНрджрд╛рд╣рд░реВ рд░ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдорд╛ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рд╕рд╛рдердорд╛ CI/CD рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рдереЛрд░реИ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВред
рдкрд░рд┐рдЪрдп: рд╕рд╛рдЗрдЯ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ
рд╕реБрд░реБрдорд╛, werf рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдпрд╕рдХреЛ рдХреЛрдбрд╕рдБрдЧреИ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреНрдиреЗ рддрдереНрдпрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВред рдпрд╕рд▓реЗ рд╡рд┐рдХрд╛рд╕рдорд╛ рдХреЗрд╣реА рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рдЬреБрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдпрд╕ рд▓реЗрдЦрдХреЛ рджрд╛рдпрд░рд╛рднрдиреНрджрд╛ рдмрд╛рд╣рд┐рд░ рдЫрдиреН, рддрд░ рдХрдореНрддрд┐рдорд╛ рд╣рд╛рдореА рднрдиреНрди рд╕рдХреНрдЫреМрдВ рдХрд┐:
- рдХрд╛рдЧрдЬрд╛рдд рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдирдЧрд░реА рдирдпрд╛рдБ werf рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдЬрд╛рд░реА рдЧрд░реНрдиреБ рд╣реБрдБрджреИрди рд░, рдпрд╕рдХреЛ рд╡рд┐рдкрд░реАрдд, рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдХреБрдиреИ рдкрдирд┐ рдкрд░рд┐рд╡рд░реНрддрдирд▓реЗ werf рдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд░рд┐рд▓реАрдЬрд▓рд╛рдИ рдЬрдирд╛рдЙрдБрдЫ;
- рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╡рд┐рдХрд╛рд╕ рдирд┐рдХреИ рдЧрд╣рди рдЫ: рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рджрд┐рдирдорд╛ рдзреЗрд░реИ рдкрдЯрдХ рдЬрд╛рд░реА рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ;
- рдХрд╛рдЧрдЬрд╛рддрдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рднрдПрдХреЛ рд╕рд╛рдЗрдЯ рддреИрдирд╛рде рдЧрд░реНрди рдЧрд░рд┐рдиреЗ рдХреБрдиреИ рдкрдирд┐ рдореНрдпрд╛рдиреБрдЕрд▓ рдЕрдкрд░реЗрд╢рди рдХрдореНрддрд┐рдорд╛ рдкрдирд┐ рдердХрд╛рдЗрд▓рд╛рдЧреНрджреЛ рд╣реБрдиреНрдЫ;
- рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдЕрд░реНрдердкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рдЙрдБрдЫ , рел рд╕реНрдерд┐рд░рддрд╛ рдЪреНрдпрд╛рдирд▓рд╣рд░реВ рд╕рд╣рд┐рддред рд░рд┐рд▓реАрдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕реНрдерд┐рд░рддрд╛ рдмрдврд╛рдЙрдиреЗ рдХреНрд░рдордорд╛ рдЪреНрдпрд╛рдирд▓рд╣рд░реВ рдорд╛рд░реНрдлрдд рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рдХреНрд░рдорд┐рдХ рдорд╛рд░реНрдЧ рд╕рдорд╛рд╡реЗрд╢ рдЫ: рдЕрд▓реНрдлрд╛ рджреЗрдЦрд┐ рд░рдХ-рд╕реЛрд▓рд┐рдб рд╕рдореНрдо;
- рд╕рд╛рдЗрдЯрдорд╛ рд░реВрд╕реА рднрд╛рд╖рд╛рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдЫ, рдЬреБрди рдореБрдЦреНрдп (рдЕрд░реНрдерд╛рддреН рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛рдХреЛ) рд╕рдВрд╕реНрдХрд░рдгрд╕рдБрдЧ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ "рдмрд╛рдБрдЪреНрдЫ рд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдЫ" (рдЕрд░реНрдерд╛рддреН рдЬрд╕рдХреЛ рд╕рд╛рдордЧреНрд░реА рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫ)ред
рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдмрд╛рдЯ рдпреА рд╕рдмреИ "рдЖрдиреНрддрд░рд┐рдХ рдХрд╛рдорд╣рд░реВ" рд▓реБрдХрд╛рдЙрди, рдЙрд╕рд▓рд╛рдИ "рдХрд╛рдо рдЧрд░реНрдиреЗ" рдХреБрд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИ, рд╣рд╛рдореАрд▓реЗ рдмрдирд╛рдПрдХрд╛ рдЫреМрдВ WERF рд╕реНрдерд╛рдкрдирд╛ рд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рдЙрдкрдХрд░рдг рд╣реЛ ред рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рддрдпрд╛рд░ рд░рд╣реЗрдХреЛ рд░рд┐рд▓рд┐рдЬ рдирдореНрдмрд░ рд░ рд╕реНрдерд┐рд░рддрд╛ рдЪреНрдпрд╛рдирд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд░ рдорд▓реНрдЯрд┐рд╡рд░реНрдлрд▓реЗ рдЪреНрдпрд╛рдирд▓рдорд╛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗрдЫ рд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░реЗрдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреЗрдЫред
рд╕рд╛рдЗрдЯрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдЪрдпрди рдореЗрдиреБрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдЪреНрдпрд╛рдирд▓рдорд╛ werf рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреНред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдорд╛ рдкрдЫрд┐рд▓реНрд▓реЛ рд░рд┐рд▓реАрдЬрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рд╕реНрдерд┐рд░ рдЪреНрдпрд╛рдирд▓ рд╕рдВрд╕реНрдХрд░рдг рдЦреЛрд▓рд┐рдПрдХреЛ рдЫ - рдпреЛ рдЦреЛрдЬ рдЗрдиреНрдЬрд┐рдирд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкрдирд┐ рдЕрдиреБрдХреНрд░рдорд┐рдд рдЫред рдЪреНрдпрд╛рдирд▓рдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдЫреБрдЯреНрдЯреИ рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдорд╛ рдЙрдкрд▓рдмреНрдз рдЫрдиреН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдмрд┐рдЯрд╛ рд░рд┐рд▓рд┐рдЬ рез.реж рдХреЛ рд▓рд╛рдЧрд┐)ред
рдХреБрд▓ рдорд┐рд▓рд╛рдПрд░, рд╕рд╛рдЗрдЯрдорд╛ рдирд┐рдореНрди рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН:
- рд░реВрдЯ (рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЦреБрд▓реНрдЫ),
- рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдХреНрд░рд┐рдп рдЕрдкрдбреЗрдЯ рдЪреНрдпрд╛рдирд▓рдХреЛ рд▓рд╛рдЧрд┐ (рдЬрд╕реНрддреИ ).
рд╕рд╛рдЗрдЯрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрдкрдиреНрди рдЧрд░реНрди, рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреНрдЫ , рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ /docs werf рднрдгреНрдбрд╛рд░ рд╕рдВрдЧрдд рдЖрджреЗрд╢ (jekyll build), рдкрд╣рд┐рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ Git рдЯреНрдпрд╛рдЧрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ред
рдпреЛ рдердкреНрди рдорд╛рддреНрд░ рдмрд╛рдБрдХреА рдЫ:
- рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЖрдлреИрдВ (werf) рдПрд╕реЗрдореНрдмрд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ;
- CI/CD рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ GitLab CI рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдмрдирд╛рдЗрдПрдХрд╛ рдЫрдиреН;
- рд░ рдпреЛ рд╕рдмреИ, рдЕрд╡рд╢реНрдп рдкрдирд┐, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдорд╛ рдЪрд▓реНрдЫред
рдХрд╛рд░реНрдпрд╣рд░реВ
рдЕрдм рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреЗрд░ рдХрд╛рд░реНрдпрд╣рд░реВ рддрдпрд╛рд░ рдЧрд░реМрдВ:
- рдХреБрдиреИ рдкрдирд┐ рдЕрдкрдбреЗрдЯ рдЪреНрдпрд╛рдирд▓рдорд╛ werf рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрдкрдЫрд┐ рд╕рд╛рдЗрдЯрдорд╛ рднрдПрдХрд╛ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╣реБрдиреБрдкрд░реНрдЫ.
- рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫ рд╕рд╛рдЗрдЯрдХреЛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН.
рд╕рдореНрдмрдиреНрдзрд┐рдд Git рдЯреНрдпрд╛рдЧрд╣рд░реВрдмрд╛рдЯ рдХреБрдиреИ рдкрдирд┐ рдЪреНрдпрд╛рдирд▓рдорд╛ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрдкрдЫрд┐ рд╕рд╛рдЗрдЯрдХреЛ рдкреБрди: рд╕рдВрдХрд▓рди рдЧрд░реНрдиреБрдкрд░реНрдЫ, рддрд░ рдЫрд╡рд┐ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдХреНрд░рдордорд╛ рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВ:
- рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдорд╛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреЗ рднрдПрдХреЛрд▓реЗ, рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХрд╛ рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдЫред рдЖрдЦрд┐рд░, рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдХреНрд░реНрдпрд╛рдЪрдмрд╛рдЯ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рд╣реЛрдЗрдиред
- рд░рд┐рд▓рд┐рдЬрдХрд╛ рд▓рд╛рдЧрд┐ рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдХреЛ рд╕реЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрди рд╕рдХреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХреБрдиреИ рд╕рдордпрдорд╛, рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдорд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ-рдкрд╣реБрдБрдЪ рез.рез рд░рд┐рд▓рд┐рдЬ рднрдиреНрджрд╛ рдмрдвреА рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реБрди рд╕рдХреНрдЫ, рддрд░ рддрд┐рдиреАрд╣рд░реВ рд╕рдордпрд╕рдБрдЧреИ рджреЗрдЦрд╛ рдкрд░реНрдиреЗрдЫрдиреН - рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рддрдкрд╛рдИрдВ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди, рд╣реИрди?
рдпрд╕рд▓реЗ рддреНрдпрд╕рдмрд╛рдЯ рд╣рдЯрд╛рдЙрдБрдЫ рдПрд╕реЗрдореНрдмрд▓реА рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдирдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред.
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЫрдиреМрдЯ рдЧрд░реНрджреИ
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдкрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдгрд▓рд╛рдИ Kubernetes рдорд╛ рдЫреБрдЯреНрдЯреИ рдкреЛрдбрдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреЛ рд╡рд┐рдХрд▓реНрдкрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рд▓рд╛рдИ рдЬрдирд╛рдЙрдБрдЫ, рдЬреБрди рд╕реНрдерд┐рд░ werf рд░рд┐рд▓реАрдЬрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╡реГрджреНрдзрд┐рд╕рдБрдЧреИ рдмрдвреНрдиреЗрдЫред рд░ рдпрд╕рд▓реЗ, рдмрд╛рд░реАрдорд╛, рдердк рдЬрдЯрд┐рд▓ рдорд░реНрдорддрд╕рдореНрднрд╛рд░рд▓рд╛рдИ рдЬрдирд╛рдЙрдБрдЫ: рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рдЖрдлреНрдиреИ HTTP рд╕рд░реНрднрд░ рд╣реБрдиреНрдЫ, рд╕рд╛рдиреЛ рд▓реЛрдбрдХреЛ рд╕рд╛рдеред рдЕрд╡рд╢реНрдп рдкрдирд┐, рдпрд╕рд▓реЗ рдареВрд▓реЛ рд╕реНрд░реЛрдд рд▓рд╛рдЧрдд рдкрдирд┐ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред
рд╣рд╛рдореА рдкрдирд┐ рддреНрдпрд╣реА рдмрд╛рдЯреЛ рдЧрдпреМрдВред рдПрдЙрдЯреИ рдЫрд╡рд┐рдорд╛ рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рдирд┐рд░реНрдорд╛рдгред рд╕рд╛рдЗрдЯрдХрд╛ рд╕рдмреИ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд╕рдВрдХрд▓рд┐рдд рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ NGINX рднрдПрдХреЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЫрдиреН, рд░ рд╕рдореНрдмрдиреНрдзрд┐рдд рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ NGINX рдЗрдиреНрдЧреНрд░реЗрд╕ рдорд╛рд░реНрдлрдд рдЖрдЙрдБрдЫред рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрд░рдЪрдирд╛ тАФ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╕рди тАФ рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ (рд▓реЛрдбрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ) рд╕рдЬрд┐рд▓реИ рдорд╛рдкрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рдЕрдЭ рд╕рдЯреАрдХ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рджреБрдИ рдЫрд╡рд┐рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдЫреМрдВ: рдПрдЙрдЯрд╛ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрдХрд┐рдЯрдХреЛ рд▓рд╛рдЧрд┐, рджреЛрд╕реНрд░реЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛ, рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрдХрд┐рдЯрдХреЛ рд▓рд╛рдЧрд┐ред рдЕрддрд┐рд░рд┐рдХреНрдд рдЫрд╡рд┐ рдореБрдЦреНрдп рдЫрд╡рд┐рд╕рдБрдЧреИ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрдХрд┐рдЯрдорд╛ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ (рдЪрд▓рд╛рдЗрдПрдХреЛ) рд░ рд╕рдореАрдХреНрд╖рд╛ рдХрдорд┐рдЯрдмрд╛рдЯ рд╕рд╛рдЗрдЯрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рд░ рддрд┐рдиреАрд╣рд░реВ рдмреАрдЪрдХреЛ рд░рд╛рдЙрдЯрд┐рдЩ рдЗрдиреНрдЧреНрд░реЗрд╕ рд╕реНрд░реЛрддрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЧрд░рд┐рдиреНрдЫред
werf рдмрдирд╛рдо git рдХреНрд▓реЛрди рд░ рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВ
рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдЭреИрдВ, рдХрд╛рдЧрдЬрд╛рддрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдЗрдЯ рд╕реНрдЯреНрдпрд╛рдЯрд┐рдХреНрд╕ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдореНрдмрдиреНрдзрд┐рдд рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдЯреНрдпрд╛рдЧрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реЗрд░ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрд╛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреНрд▓реЛрди рдЧрд░реЗрд░, рд╕реВрдЪреАрдмрд╛рдЯ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЯреНрдпрд╛рдЧрд╣рд░реВ рдЪрдпрди рдЧрд░реЗрд░ рдкрдирд┐ рдпреЛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрджреНрдпрдкрд┐, рдпреЛ рдПрдХрджрдореИ рд╕реНрд░реЛрдд-рдЧрд╣рди рдЕрдкрд░реЗрд╢рди рд╣реЛ рд░ рдпрд╕рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЧреИрд░-рддреБрдЪреНрдЫ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ... рдЕрд░реНрдХреЛ рдЧрдореНрднреАрд░ рдмреЗрдлрд╛рдЗрджрд╛ рдпреЛ рд╣реЛ рдХрд┐ рдпрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рд╕рд╛рде, рдирд┐рд░реНрдорд╛рдгрдХреЛ рдХреНрд░рдордорд╛ рдХреЗрд╣рд┐ рдкрдирд┐ рдХреНрдпрд╛рд╕ рдЧрд░реНрдиреЗ рдХреБрдиреИ рддрд░рд┐рдХрд╛ рдЫреИрдиред
рдпрд╣рд╛рдБ werf рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЖрдлреИрдВ рд╣рд╛рдореНрд░реЛ рд╕рд╣рдпреЛрдЧрдорд╛ рдЖрдЙрдБрдЫ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджреИ рд╕реНрдорд╛рд░реНрдЯ рдХреНрдпрд╛рд╕рд┐рдЩ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ ред рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рдХреЛрдб рдердкреНрди werf рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирд╛рд▓реЗ рдирд┐рд░реНрдорд╛рдгрд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдЧрддрд┐ рджрд┐рдиреЗрдЫ, рдХрд┐рдирдХрд┐ werf рд▓реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рдПрдХ рдкрдЯрдХ рднрдгреНрдбрд╛рд░ рдХреНрд▓реЛрди рдЧрд░реНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЪрд▓рд╛рдЙрдБрдЫред рдорд╛рддреНрд░ fetch рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗред рдердк рд░реВрдкрдорд╛, рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рдбреЗрдЯрд╛ рдердкреНрджрд╛, рд╣рд╛рдореА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рд╣рд░реВ рдорд╛рддреНрд░ рдЪрдпрди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ (рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реЛ)ред docs), рдЬрд╕рд▓реЗ рдердкрд┐рдПрдХреЛ рдбреЗрдЯрд╛рдХреЛ рдорд╛рддреНрд░рд╛рд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдШрдЯрд╛рдЙрдиреЗрдЫред
рдЬреЗрдХрд┐рд▓ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдЙрдкрдХрд░рдг рднрдПрдХреЛрд▓реЗ рд░ рдЕрдиреНрддрд┐рдо рдЫрд╡рд┐рдорд╛ рдЖрд╡рд╢реНрдпрдХ рдирднрдПрдХреЛрд▓реЗ, рдпрд╕рд▓рд╛рдИ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдиреБ рддрд╛рд░реНрдХрд┐рдХ рд╣реБрдиреЗрдЫред , рд░ рдЕрдиреНрддрд┐рдо рдЫрд╡рд┐рдорд╛ рд╕рдВрдХрд▓рди рдкрд░рд┐рдгрд╛рдо рдорд╛рддреНрд░ рдЖрдпрд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН.
рд╣рд╛рдореА werf.yaml рд▓реЗрдЦреНрдЫреМрдВ
рддреНрдпрд╕реИрд▓реЗ, рд╣рд╛рдореАрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдгрд▓рд╛рдИ рдЫреБрдЯреНрдЯреИ werf рдХрд▓рд╛рдХреГрддрд┐рдорд╛ рд╕рдВрдХрд▓рди рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред рдпрджреНрдпрдкрд┐, рд╣рд╛рдореА рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рдХрд┐ рдпреА рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВ рдХрддрд┐рд╡рдЯрд╛ рдПрд╕реЗрдореНрдмрд▓реАрдХреЛ рд╕рдордпрдорд╛ рд╣реБрдиреЗрдЫрдиреНред, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓реЗрдЦреНрди рд╕рдХреНрджреИрдиреМрдВ (рдХрдбрд╛ рд╢рдмреНрджрдорд╛ рднрдиреНрдиреБрдкрд░реНрджрд╛, рд╣рд╛рдореА рд╕рдХреНрдЫреМрдВ, рддрд░ рдпреЛ рдзреЗрд░реИ рдХреБрд╢рд▓ рд╣реБрдиреЗрдЫреИрди)ред
werf рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рддрдкрд╛рдИрдВрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рдорд╛ (werf.yaml), рд░ рдпрд╕рд▓реЗ рдпреЛ рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫ "рдЕрди рдж рдлреНрд▓рд╛рдИ" рдХрдиреНрдлрд┐рдЧ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ (рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗ рдЪрд╛рд╣рд┐рдиреНрдЫ!)ред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛ рднрдиреЗрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд░ рд░рд┐рд▓реАрдЬрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ, рдЬрд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛ рд╣рд╛рдореА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫреМрдВ рд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рджреБрдИ рдЫрд╡рд┐рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫреМрдВ: werf-doc ╨╕ werf-dev рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрдХрд┐рдЯрд╣рд░реВрдорд╛ рд╕реБрд░реБ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ред
рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВ рдорд╛рд░реНрдлрдд рдкрд╛рд░рд┐рдд рдЧрд░рд┐рдиреНрдЫред рдпрд╣рд╛рдБ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдВрд░рдЪрдирд╛ рдЫ:
-
RELEASESтАФ рд░рд┐рд▓рд┐рдЬрд╣рд░реВрдХреЛ рд╕реВрдЪреА рд░ werf рдХреЛ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рднрдПрдХреЛ рд▓рд╛рдЗрди, рдврд╛рдБрдЪрд╛рдорд╛ рдорд╛рдирд╣рд░реВрдХреЛ рд╕реНрдкреЗрд╕-рд╡рд┐рднрд╛рдЬрд┐рдд рд╕реВрдЪреАрдХреЛ рд░реВрдкрдорд╛ред<╨Э╨Ю╨Ь╨Х╨а_╨а╨Х╨Ы╨Ш╨Ч╨Р>%<╨Э╨Ю╨Ь╨Х╨а_╨Т╨Х╨а╨б╨Ш╨Ш>ред рдЙрджрд╛рд╣рд░рдг:1.0%v1.0.4-beta.20 -
CHANNELSтАФ рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдХреЛ рд╕реВрдЪреА рд░ werf рдХреЛ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рднрдПрдХреЛ рд▓рд╛рдЗрди, рдврд╛рдБрдЪрд╛рдорд╛ рдорд╛рдирд╣рд░реВрдХреЛ рд╕реНрдкреЗрд╕-рд╡рд┐рднрд╛рдЬрд┐рдд рд╕реВрдЪреАрдХреЛ рд░реВрдкрдорд╛ред<╨Ъ╨Р╨Э╨Р╨Ы>%<╨Э╨Ю╨Ь╨Х╨а_╨Т╨Х╨а╨б╨Ш╨Ш>ред рдЙрджрд╛рд╣рд░рдг:1.0-beta%v1.0.4-beta.20 1.0-alpha%v1.0.5-alpha.22 -
ROOT_VERSIONтАФ рд╕рд╛рдЗрдЯрдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди werf рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдг (рд╕рдзреИрдВ рдЙрдЪреНрдЪрддрдо рд░рд┐рд▓реАрдЬ рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдЧрдЬрд╛рдд рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди)ред рдЙрджрд╛рд╣рд░рдг: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 }}рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдмреБрдЭреНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВрдмрд╛рдЯ рдЖрдпрд╛рдд рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдЙрд╣реА рдирд╛рдорд╣рд░реВ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред
рдХреБрдиреИ рдХрд▓рд╛рдХреГрддрд┐рдХреЛ рд╡рд░реНрдгрди рдЧрд░реНрджрд╛, рдирд┐рдореНрди werf рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рд╕реЗрд╡рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рд╕рдБрдЧ рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрджреИ build_dir рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд░рдирд╣рд░реВ рдмреАрдЪ рдЬреЗрдХрд┐рд▓ рдХреНрдпрд╛рд╕ рд╕рдВрд░рдХреНрд╖рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЬреБрди рдкреБрди: рд╕рдВрдпреЛрдЬрдирд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдЧрддрд┐ рджрд┐рдиреНрдЫ.
рддрдкрд╛рдИрдВрд▓реЗ рдлрд╛рдЗрд▓рдХреЛ рдкреНрд░рдпреЛрдЧ рдкрдирд┐ рдпрд╛рдж рдЧрд░реНрдиреБрднрдПрдХреЛ рд╣реБрди рд╕рдХреНрдЫ releases.yml тАФ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд░рд┐рд▓реАрдЬ рдбреЗрдЯрд╛ рднрдПрдХреЛ YAML рдлрд╛рдЗрд▓ рд╣реЛ (рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдПрдХреЛ рдХрд▓рд╛рдХреГрддрд┐)ред рд╕рд╛рдЗрдЯ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрджрд╛ рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ, рддрд░ рд▓реЗрдЦрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рд░реЛрдЪрдХ рдЫ рдХрд┐рдирднрдиреЗ рдпрд╕рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдХрд▓рд╛рдХреГрддрд┐рдХреЛ рдкреБрди: рд╕рдВрдпреЛрдЬрди тАФ рд╕рд╛рдЗрдЯрдХреЛ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рдХрд▓рд╛рдХреГрддрд┐ (рдЕрдиреНрдп рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВрдорд╛ рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди)ред
рдпреЛ рд╕рд╢рд░реНрдд рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред 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 -}} рдЪрдХреНрд░рд▓реЗ рдзреЗрд░реИ рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗ рднрдПрдХреЛрд▓реЗ (рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрдЫреМрдВ), рддрд┐рдиреАрд╣рд░реВ рдмреАрдЪрдХреЛ рд╡рд┐рднрд╛рдЬрдХ - рдЕрдиреБрдХреНрд░рдорд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫред --- (рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐, рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН )ред рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реЗрдЭреИрдВ, рд▓реБрдкрдорд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд▓ рдЧрд░реНрджрд╛, рд╣рд╛рдореА рд╕рдВрд╕реНрдХрд░рдг рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ, URL рд░ рд░реВрдЯ рд╕рдиреНрджрд░реНрдн рдкрд╛рд╕ рдЧрд░реНрдЫреМрдВред
рддреНрдпрд╕реНрддреИ рдЧрд░реА, рддрд░ рдЪрдХреНрд░ рдмрд┐рдирд╛, рд╣рд╛рдореА "рд╡рд┐рд╢реЗрд╖ рдХреЗрд╕рд╣рд░реВ" рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд░реНрдЯрд┐рдлреНрдпрд╛рдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рднрдиреНрдЫреМрдВ: рд░реВрдЯ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐, рд╕рд╛рдереИ рд╕рдореАрдХреНрд╖рд╛ рдХрдорд┐рдЯрдмрд╛рдЯ рд╕рдВрд╕реНрдХрд░рдг:
{{ 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 рд╣реЛ рдЬрд╕рдорд╛ рд╕рд░реНрднрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдердкрд┐рдПрдХреЛ рдЫред nginx.conf рд░ рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВрдмрд╛рдЯ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВред рд╕рд╛рдЗрдЯрдХреЛ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рдХрд▓рд╛рдХреГрддрд┐рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореАрд▓реЗ рдЪрд░ рджреНрд╡рд╛рд░рд╛ рдЪрдХреНрд░ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБ рдкрд░реНрдЫред .WerfVersions рдЪреНрдпрд╛рдирд▓ рдЖрдпрд╛рдд рдЧрд░реНрди рд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВ рд░рд┐рд▓реАрдЬ рдЧрд░реНрди + рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдЕрдкрдирд╛рдПрдХреЛ рдХрд▓рд╛рдХреГрддрд┐ рдирд╛рдордХрд░рдг рдирд┐рдпрдо рдкрд╛рд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкреНрд░рддреНрдпреЗрдХ рдХрд▓рд╛рдХреГрддрд┐рд▓реЗ рджреБрдИ рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдЗрдЯ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рднрдПрдХреЛрд▓реЗ, рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рд╕реНрдерд╛рдирд╣рд░реВрдорд╛ рдЖрдпрд╛рдд рдЧрд░реНрдЫреМрдВред
рдЕрдиреНрддрд┐рдо рдЫрд╡рд┐ werf-doc рдХреЛ рд╡рд┐рд╡рд░рдг
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. рдпрджрд┐ рдХреБрдиреИ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдЫреИрди рднрдиреЗ werf-dev рдЫрд╡рд┐ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдореНрднрд╡ рд╣реБрдиреЗрдЫреИрдиред REVIEW_SHA, рддрд░ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ werf рдорд╛ рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВрд▓реЗ werf-dev рдЫрд╡рд┐рдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдо рдЧрд░реНтАНрдпреЛ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдВрд░рдЪрдирд╛рд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╡рд▓ рд░реВрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЖрд░реНрдЯрд┐рдлреНрдпрд╛рдХреНрдЯ (рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рдмрдирд╛рдЗрдПрдХреЛ рдЫ) рд╕рдБрдЧ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЫреЛрдбреНрдиреЗрдЫреМрдВред
рдирд┐рд░реНрдорд╛рдг рддрдпрд╛рд░ рдЫ! CI/CD рд░ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВрдорд╛ рдЬрд╛рдФрдВред
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' рдпрд╕реНрддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Bash рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ source.
рдЕрдм рд╕рдмреИрднрдиреНрджрд╛ рд░реЛрдЪрдХ рднрд╛рдЧ рдЖрдЙрдБрдЫред рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдПрд╕реЗрдореНрдмрд▓реА рд░ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рджреБрд╡реИ рд╕рд╣реА рддрд░рд┐рдХрд╛рд▓реЗ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдпреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ werf.yaml рдерд┐рдпреЛ рдЙрд╕реНрддреИ рдХрдорд╕реЗрдХрдо рдПрдЙрдЯреИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рднрд┐рддреНрд░ред рдпрджрд┐ рдпреЛ рдЕрд╡рд╕реНрдерд╛ рдкреВрд░рд╛ рднрдПрди рднрдиреЗ, werf рд▓реЗ рдПрд╕реЗрдореНрдмрд▓реАрдХреЛ рд╕рдордпрдорд╛ рдЧрдгрдирд╛ рдЧрд░реНрдиреЗ рдЪрд░рдг рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд╣рд░реВ рд░, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддреИрдирд╛рддреА, рдлрд░рдХ рд╣реБрдиреЗрдЫрдиреНред рдпрд╕рд▓реЗ рддреИрдирд╛рддреА рддреНрд░реБрдЯрд┐ рдирд┐рдореНрддреНрдпрд╛рдЙрдиреЗрдЫ, рдХрд┐рдирдХрд┐ рддреИрдирд╛рддреАрдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫрд╡рд┐ рд╣рд░рд╛рдЗрд░рд╣реЗрдХреЛ рд╣реБрдиреЗрдЫред
рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдпрджрд┐ рд╕рд╛рдЗрдЯ рдЫрд╡рд┐рдХреЛ рдПрд╕реЗрдореНрдмрд▓реАрдХреЛ рд╕рдордпрдорд╛ рд░рд┐рд▓реАрдЬ рд░ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рди рдЫ, рд░ рддреИрдирд╛рдереАрдХреЛ рд╕рдордпрдорд╛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВрдХреЛ рдорд╛рди рдлрд░рдХ рдЫ рднрдиреЗ, рддреИрдирд╛рддреА рддреНрд░реБрдЯрд┐рдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗрдЫ: рдЖрдЦрд┐рд░, рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рдХрд▓рд╛рдХреГрддрд┐ рдЕрдЭреИ рднреЗрд▓рд╛ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред
рдпрджрд┐ рдкреБрд╕реНрддрд╛ werf.yaml рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд╕реВрдЪреА, рдЬрд╕реНрддреИ рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛рдорд╛), рддреНрдпрд╕рдкрдЫрд┐ рддреНрдпрд╕реНрддрд╛ рдбреЗрдЯрд╛рдХреЛ рд╕рдВрд░рдЪрдирд╛ рд░ рдорд╛рдирд╣рд░реВ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рднрд┐рддреНрд░ рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдиреБрдкрд░реНрдЫред рдпреЛ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдпрджрд┐ рдмрд╛рд╣реНрдп рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдзреЗрд░реИ рдкрдЯрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫрдиреНред
рд╣рд╛рдореА рдЧрд░реНрдиреЗрдЫреМрдВ рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд░ рд░реЗрдХрд░реНрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН GitLab рдорд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХреЛ рдкрд╣рд┐рд▓реЛ рдЪрд░рдгрдорд╛ (рдкреВрд░реНрд╡рдирд┐рд░реНрдорд┐рдд) рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдлрд╛рд░рдордорд╛ рдердк рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН GitLab CI рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВ. рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛рд░реНрдпрд╣рд░реВ (рдирд┐рд░реНрдорд╛рдг, рддреИрдирд╛рдереА, рд╕рдлрд╛) рдЪрд▓рд╛рдЙрди рд░ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ рдЬреБрди рд╕рдорд╛рди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рд╣реБрдиреНрдЫ 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 рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХреЛ рдорд╛рдирдХ рдЪрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирд┐рд░реНрдорд╛рдг рд░ рддреИрдирд╛рде рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рдирд┐рд░реНрдорд╛рдг рд░ рддреИрдирд╛рде рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА werf GitHub рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рд╣реБрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЖрдлреИрдВ рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ (рдЕрд░реНрдерд╛рддреН рдЬрдм GitHub рдорд╛ рднрдгреНрдбрд╛рд░рдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╣реБрдиреНрдЫрдиреН)ред рддрд┐рдиреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбреЗрдЯрд╛ рдЦрдгреНрдбрдорд╛ рд░рд╣реЗрдХреЛ GitLab рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЧреБрдгрд╣рд░реВрдмрд╛рдЯ рд▓рд┐рди рд╕рдХрд┐рдиреНрдЫред CI/CD рд╕реЗрдЯрд┐рдЩрд╣рд░реВ -> рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЯреНрд░рд┐рдЧрд░рд╣рд░реВ, рд░ рддреНрдпрд╕рдкрдЫрд┐ 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 рд▓реЗ рддреИрдирд╛рддреА рдЧрд░реНрдиреБ рдкрд░реНрдЫ (WERF_KUBE_CONTEXT), рд░ рд╕рдореЛрдЪреНрдЪ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрджреИ (environment.name ╨╕ environment.url), рдЬреБрди рддреНрдпрд╕рдкрдЫрд┐ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд╣рд╛рдореА рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрдХреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рдЫреИрдиреМрдВ, рдХрд┐рдирдХрд┐ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рд╡рд┐рд╖рдпрдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рд░реЛрдЪрдХ рдЫреИрди, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ .
рдЕрдиреНрддрд┐рдо рд╕реНрдкрд░реНрд╢
werf рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдзреЗрд░реИ рдкрдЯрдХ рд░рд┐рд▓рд┐рдЬ рд╣реБрдиреЗ рднрдПрдХрд╛рд▓реЗ, рдирдпрд╛рдБ рдЫрд╡рд┐рд╣рд░реВ рдкреНрд░рд╛рдпрдГ рдирд┐рд░реНрдорд╛рдг рд╣реБрдиреЗрдЫрдиреН, рд░ рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдирд┐рд░рдиреНрддрд░ рдмрдвреНрдиреЗрдЫред рддреНрдпрд╕реИрд▓реЗ, рдиреАрддрд┐рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЫрд╡рд┐ рд╕рдлрд╛рдИ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗрдЫ:
- рд╕рдлрд╛рдИ рдЪрд░рдг рдердкреНрдиреБрд╣реЛрд╕реН
.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 рдкрд░рд┐рдпреЛрдЬрдирд╛ (CI/CD рд╕реЗрдЯрд┐рдЩрд╣рд░реВ -> рдЪрд░рд╣рд░реВ).
рдЖрд╡рд╢реНрдпрдХ рддрд╛рд▓рд┐рдХрд╛ рд╕рд╣рд┐рдд рд╕рдлрд╛рдИ рдХрд╛рд░реНрдп рдердкреНрдиреЗ рдХрд╛рдо рдорд╛ рдЧрд░рд┐рдиреНрдЫ рд╕реАрдЖрдИ/рд╕реАрдбреА ->
рддрд╛рд▓рд┐рдХрд╛.
рдпрддрд┐ рдиреИ рд╣реЛ: рддрдкрд╛рдИрдВрдХреЛ рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдм рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХрд╛ рдЫрд╡рд┐рд╣рд░реВрдмрд╛рдЯ рдирд┐рд░рдиреНрддрд░ рдмрдвреНрдиреЗрдЫреИрдиред
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рднрд╛рдЧрдХреЛ рдЕрдиреНрддреНрдпрдорд╛, рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдореНрдЭрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рд▓реЗрдЦрдмрд╛рдЯ рдкреВрд░реНрдг рд╕реВрдЪреАрд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН :
- ;
- .
рдкрд░рд┐рдгрд╛рдо
- рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рддрд╛рд░реНрдХрд┐рдХ рдЕрд╕реЗрдВрдмрд▓реА рд╕рдВрд░рдЪрдирд╛ рдкрд╛рдпреМрдВ: рдкреНрд░рддрд┐ рд╕рдВрд╕реНрдХрд░рдг рдПрдЙрдЯрд╛ рдХрд▓рд╛рдХреГрддрд┐ред
- рдПрд╕реЗрдореНрдмрд▓реА рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЫ рд░ werf рдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдЬрд╛рд░реА рдЧрд░реНрджрд╛ рдореНрдпрд╛рдиреБрдЕрд▓ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди: рд╕рд╛рдЗрдЯрдорд╛ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╣реБрдиреНрдЫрдиреНред
- рдлрд░рдХ-рдлрд░рдХ рд░реВрдкрд░реЗрдЦрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рджреБрдИ рддрд╕реНрдмрд┐рд░рд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред
- рдпреЛ рдЫрд┐рдЯреЛ рдХрд╛рдо рдЧрд░реНрдЫ рдХрд┐рдирднрдиреЗ рдХреНрдпрд╛рд╕рд┐рдЩ рдЕрдзрд┐рдХрддрдо рд╣рджрд╕рдореНрдо рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ - рдЬрдм werf рдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдЧрд░рд┐рдиреНрдЫ рд╡рд╛ рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ GitHub рд╣реБрдХ рдмреЛрд▓рд╛рдЗрдиреНрдЫ, рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрд▓рд╛рдХреГрддрд┐ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░рд┐рдиреНрдЫред
- рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХрд╛ рддрд╕реНрдмрд┐рд░рд╣рд░реВ рдореЗрдЯрд╛рдЙрдиреЗ рдмрд╛рд░реЗрдорд╛ рдЪрд┐рдиреНрддрд╛ рд▓рд┐рдиреБ рдкрд░реНрджреИрди: werf рдиреАрддрд┐-рдЖрдзрд╛рд░рд┐рдд рд╕рдлрд╛рдИрд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрд▓рд╛рдИ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░рд╛рдЦреНрдиреЗрдЫред
рдирд┐рд╖реНрдХрд░реНрд╖
- werf рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирд╛рд▓реЗ рдмрд┐рд▓реНрдб рдЖрдлреИрдВрдХреЛ рдХреНрдпрд╛рд╕рд┐рдЩ рд░ рдмрд╛рд╣реНрдп рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рдХреНрдпрд╛рд╕рд┐рдЩ рджреБрд╡реИрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдмрд┐рд▓реНрдбрд▓реЗ рдЫрд┐рдЯреЛ рдХрд╛рдо рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
- рдмрд╛рд╣реНрдп Git рднрдгреНрдбрд╛рд░рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рднрдгреНрдбрд╛рд░рд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХреНрд▓реЛрди рдЧрд░реНрдиреЗ рд╡рд╛ рдХрдард┐рди рдЕрдиреБрдХреВрд▓рди рддрд░реНрдХрдХреЛ рд╕рд╛рде рдкрд╛рдЩреНрдЧреНрд░рд╛ рдкреБрди: рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЧрд░реНрдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рд▓рд╛рдИ рд╣рдЯрд╛рдЙрдБрдЫред werf рд▓реЗ рдХреНрдпрд╛рд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рд░ рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рдХреНрд▓реЛрди рдЧрд░реНрджрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ
fetchрд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрд╛ рдорд╛рддреНрд░ред - рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рдорд╛ рдЧреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛
werf.yamlрддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрдиреЗ рдПрд╕реЗрдореНрдмрд▓реА рд╡рд░реНрдгрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред - WERF рдорд╛ рдорд╛рдЙрдиреНрдЯрд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирд╛рд▓реЗ рдХрд▓рд╛рдХреГрддрд┐рд╣рд░реВрдХреЛ рд╕рдЩреНрдХрд▓рдирд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдЧрддрд┐ рджрд┐рдиреНрдЫ - рдХреНрдпрд╛рд╕рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рдЬреБрди рд╕рдмреИ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВрдорд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реБрдиреНрдЫред
- werf рд▓реЗ рдХреНрд▓рд┐рдирдЕрдк рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрдЫ, рдЬреБрди рдЧрддрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫред
PS
рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:
- ┬л┬╗;
- ┬л┬╗;
- ┬л┬╗;
- ┬л"ред
рд╕реНрд░реЛрдд: www.habr.com
