CI / CD рдЪреЗрдирд┐рдВрдЧ рдФрд░ рдбреЙрдХрд░ рдСрдЯреЛрдореЗрд╢рди

рдореИрдВрдиреЗ 90 рдХреЗ рджрд╢рдХ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреА рдкрд╣рд▓реА рд╕рд╛рдЗрдЯреЗрдВ рд▓рд┐рдЦреА рдереАрдВред рддрдм рдЙрдиреНрд╣реЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдерд╛ред рдХреБрдЫ рд╕рд╛рдЭрд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдПрдХ рдЕрдкрд╛рдЪреЗ рд╕рд░реНрд╡рд░ рдерд╛, рдЖрдк рдПрдлрд╝рдЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рд╕рд░реНрд╡рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рд╛рдЗрди рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ ftp://ftp.example.comред рдлрд┐рд░ рд╕рд░реНрд╡рд░ рдореЗрдВ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдирд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЕрдиреНрдп рд╕рдордп рдереЗ, рдЕрдм рд╕реЗ рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рди рдерд╛ред рдкрд┐рдЫрд▓реЗ рджреЛ рджрд╢рдХреЛрдВ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд╕рд╛рдЗрдЯреЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдИ рд╣реИрдВ, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЬрд╛рд░реА рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдПрдХрд▓ рд╕рд░реНрд╡рд░ рд▓реЛрдб рдмреИрд▓реЗрдиреНрд╕рд░реНрд╕ рдХреЗ рдкреАрдЫреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреА рдмрд╣реБрд▓рддрд╛ рдмрди рдЧрдпрд╛ рд╣реИ; рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред





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

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

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ


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

рд▓рдХреНрд╖реНрдп


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

рдЗрд╕ рддрд░рд╣ рдореЗрд░реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рдЕрдВрдд рд╣реБрдЖред

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдХрд┐рд╕реА рднреА рд╢рд╛рдЦрд╛ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░, masterрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ:

  • рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред
  • рд╕рднреА рдЗрдХрд╛рдИ, рдПрдХреАрдХрд░рдг рдФрд░ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдХреЗрд╡рд▓ рдЙрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬреЛ masterрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрд▓реНрдб рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ :

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

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

CI / CD рдХреНрдпрд╛ рд╣реИ?


рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо CI / CD рдХрд╛ рдЕрд░реНрде рд╣реИ "рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг / рдирд┐рд░рдВрддрд░ рддреИрдирд╛рддреА" - "рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг / рдирд┐рд░рдВрддрд░ рддреИрдирд╛рддреАред"

Integration рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг


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

Loyment рд╕рддрдд рддреИрдирд╛рддреА


рдирд┐рд░рдВрддрд░ рддреИрдирд╛рддреА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреЛрдб рдХреА рд▓рдЧрд╛рддрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреИрдирд╛рддреА рд╣реИред рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо CI / CD рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЛ рдХрднреА-рдХрднреА "рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг" ("рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг") рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, "рдирд┐рд░рдВрддрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди" рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди "рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг" рд╕реЗ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред

рдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд


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

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ Node.js рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдПрдХ-рдкреГрд╖реНрда рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЗрд╕ рдкреВрд░реНрдг-рд╕реНрдЯреИрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдорд┐рд▓реА рд░рдгрдиреАрддрд┐ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ ред

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

рдбрд╛рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛ рдордЬрд╝рджреВрд░


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

рдбреЛрдХрд░ рд╣рдм рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ GitHub Git рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП, рдпрд╛ NPM рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдирд▓рд╛рдЗрди рднрдВрдбрд╛рд░ рд╣реИред рдпрд╣ рдЗрд╕реЗ рдбреЙрдХрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реЗ тАЛтАЛрдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЛ рдХрд╛рдо рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:


рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЙрдХрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рд╕реАрдПрд▓рдЖрдИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

docker -v

рдЕрдЧрд▓рд╛, рджрд░реНрдЬ рдХрд░рдХреЗ рдбреЛрдХрд░ рд╣рдм рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ, рдЬрдм рдкреВрдЫрд╛ рдЬрд╛рдП, рддреЛ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб:

docker login

рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдПред

тЦН рдЫрд╡рд┐рдпрд╛рдБ


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

