рдХреЛрдб рдХреЛ рд╕реАрдзреЗ docker рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддреИрдирд╛рдд рдХрд░реЗрдВред рдпрд╛ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯ рдХреЗ рдмрд╛рдж рдХреИрд╕реЗ рди рдХрд░реЗрдВ

рдХрд╛рд░реНрдп WEB-12982 рдЖрдпрд╛
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рд╡реЗрдм-12982 рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВ
рдЬрдмрдХрд┐ рд╢рд╛рдЦрд╛ рдЬрд╛ рд░рд╣реА рд╣реИ, tz рдкрдврд╝реЗрдВ рдФрд░ рдХреЙрдлреА рдкреАрдПрдБ
рд╕реАрдзреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ

git рдХрдорд┐рдЯ, git рдкреБрд╢
рдЬрдмрдХрд┐ рд╢рд╛рдЦрд╛ рдкреБрдирд░реНрдорд┐рд▓рди рд╣реИ
git рдХрдорд┐рдЯ, git рдкреБрд╢
рдЬрдмрдХрд┐ рд╢рд╛рдЦрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЯреНрд╡рд┐рдЯрд░ рдХреЛ рдлрд╝реНрд▓рд┐рдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
git рдХрдорд┐рдЯ, git рдкреБрд╢
...
рдЖрдк 50 рдХрдорд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдореАрдХреНрд╖рд╛ рд╢рд╛рдЦрд╛ рд╕реМрдВрдкрддреЗ рд╣реИрдВ

рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ 50 рдХрдорд┐рдЯ рд╢реБрджреНрдз рд╕рдордп рдХрд╛ 50 рдорд┐рдирдЯ рд╣реИ, рдЬреЛ рдлрд┐рдЯ рдФрд░ рд╢реБрд░реВ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 1 рдорд┐рдирдЯ рдХрд╛ рдЕрдВрддрд░рд╛рд▓ рд╢рд┐рдерд┐рд▓рддрд╛ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред


рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рдЪрд┐рдд рд╣реИ? рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ, рд╡рд┐рдХрд╛рд╕ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


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

рд▓реЗрдХрд┐рди, рдзреАрд░реЗ-рдзреАрд░реЗ ... рдпрджрд┐ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЖрдкрдХреЗ рдХрд░реАрдм рд╣реИ, рддреЛ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред



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


tldr: рдХреЛрдб рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдФрд░ рдПрдХ рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ CI \ CD рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд░реВрдк рд╕реЗ рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рдордп рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддрд╛ рд╣реИред

рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рдордп-рд╕рдордп рдкрд░ рд╕рднреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреГрд╢реНрдпрдкрдЯрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд▓рд╛рдЗрд╡рд░реЗрд▓рдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛


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


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


рдмреЗрд╢рдХ, рдЖрдк рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкрд╛рд╕ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХрдВрдкреНрдпреВрдЯрд░ рд╣реЛ, рдЧрд┐рдЯрд▓реИрдм-рд░рдирд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рдЙрд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЯреИрдЧреНрд╕ рдХреЛ gllab-ci.yml рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдб рд╕реНрдкреАрдб ctrl + s рдХреА рдХреЗ рдмрд╛рдж рдСрдЯреЛрдореИрдЯрд┐рдХ FTP рдХреЛрдб рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧреАред


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


рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд▓реНрдк


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

рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:


  • Ftp \ ssh рдХреЛ рдХрдиреНрдЯреИрдВрдЯ рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрдиреНрдЯреЗрдирд░ рдореЗрдВ рд╕реАрдзреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЗрд╕реЗ рдЗрдореЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ, FTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдХрдиреНрдЯреЗрдирд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
    • рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдФрд░ "рдмреИрд╕рд╛рдЦреА" рднреА, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣рд╛рдБ рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдмреИрд╕рд╛рдЦреА рд╣реИрдВ
  • (рд╕реНрдерд╛рдиреАрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП) рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реАрдзреЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker cp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
    • рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред
    • docker cp рдореЗрдВ рдмрд╣реБрдд рд╕реАрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП рд╡рд┐рдХреНрд░реЗрддрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рд░ рдмрд╛рд░ рдХреЙрдкреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреЙрдкреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╣реА, рдпрд╣ рдзреАрдорд╛ рд╣реЛрдЧрд╛ред
  • (рджреВрд░рд╕реНрде \ рд╕реНрдерд╛рдиреАрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП) рдмрд╛рд╣рд░реА рд╣реЛрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдХрдВрдЯреЗрдирд░ рдлрд╝реЛрд▓реНрдбрд░ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реАрдзреЗ рдорд╛рдЙрдВрдЯреЗрдб рд╣реЛрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
    • рдбреЙрдХрдЯрд░-рдорд╢реАрди рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреЙрдХ-рдорд╢реАрди рд╕реНрдХреИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
      • рдлрд┐рд░, рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдбреЙрдХрдЯрд░-рдорд╢реАрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рд╢рд╛рдпрдж рдпрд╣ рддрдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
    • рдЖрдИрдбреАрдИ рдореЗрдВ, рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдлрд╝рдЯреАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
      • рдкреНрд░рддреНрдпреЗрдХ рдирдИ рд╢рд╛рдЦрд╛ рдХреЛ рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдпрд╛ рдореИрдкрд┐рдВрдЧ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
    • рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП scp рдпрд╛ rsync рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рдмреИрд╢-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рд▓рдЯрдХрд╛ рджреЗрдВ
      • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВ рд╣реА рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реИ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдореИрдкрд┐рдВрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рди рдХрд░рдирд╛ рдкрдбрд╝реЗред