#     
docker images

рдпрд╣ рдХрдорд╛рдВрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧреА:

REPOSITORY     TAG     IMAGE ID     CREATED     SIZE
---

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

тЦНContainers


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

#   
docker ps -a
CONTAINER ID     IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES
---

тЦНTags


рдПрдХ рдЯреИрдЧ рдПрдХ рдЫрд╡рд┐ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИред

тЦН рдбреЙрдХрд░ рдХрдорд╛рдВрдб рд╕рд╛рд░рд╛рдВрд╢


рдпрд╣рд╛рдБ рдХреБрдЫ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЙрдХрд░ рдХрдорд╛рдВрдб рдХрд╛ рдЕрд╡рд▓реЛрдХрди рд╣реИред
рдЯреАрдо
рдкреНрд░рд╕рдВрдЧ
рдЕрдзрд┐рдирд┐рдпрдо
docker рдмрд┐рд▓реНрдб
рдкреНрд░рдкрддреНрд░
рдбреЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдбреЙрдХрдЯрд░ рдЯреИрдЧ
рдкреНрд░рдкрддреНрд░
рдЫрд╡рд┐ рдЯреИрдЧрд┐рдВрдЧ
рдбреЙрдХрдЯрд░ рдЪрд┐рддреНрд░
рдкреНрд░рдкрддреНрд░
рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛
рдбреЙрдХ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛
рдкрд╛рддреНрд░
рдЫрд╡рд┐-рдЖрдзрд╛рд░рд┐рдд рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ
рдбреЙрдХрдЯрд░ рдкреБрд╢
рдкреНрд░рдкрддреНрд░
рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛
рдбреЙрдХрдЯрд░ рдкреБрд▓
рдкреНрд░рдкрддреНрд░
рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
docker ps
рдкрд╛рддреНрд░
рд╕реВрдЪреА рдХрдВрдЯреЗрдирд░
docker рдкреНрд░рдгрд╛рд▓реА prune
рдЫрд╡рд┐ / рдХрдВрдЯреЗрдирд░
рдЕрдкреНрд░рдпреБрдХреНрдд рдХрдВрдЯреЗрдирд░реЛрдВ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛

F рдбреЙрдХрд░рдлрд╛рдЗрд▓


рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ рдЬреЛ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдкреЛрд░реНрдЯ рдкрд░ Node.js- рдЖрдзрд╛рд░рд┐рдд рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ 5000ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ:

npm i         #  
npm run build #  React-
npm run start #  Node-

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

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

рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣рд╛рдБ рдЗрди рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВ:

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

Dockerfile рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:

#   
FROM node:12-alpine

#        app/
COPY . app/

#  app/    
WORKDIR app/

#   ( npm ci  npm i,     )
RUN npm ci --only-production

#   React-  
RUN npm run build

#   
EXPOSE 5000

#  Node-
ENTRYPOINT npm run start

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

тЦН рдирд┐рд░реНрдорд╛рдг, рдЯреИрдЧ рдФрд░ рд▓реЙрдиреНрдЪ рдХрдВрдЯреЗрдирд░


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

тЦН рд╡рд┐рдзрд╛рдирд╕рднрд╛


рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдФрд░, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдЯреИрдЧ (рдпрджрд┐ рдЯреИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЫрд╡рд┐ рдХреЛ рдПрдХ рдЯреИрдЧ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ latest)ред

#  
docker build -t <image>:<tag> .

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЛрдХрд░ рдЫрд╡рд┐ рдХреИрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред

Sending build context to Docker daemon   2.88MB
Step 1/9 : FROM node:12-alpine
 ---> ...  ...
Successfully built 123456789123
Successfully tagged <image>:<tag>

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

REPOSITORY          TAG               IMAGE ID            CREATED              SIZE
<image>             latest            123456789123        About a minute ago   x.xxGB

тЦНStart


рдЫрд╡рд┐ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЪреВрдВрдХрд┐ рдореИрдВ рдЕрдЧрд▓реЗ рдЖрджреЗрд╢ рдореЗрдВ localhost:5000рдЬреЛрдбрд╝реА рдХреЗ рдмрд╛рдИрдВ рдУрд░ 5000:5000рд╕реНрдерд╛рдкрд┐рдд рдкрддреЗ рдкрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ 5000ред рджрд╛рдИрдВ рдУрд░ рдХрдВрдЯреЗрдирд░ рдкреЛрд░реНрдЯ рд╣реИред