рд╕рдорд╛рдзрд╛рди рд╕реНрд╡рдпрдВ: rsync + рд╡реЙрд▓реНрдпреВрдо


tldr:
  • рдПрдХ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ rsync рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
  • рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдореЗрдВ рдПрдХ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдмрд╛рд╣рд░реА рд╣реЛрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ
  • рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ
  • рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╣реЙрдЯрдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЛ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдФрд░ рдЧреАрдЯрд▓реИрдм-рд╕реА рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рджреЗрдЦреВрдБрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЧреЗрдЯ-рд╕реА-рд╕реА рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рд╣реЛрдЧрд╛ред


рд╣рдо рдЧрд┐рддрд▓рдм-рд╕реА рдореЗрдВ рдЧрдВрддрд╡реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдкрде рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкрде рдХреЛ docker-compose.yml рдкрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:


before_script: - export SHARED_DIR_BASE='/var/www/builds' #    ,      - export SHARED_BRANCH_DIR=${SHARED_DIR_BASE}/${PROJECT_GROUP}/${PROJECT_NAME}/${CI_COMMIT_REF_NAME} #     web-123   my_group/my_project,      /var/shared/my_group/my_project/web-123 Deploy dev: stage: deploy_dev script: #   ,         - mkdir -p ${SHARED_BRANCH_DIR} - rsync -r --exclude-from=.gitignore --exclude-from=.dockerignore . ${SHARED_BRANCH_DIR} - find ${SHARED_BRANCH_DIR} -type d -exec setfacl -d -mo:rwx {} \; - find ${SHARED_BRANCH_DIR} -type d -exec setfacl -mo:rwx {} \; - find ${SHARED_BRANCH_DIR} -type f -exec setfacl -mo:rwx {} \; - envsubst < docker-compose.tmpl > docker-compose.yml #     gitlab-ci.yml  docker-compose.yml,   docker-compose.tmpl - docker-compose up -d 

рдЖрдЧреЗ, рд╣рдореЗрдВ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдмрд╛рд╣рд░реА рд╣реЛрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝.рдордкреНрд▓реЗрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред


 version: '2.3' services: web: ... volumes: - ${SHARED_BRANCH_DIR}:/app/:rw #             #        .    ,      ,           .              ,     ,        - /app/protected/vendor/ 

рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЕрдм рдЬрдм рдЖрдк рд╣реЛрд╕реНрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рд╢рд╛рдЦрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝реЛрд▓реНрдбрд░ / var / www / build / GROUP_NAME / PROJECT_NAME / BRANCH_NAME рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд╣рд╛рдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ .ignignore рдФрд░ .dockerignore рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ред рдЖрдк рдмрд╕ FTP рдореИрдкрд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрдирд╛ рджреЗрдВрдЧреЗред


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 rsync -r -u \ --delete-after \ --exclude-from=.gitignore \ --exclude-from=.dockerignore \ . $sshUserName@$sshHost:$sharedBaseDir 

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


рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб:
 #!/usr/bin/env bash #    while [ -n "$1" ] do case "$1" in --sshUserName=*) sshUserName=${1#*=} ;; --sshHost=*) sshHost=${1#*=} ;; esac shift done #  shared    gitBranch=$(git branch | grep \* | cut -d ' ' -f2) gitProject=$(git config --local remote.origin.url|sed -n 's#.*/\([^.]*\)\.git#\1#p') gitGroup=$(git config --local remote.origin.url|sed -n 's#.*/\([^.]*\)/.*\.git#\1#p') sharedBaseDir=/var/www/builds/$gitGroup/$gitProject/$gitBranch #         rsync -r -u \ --delete-after \ --exclude-from=.gitignore \ --exclude-from=.dockerignore \ . $sshUserName@$sshHost:$sharedBaseDir echo "done" 

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЬрдбрд╝ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЙрдЯрдХреА рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ sshUserName рдФрд░ sshHost рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ (рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ)ред рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ рдореИрдВ PHPstorm рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред


  • рдлрд╛рдЗрд▓ -> рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ
  • рдмрд╛рдПрдВ рдореЗрдиреВ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЯреВрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ, рдмрд╛рд╣рд░реА рдЯреВрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
  • рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрде рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рддрд░реНрдХреЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ sshUserName рдФрд░ sshHost рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ

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


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


рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ "рдЖрджрд░реНрд╢" рд╣реЛрдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦреВрдВред рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/hi439262/


All Articles