#      5000    5000
docker run -p 5000:5000 <image>:<tag>

рдЕрдм рдЬрдм рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк docker psрдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛ рдЖрдк рдЙрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ docker ps -aрд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ)ред

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                      PORTS                    NAMES
987654321234        <image>             "/bin/sh -c 'npm runтАж"   6 seconds ago        Up 6 seconds                0.0.0.0:5000->5000/tcp   stoic_darwin

рдпрджрд┐ рдЖрдк рдЕрдм рдкрддреЗ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ localhost:5000, рддреЛ рдЖрдк рдХрд╛рд░реНрдпрд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдкреГрд╖реНрда рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдареАрдХ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдкреГрд╖реНрдаред

тЦН рдЯреИрдЧ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдФрд░ рдкреНрд░рдХрд╛рд╢рди


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

рдЕрдм рдЖрдк рдПрдХ рдирдП рдирд╛рдо рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ docker pushрдЗрд╕реЗ рдбреЙрдХрд░ рд╣рдм рднрдВрдбрд╛рд░ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

docker build -t <username>/<repository>:<tag> .
docker tag <username>/<repository>:<tag> <username>/<repository>:latest
docker push <username>/<repository>:<tag>

#     , , :
docker build -t user/app:v1.0.0 .
docker tag user/app:v1.0.0 user/app:latest
docker push user/app:v1.0.0

рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЫрд╡рд┐ рдбреЙрдХрд░ рд╣рдм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛ рдХрджрдо


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

  • рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдПрдХ CI рдЯреВрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ред
  • рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рд▓реЛрдб рдФрд░ рдЪрд▓рд╛ рд╕рдХреЗред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдЖрдИ / рд╕реАрдбреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ - DitigalOcean ред

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣рд╛рдВ рдЖрдк рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдПрдХ рдФрд░ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд╕рд░реНрдХрд┐рд▓рд╕реАрдЖрдИ рдпрд╛ рдЬреАрдердм рдПрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ DigitalOcean рдХреЗ рдмрдЬрд╛рдп - AWS рдпрд╛ Linodeред

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

рдЯреНрд░реИрд╡рд┐рд╕ рд╕реА.рдЖрдИ.


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

рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдВрдФрд░ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдБред рдлрд┐рд░ рдЕрдкрдиреЗ GitHub рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдЯреНрд░реИрд╡рд┐рд╕ CI рдХреЛ рдПрдХреАрдХреГрдд рдХрд░реЗрдВред рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рдЙрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред (рдореИрдВ GitHub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЯреНрд░реИрд╡рд┐рд╕ CI BitBucket, GitLab, рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред

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

Cycle рдХрд╛рд░реНрдп рдЬреАрд╡рди рдЪрдХреНрд░


рдЯреНрд░реИрд╡рд┐рд╕ CI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рдЬрд┐рд╕реЗ .travis.ymlрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдиреМрдХрд░реА рдЬреАрд╡рди рдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдШрдЯрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:

  • apt addons
  • cache components
  • before_install
  • install
  • before_script
  • script
  • before_cache
  • after_success after_failure
  • before_deploy
  • deploy
  • after_deploy
  • after_script

тЦНTesting


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

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

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

рддреЛ рдпрд╣рд╛рдБ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ .travis.yml:

#  
language: node_js

#   Node.js
node_js:
  - '12'

services:
  #    Docker
  - docker

install:
  #    
  - npm ci

before_script:
  #      
  - npm run dev &

script:
  #  
  - npm run test

рдпрд╣рд╛рдВ рд╡реЗ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЬреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред

тЦН рддреИрдирд╛рддреА


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

deploy:
  #  Docker-     Docker Hub
  provider: script
  script: bash deploy.sh
  on:
    branch: master

рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИ:

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

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

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

рдпрд╣рд╛рдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╣реИ deploy.shред

#!/bin/sh
set -e #     

IMAGE="<username>/<repository>"                             #  Docker
GIT_VERSION=$(git describe --always --abbrev --tags --long) # Git-  

#    
docker build -t ${IMAGE}:${GIT_VERSION} .
docker tag ${IMAGE}:${GIT_VERSION} ${IMAGE}:latest

#   Docker Hub   
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
docker push ${IMAGE}:${GIT_VERSION}

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рд╣реЛрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪреВрдВрдХрд┐ рдореИрдВ рдбрд┐рдЬрд┐рдЯрд▓ рдорд╣рд╛рд╕рд╛рдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред Aws рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ aws, рдФрд░ рдЗрд╕реА рддрд░рд╣ред

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

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

  • рдЖрдкрдХреЛ рдЙрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд░реЛрдХрдирд╛ рд╣реИред
  • рдлрд┐рд░, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  • рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рдХреЛ рдПрдХ рдореВрд▓реНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА 80- рдпрд╣ рдЖрдкрдХреЛ example.comрдкреЛрд░реНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдлреЙрд░реНрдо рдХреЗ рдкрддреЗ рдкрд░ рд╕рд╛рдЗрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ , рдФрд░ рдЬреИрд╕реЗ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ example.com:5000ред
  • рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рд╕рднреА рдкреБрд░рд╛рдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ рдЬрд╛рд░реА рд╣реИред

#  ID  
CONTAINER_ID=$(docker ps | grep takenote | cut -d" " -f1)

#   ,  ,  
docker stop ${CONTAINER_ID}
docker run --restart unless-stopped -d -p 80:5000 ${IMAGE}:${GIT_VERSION}
docker system prune -a -f

рдХреБрдЫ рдмрд╛рддреЛрдВ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ


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

The authenticity of host '<hostname> (<IP address>)' can't be established.
RSA key fingerprint is <key fingerprint>.
Are you sure you want to continue connecting (yes/no)?

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

echo <public key> | base64 #  < ,   base64>

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:

echo "123.45.67.89 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== you@example.com" | base64

рдФрд░ рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ - рдПрдХ base64 рдПрдиреНрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ:

MTIzLjQ1LjY3Ljg5IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQWtsT1Vwa0RIcmZIWTE3U2JybVRJcE5MVEdLOVRqb20vQldEU1UKR1BsK25hZnpsSERUWVc3aGRJNHlaNWV3MThKSDRKVzlqYmhVRnJ2aVF6TTd4bEVMRVZmNGg5bEZYNVFWa2JQcHBTd2cwY2RhMwpQYnY3a09kSi9NVHlCbFdYRkNSK0hBbzNGWFJpdEJxeGlYMW5LaFhwSEFac01jaUxxOFY2UmpzTkFRd2RzZE1GdlNsVksvN1hBCnQzRmFvSm9Bc25jTTFROXg1KzNWMFd3NjgvZUlGbWIxenVVRmxqUUpLcHJyWDg4WHlwTkR2allOYnk2dncvUGIwcndlcnQvRW4KbVorQVc0T1pQblRQSTg5WlBtVk1MdWF5ckQyY0U4NlovaWw4YitndzNyMysxbkthdG1Ja2puMnNvMWQwMVFyYVRsTXFWU3NieApOclJGaTl3cmYrTTdRPT0geW91QGV4YW1wbGUuY29tCg==

рдпрд╣рд╛рдБ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЯреАрдо рд╣реИ

install:
  - echo <  ,   base64> | base64 -d >> $HOME/.ssh/known_hosts

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

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

doctl compute ssh <droplet> --ssh-command "    && "

рдЯреАрдПрд▓рдПрд╕ / рдПрд╕рдПрд╕рдПрд▓ рдФрд░ рд▓реЛрдб рд╕рдВрддреБрд▓рди


рдЬрдм рдореИрдВрдиреЗ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛, рддреЛ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдЦрд┐рд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рд╕рд░реНрд╡рд░ рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ рдирд╣реАрдВ рдерд╛ред рдЪреВрдВрдХрд┐ рдореИрдВ Ngin.js рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ Nginx рдФрд░ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХреЗрдВ , рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЯрд┐рдВрдХрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

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

рд╕рд╛рд░рд╛рдВрд╢


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

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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ CI / CD рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?


All Articles