āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ†āĻ‡/āĻ¸āĻŋāĻĄāĻŋ āĻšā§‡āĻ‡āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻžāĻœ āĻ•āĻ°āĻž

āĻ†āĻŽāĻŋ 90 āĻāĻ° āĻĻāĻļāĻ•ā§‡āĻ° āĻļā§‡āĻˇā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ†āĻŽāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤ āĻ¤āĻ–āĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻœā§‡āĻ° āĻ•ā§āĻ°āĻŽā§‡ āĻ°āĻžāĻ–āĻž āĻ–ā§āĻŦ āĻ¸āĻšāĻœ āĻ›āĻŋāĻ˛āĨ¤ āĻ•āĻŋāĻ›ā§ āĻļā§‡āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻšā§‹āĻ¸ā§āĻŸāĻŋāĻ‚ āĻ āĻāĻ•āĻŸāĻŋ Apache āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ›āĻŋāĻ˛, āĻ†āĻĒāĻ¨āĻŋ FTP āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ˛āĻ— āĻ‡āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻ°āĻ•āĻŽ āĻ•āĻŋāĻ›ā§ āĻ˛āĻŋāĻ–ā§‡ ftp://ftp.example.com. āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻžāĻŽ āĻāĻŦāĻ‚ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŽāĻ¯āĻŧ āĻ›āĻŋāĻ˛, āĻāĻ–āĻ¨āĻ•āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ¤āĻ–āĻ¨ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸āĻšāĻœ āĻ›āĻŋāĻ˛āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ†āĻ‡/āĻ¸āĻŋāĻĄāĻŋ āĻšā§‡āĻ‡āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻžāĻœ āĻ•āĻ°āĻž

āĻ¤āĻžāĻ°āĻĒāĻ° āĻĨā§‡āĻ•ā§‡ āĻĻā§āĻ‡ āĻĻāĻļāĻ•ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ…āĻ¨ā§‡āĻ• āĻŦāĻĻāĻ˛ā§‡ āĻ—ā§‡āĻ›ā§‡āĨ¤ āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻ†āĻ°āĻ“ āĻœāĻŸāĻŋāĻ˛ āĻšāĻ¯āĻŧā§‡ āĻ‰āĻ ā§‡āĻ›ā§‡; āĻĒā§āĻ°ā§‹āĻĄāĻžāĻ•āĻļāĻ¨ā§‡ āĻŽā§āĻ•ā§āĻ¤āĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ†āĻ—ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ā§ˇ āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ˛ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻžāĻ°ā§‡āĻ° āĻĒāĻŋāĻ›āĻ¨ā§‡ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻšāĻ¯āĻŧā§‡ āĻ“āĻ ā§‡āĨ¤

āĻ†āĻŽāĻžāĻ° āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ›āĻŋāĻ˛āĨ¤ āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻ¤āĻžāĻŽ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°ā§‡ āĻ¸āĻžāĻ‡āĻŸāĻŸāĻŋāĻ•ā§‡ āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨: āĻāĻ•āĻŸāĻŋ āĻļāĻžāĻ–āĻžāĻ¯āĻŧ āĻ•ā§‹āĻĄ āĻ˛ā§‡āĻ–āĻž master āĻ—āĻŋāĻŸāĻšāĻžāĻŦā§‡āĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻ¤āĻžāĻŽ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻ° āĻ›ā§‹āĻŸ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļāĻžāĻ˛ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĻ¨āĻŋ, āĻŦāĻž āĻĄāĻ•āĻžāĻ° āĻ¸ā§‹āĻ¯āĻŧāĻžāĻ°ā§āĻŽ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĻ¨āĻŋ, āĻŦāĻž āĻĒāĻĄ, āĻāĻœā§‡āĻ¨ā§āĻŸ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ§āĻ°āĻŖā§‡āĻ° āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻŦāĻšāĻ° āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻžāĻ‡āĻ¨āĻŋāĨ¤ āĻœāĻŸāĻŋāĻ˛āĻ¤āĻž āĻ•āĻžāĻœ āĻ¯āĻ¤āĻŸāĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ¸āĻšāĻœ āĻ•āĻ°āĻžāĻ° āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻžāĻ•ā§‡ CI/CD āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĨāĻžāĻ•ā§‡ (āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻ•āĻŸāĻŋ Node.js āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ) āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻœāĻžāĻ¨āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ¯āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ†āĻ›ā§‡ āĻ¤āĻž āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ā§‡ āĻ¯āĻž āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧ.

āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āĻ¤

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋāĻ° āĻĒāĻžāĻ āĻ•ā§‡āĻ° āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻ‡āĻ¨ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻžāĻļ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ§āĻžāĻ°āĻŖāĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻŦāĻ˛ā§‡ āĻ†āĻļāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ¤āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ и āĻĄāĻ•āĻžāĻ° āĻšāĻžāĻŦ.

āĻ—ā§‹āĻ˛

āĻ†āĻŽāĻŋ āĻŦāĻ˛āĻŦ āĻ¨āĻž āĻ¯ā§‡ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻƒāĻļāĻ°ā§āĻ¤āĻ­āĻžāĻŦā§‡ "āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛" āĻŦāĻ˛āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ†āĻ°āĻ“ āĻāĻ•āĻŸāĻŋ āĻ¨āĻĨāĻŋ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ āĻ¯āĻž āĻļāĻŋāĻ–ā§‡āĻ›āĻŋ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŋ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻžāĻ¸ā§‡ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻĒā§āĻ°ā§‹āĻĄāĻžāĻ•āĻļāĻ¨ā§‡ āĻ•ā§‹āĻĄ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻŋāĨ¤

āĻāĻ‡ āĻ†āĻŽāĻžāĻ° āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻšāĻšā§āĻ›ā§‡ āĻ•āĻŋ āĻļā§‡āĻˇ.

āĻŦā§āĻ¯āĻ¤ā§€āĻ¤ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻļāĻžāĻ–āĻžāĻ¯āĻŧ āĻĒā§‹āĻ¸ā§āĻŸ āĻ•āĻ°āĻž āĻ•ā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ master, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•āĻ°ā§āĻŽ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ:

  • āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡-āĻāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤
  • āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ‡āĻ‰āĻ¨āĻŋāĻŸ, āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻļā§‡āĻˇ āĻĨā§‡āĻ•ā§‡ āĻļā§‡āĻˇ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯ā§‡ āĻ•ā§‹āĻĄā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻĄāĻŧā§‡ āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ master, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ:

  • āĻ‰āĻĒāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§, āĻĒā§āĻ˛āĻžāĻ¸...
  • āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ•ā§‹āĻĄ, āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĄāĻ•āĻžāĻ° āĻ‡āĻŽā§‡āĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĨ¤
  • āĻĄāĻ•āĻžāĻ° āĻšāĻžāĻŦā§‡ āĻ›āĻŦāĻŋāĻŸāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤
  • āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĨ¤
  • āĻĄāĻ•āĻžāĻ° āĻšāĻžāĻŦ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ›āĻŦāĻŋ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤
  • āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ§āĻžāĻ°āĻ• āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻ›āĻŦāĻŋāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĄāĻ•āĻžāĻ°, āĻšāĻŋāĻ¤ā§āĻ° āĻāĻŦāĻ‚ āĻĒāĻžāĻ¤ā§āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡ āĻ•āĻŋāĻ›ā§āĻ‡ āĻ¨āĻž āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¤āĻŦā§‡ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¸āĻŦ āĻŦāĻ˛āĻŦāĨ¤

CI/CD āĻ•āĻŋ?

āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ°ā§‚āĻĒ CI/CD-āĻāĻ° āĻ…āĻ°ā§āĻĨ āĻšāĻ˛ "āĻ…āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻāĻ•ā§€āĻ•āĻ°āĻŖ/āĻ¨āĻŋāĻ°āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĨ¤"

▍ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻāĻ•ā§€āĻ•āĻ°āĻŖ

āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨ āĻšāĻ˛ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°āĻ°āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŽā§‚āĻ˛ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ (āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ•āĻŸāĻŋ āĻļāĻžāĻ–āĻž master) āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡, āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•ā§‹āĻĄā§‡āĻ° āĻ—ā§āĻŖāĻŽāĻžāĻ¨ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

▍ āĻ…āĻŦāĻŋāĻ°āĻžāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž

āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻšāĻ˛ āĻ˜āĻ¨ āĻ˜āĻ¨, āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ•ā§‹āĻĄ āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĨ¤ CI/CD āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ°ā§‚āĻĒā§‡āĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ…āĻ‚āĻļāĻ•ā§‡ āĻ•āĻ–āĻ¨āĻ“ āĻ•āĻ–āĻ¨āĻ“ "āĻ…āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻ¤āĻ°āĻŖ" āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦāĻžāĻ¨āĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻŽā§‚āĻ˛āĻ¤ "āĻ¨āĻŋāĻ°āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ°" āĻŽāĻ¤āĻ‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ "āĻ¨āĻŋāĻ°āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻ¤āĻ°āĻŖ" āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻŦā§‹āĻāĻžāĻ¯āĻŧāĨ¤

āĻ—ā§‡āĻŸāĻŋāĻ‚ āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸā§‡āĻĄ

āĻāĻ‡ āĻ¸āĻŦ āĻļāĻŋāĻ–āĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻ¯ā§‡ āĻ…ā§āĻ¯āĻžāĻĒāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ āĻ¤āĻžāĻ•ā§‡ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¨ā§‹āĻŸ āĻ¨āĻžāĻ“. āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¯āĻž āĻ†āĻŽāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›āĻŋ, āĻ¨ā§‹āĻŸ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ†āĻŽāĻŋ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡āĻ›āĻŋ JAMStack-āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ, āĻŦāĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°āĻ¨ā§āĻŸ-āĻāĻ¨ā§āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨, āĻ¯āĻžāĻ¤ā§‡ āĻāĻŸāĻŋ āĻ…āĻĢāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŽāĻ¨ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻšā§‹āĻ¸ā§āĻŸāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨āĻŋāĻ¤ā§‡ āĻ¨ā§‡āĻŸāĻ˛āĻŋāĻĢāĻžāĻ‡. āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ° āĻœāĻŸāĻŋāĻ˛āĻ¤āĻž āĻŦāĻžāĻĄāĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻĨā§‡, āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻŸāĻŋāĻ° āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ…āĻ‚āĻļ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¯āĻžāĻ° āĻ…āĻ°ā§āĻĨ āĻšāĻ˛ āĻ¯ā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻ‚āĻšāĻ¤āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ•ā§ŒāĻļāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ†āĻŽāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ Node.js āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻāĻ•āĻŸāĻŋ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻ¸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°, āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ•-āĻĒā§ƒāĻˇā§āĻ āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļāĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°-āĻ¸āĻžāĻ‡āĻĄ API āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯āĻŸāĻŋ āĻ¸ā§‡āĻ‡ āĻ•ā§ŒāĻļāĻ˛ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§‡ āĻ¯āĻž āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻ‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ—āĻžāĻ‡āĻĄāĨ¤

āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ•āĻ°āĻ˛āĻžāĻŽ āĻŦāĻ¨ā§āĻ§ā§, āĻ¯āĻŋāĻ¨āĻŋ āĻāĻ•āĻœāĻ¨ āĻ…āĻŸā§‹āĻŽā§‡āĻļāĻ¨ āĻŦāĻŋāĻļā§‡āĻˇāĻœā§āĻž, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ•ā§‡ āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻž āĻ•āĻ°āĻ˛ā§‡āĻ¨ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻ° āĻ‡āĻšā§āĻ›āĻžāĻŽāĻ¤ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ° āĻ•ā§€ āĻ•āĻ°āĻž āĻĻāĻ°āĻ•āĻžāĻ°āĨ¤ āĻ¤āĻŋāĻ¨āĻŋ āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ•ā§‡āĻŽāĻ¨ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ§āĻžāĻ°āĻŖāĻž āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›ā§‡āĻ¨, āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻ˛āĻ•ā§āĻˇā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻĨāĻžāĻ•āĻžāĻ° āĻ…āĻ°ā§āĻĨ āĻšāĻ˛ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻ•ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĄāĻ•āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻĄāĻ•āĻļā§āĻ°āĻŽāĻŋāĻ•

āĻĄāĻ•āĻžāĻ° āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ˛ āĻ¯āĻž, āĻ•āĻ¨āĻŸā§‡āĻ‡āĻ¨āĻžāĻ°āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻšāĻœā§‡āĻ‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ, āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻ‡ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ, āĻāĻŽāĻ¨āĻ•āĻŋ āĻĄāĻ•āĻžāĻ° āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻšāĻ˛ā§‡āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻ†āĻŽāĻžāĻ•ā§‡ āĻĄāĻ•āĻžāĻ° āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻ‡āĻ¨ āĻŸā§āĻ˛āĻ¸ (āĻ¸āĻŋāĻāĻ˛āĻ†āĻ‡) āĻ āĻ†āĻŽāĻžāĻ° āĻšāĻžāĻ¤ āĻĒā§‡āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻĄāĻ•āĻžāĻ° āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻ—āĻžāĻ‡āĻĄāĻŸāĻŋāĻ•ā§‡ āĻ–ā§āĻŦ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻāĻŦāĻ‚ āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯ āĻŦāĻ˛āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻļāĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒ āĻ¨āĻŋāĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĄāĻ•āĻžāĻ° āĻĄā§‡āĻ¸ā§āĻ•āĻŸāĻĒ (āĻŽā§āĻ¯āĻžāĻ• āĻŦāĻž āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯) āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻĄāĻ•āĻžāĻ° āĻšāĻžāĻŦ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻāĻ•āĻ‡ āĻœāĻŋāĻ¨āĻŋāĻ¸ GitHub āĻ—āĻŋāĻŸ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋ āĻŦāĻž āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ npm āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤ āĻāĻŸāĻŋ āĻĄāĻ•āĻžāĻ° āĻ‡āĻŽā§‡āĻœāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨āĻ˛āĻžāĻ‡āĻ¨ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĨ¤ āĻāĻŸāĻŋ āĻĄāĻ•āĻžāĻ° āĻĄā§‡āĻ¸ā§āĻ•āĻŸāĻĒ āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻĄāĻ•āĻžāĻ° āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§āĻŸāĻŋ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻĄāĻ•āĻžāĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻĄāĻ•āĻžāĻ° āĻ¸āĻŋāĻāĻ˛āĻ†āĻ‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›ā§‡ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨:

docker -v

āĻāĻ°āĻĒāĻ°ā§‡, āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻž āĻ•āĻ°āĻž āĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ āĻāĻŦāĻ‚ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§‡ āĻĄāĻ•āĻžāĻ° āĻšāĻžāĻŦā§‡ āĻ˛āĻ— āĻ‡āĻ¨ āĻ•āĻ°ā§āĻ¨:

docker login

āĻĄāĻ•āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻšāĻŋāĻ¤ā§āĻ° āĻāĻŦāĻ‚ āĻĒāĻžāĻ¤ā§āĻ°ā§‡āĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻ—ā§āĻ˛āĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

▍āĻ›āĻŦāĻŋ

āĻāĻ•āĻŸāĻŋ āĻšāĻŋāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ˛ā§āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸā§‡āĻ° āĻŽāĻ¤ā§‹ āĻ•āĻŋāĻ›ā§ āĻ¯āĻž āĻ§āĻžāĻ°āĻ• āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§€āĻ¯āĻŧ āĻ¸ā§āĻ¨ā§āĻ¯āĻžāĻĒāĻļāĻŸāĨ¤ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻ°āĻž āĻ¸āĻšāĻœā§‡āĻ‡ āĻ›āĻŦāĻŋ āĻļā§‡āĻ¯āĻŧāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

# ВŅ‹Đ˛ĐžĐ´ ŅĐ˛ĐĩĐ´ĐĩĐŊиК ОйО вŅĐĩŅ… ОйŅ€Đ°ĐˇĐ°Ņ…
docker images

āĻāĻ‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻ°āĻŦā§‡:

REPOSITORY     TAG     IMAGE ID     CREATED     SIZE
---

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€āĻ¤ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻ‡ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻ–āĻŦ - āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ†āĻ›ā§‡, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŸāĻŋ āĻ•ā§€ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĨ¤

▍āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ°

āĻāĻ•āĻŸāĻŋ āĻ§āĻžāĻ°āĻ• āĻāĻ•āĻŸāĻŋ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻŸā§‡āĻŦāĻ˛ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻāĻ•āĻ‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡, āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻļā§‡āĻˇā§‡: āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻ‡ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĨ¤ āĻŽā§‹āĻĻā§āĻĻāĻž āĻ•āĻĨāĻž āĻšāĻ˛ āĻāĻ•āĻ‡ āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

# ПĐĩŅ€ĐĩŅ‡Đ¸ŅĐģĐĩĐŊиĐĩ вŅĐĩŅ… ĐēĐžĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ĐžĐ˛
docker ps -a
CONTAINER ID     IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES
---

▍āĻŸā§āĻ¯āĻžāĻ—

āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ¯āĻžāĻ— āĻāĻ•āĻŸāĻŋ āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤āĨ¤

▍ āĻĄāĻ•āĻžāĻ° āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸

āĻāĻ–āĻžāĻ¨ā§‡ āĻ•āĻŋāĻ›ā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻĄāĻ•āĻžāĻ° āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ“āĻ­āĻžāĻ°āĻ­āĻŋāĻ‰ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻŸā§€āĻŽ

āĻĒā§āĻ°āĻ¸āĻ™ā§āĻ—

āĻĒā§āĻ°āĻ­āĻžāĻŦ

āĻĄāĻ•āĻžāĻ° āĻŦāĻŋāĻ˛ā§āĻĄ

āĻ­āĻžāĻŦāĻŽā§‚āĻ°ā§āĻ¤āĻŋ

āĻāĻ•āĻŸāĻŋ āĻĄāĻ•āĻžāĻ°āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ›āĻŦāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž

āĻĄāĻ•āĻžāĻ° āĻŸā§āĻ¯āĻžāĻ—

āĻ­āĻžāĻŦāĻŽā§‚āĻ°ā§āĻ¤āĻŋ

āĻ‡āĻŽā§‡āĻœ āĻŸā§āĻ¯āĻžāĻ—āĻŋāĻ‚

āĻĄāĻ•āĻžāĻ° āĻ‡āĻŽā§‡āĻœ

āĻ­āĻžāĻŦāĻŽā§‚āĻ°ā§āĻ¤āĻŋ

āĻ‡āĻŽā§‡āĻœ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž

āĻĄāĻ•āĻžāĻ° āĻ°āĻžāĻ¨

āĻ†āĻ§āĻžāĻ°

āĻāĻ•āĻŸāĻŋ āĻ›āĻŦāĻŋāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ§āĻžāĻ°āĻ• āĻšāĻžāĻ˛āĻžāĻ¨ā§‹

āĻĄāĻ•āĻžāĻ° āĻ§āĻžāĻ•ā§āĻ•āĻž

āĻ­āĻžāĻŦāĻŽā§‚āĻ°ā§āĻ¤āĻŋ

āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ›āĻŦāĻŋ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻĄāĻ•āĻžāĻ° āĻŸāĻžāĻ¨

āĻ­āĻžāĻŦāĻŽā§‚āĻ°ā§āĻ¤āĻŋ

āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ›āĻŦāĻŋ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻĄāĻ•āĻžāĻ° ps

āĻ†āĻ§āĻžāĻ°

āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĒāĻžāĻ¤ā§āĻ°ā§‡

āĻĄāĻ•āĻžāĻ° āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ›āĻžāĻāĻŸāĻžāĻ‡

āĻ›āĻŦāĻŋ/āĻ§āĻžāĻ°āĻ•

āĻ…āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻĒāĻžāĻ¤ā§āĻ° āĻāĻŦāĻ‚ āĻ›āĻŦāĻŋ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ

▍āĻĄāĻ•āĻžāĻ°āĻĢāĻžāĻ‡āĻ˛

āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻĄāĻŋāĻŽā§‡āĻĄ āĻ°āĻŋāĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ“āĻ¯āĻŧā§‡āĻŦāĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ†āĻ›ā§‡āĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻĒā§‹āĻ°ā§āĻŸā§‡ āĻāĻ•āĻŸāĻŋ Node.js āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡ 5000. āĻāĻŸāĻŋ āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

npm i         # ŅƒŅŅ‚Đ°ĐŊОвĐēĐ° СавиŅĐ¸ĐŧĐžŅŅ‚ĐĩĐš
npm run build # ŅĐąĐžŅ€ĐēĐ° React-ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиŅ
npm run start # СаĐŋŅƒŅĐē Node-ŅĐĩŅ€Đ˛ĐĩŅ€Đ°

āĻāĻŸāĻž āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ‡ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¨ā§‡āĻ‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ–āĻžāĻ¨ā§‡, āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¯ā§‡āĻ•ā§‹āĻ¨ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¨ā§‹āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ•āĻ°āĻŦā§‡āĨ¤

āĻ§āĻžāĻ°āĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĄāĻ•āĻžāĻ°āĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻĻāĻŋāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¨āĻžāĻŽāĻ• āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ Dockerfile, āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ°ā§āĻŸ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ, āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻŦā§‡āĻļ āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋāĻ¤ā§‡ āĻ¯āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¤āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻœā§‡āĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ•āĻŋāĻ›ā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ†āĻ›ā§‡:

  • āĻĨā§‡āĻ•ā§‡ — āĻāĻ‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻŦā§‡āĻ¸ āĻ‡āĻŽā§‡āĻœ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡ āĻ¯āĻžāĻ° āĻ‰āĻĒāĻ° āĻ§āĻžāĻ°āĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
  • āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ - āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻ‰ā§ŽāĻ¸ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ¤ā§āĻ°ā§‡ āĻĢāĻžāĻ‡āĻ˛ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻžāĨ¤
  • āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĄāĻŋāĻ° — āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤
  • āĻšāĻžāĻ˛āĻžāĻ¨ - āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻšāĻžāĻ˛āĻžāĻ¨āĨ¤
  • āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻž - āĻĒā§‹āĻ°ā§āĻŸ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸āĨ¤
  • āĻāĻ¨ā§āĻŸā§āĻ°āĻŋāĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ - āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļā§‡āĻ° āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤āĨ¤

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

▍āĻ˛āĻžā§āĻš āĻ•āĻ°ā§āĻ¨

āĻ‡āĻŽā§‡āĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ§āĻžāĻ°āĻ• āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ°ā§‡ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¤ā§‡ āĻšāĻžāĻ‡ 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 āĻŸā§āĻ˛ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤
  • āĻĒā§āĻ°ā§‹āĻĄāĻžāĻ•āĻļāĻ¨ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§‹āĻĄ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻāĻŦāĻ‚ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡. āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ - āĻĄāĻŋāĻŸāĻŋāĻ—āĻžāĻ˛ āĻŽāĻšāĻžāĻ¸āĻžāĻ—āĻ°.

āĻāĻŸāĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¯ā§‡ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻŽāĻŋāĻļā§āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, Travis CI āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻŋ CircleCI āĻŦāĻž Github āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻŦāĻ‚ DigitalOcean āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ - AWS āĻŦāĻž LinodeāĨ¤

āĻ†āĻŽāĻ°āĻž Travis CI āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ¤ā§‡ āĻ•āĻŋāĻ›ā§ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻāĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋāĻ•ā§‡ āĻ•āĻžāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ•āĻ°āĻŦ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤

āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡

āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻ•ā§‹āĻĄ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĨ¤ āĻ†āĻŽāĻŋ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻœāĻŸāĻŋāĻ˛āĻ¤āĻžāĻ¯āĻŧ āĻ¯ā§‡āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¨āĻž, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ…āĻ¨āĻ¨ā§āĻ¯, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ–ā§āĻŦ āĻŦā§‡āĻļāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ¸āĻŦā§‡ āĻ¨āĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ¨ āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻŋ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻŦāĻŋāĻˇāĻ¯āĻŧāĻ—ā§āĻ˛āĻŋ āĻ•āĻ­āĻžāĻ° āĻ•āĻ°āĻŦāĨ¤ āĻ†āĻĒāĻ¨āĻŋ Travis CI, CircleCI, Jenkins āĻŦāĻž āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻšāĻ¯āĻŧāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻ¨āĻž āĻ•ā§‡āĻ¨, āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻ°ā§āĻŦāĻ¤ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤

āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻ¤ā§‡, āĻ¯āĻžāĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ—āĻŋāĻŸāĻšāĻžāĻŦ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻāĻ•ā§€āĻ­ā§‚āĻ¤ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸ā§‡āĻ‡ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻžāĻœ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ¸āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨āĨ¤ (āĻ†āĻŽāĻŋ āĻ—āĻŋāĻŸāĻšāĻžāĻŦ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ¯ā§‡ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻŦāĻŋāĻŸāĻŦāĻžāĻ•ā§‡āĻŸ, āĻāĻŦāĻ‚ āĻ—āĻŋāĻŸāĻ˛ā§āĻ¯āĻžāĻŦ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•ā§€āĻ­ā§‚āĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡)āĨ¤

āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻšāĻžāĻ˛ā§ āĻšāĻ˛ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻž āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻŋāĻ¤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°ā§‡, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻļāĻžāĻ–āĻžāĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

▍āĻšāĻžāĻ•āĻ°ā§€āĻ° āĻœā§€āĻŦāĻ¨āĻšāĻ•ā§āĻ°

āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ .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

▍āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž

āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ†āĻŽāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ¯āĻžāĻšā§āĻ›āĻŋāĨ¤ āĻ†āĻŽāĻŋ āĻ­āĻžāĻˇāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¨ā§‹āĻĄ 12 āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻ•ā§‡ āĻĄāĻ•āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛ā§‡āĻ›āĻŋāĨ¤

āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ­ā§āĻ•ā§āĻ¤ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ .travis.yml, āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻļāĻžāĻ–āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ˛ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°āĻž āĻšāĻ˛ā§‡ āĻ¤āĻž āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡, āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ•āĻžāĻ°āĻŖ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻ†āĻ¸āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§‹āĻĄ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻœāĻžāĻ¨āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻļāĻžāĻ–āĻžāĻ¯āĻŧ āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ•āĻŋāĻ¨āĻžāĨ¤ master, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ­āĻ™ā§āĻ— āĻ•āĻ°āĻŦā§‡ āĻ•āĻŋāĻ¨āĻžāĨ¤ āĻāĻ‡ āĻŦāĻŋāĻļā§āĻŦāĻŦā§āĻ¯āĻžāĻĒā§€ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡, āĻ†āĻŽāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻŋ, āĻĒāĻŸāĻ­ā§‚āĻŽāĻŋāĻ¤ā§‡ āĻ“āĻ¯āĻŧā§‡āĻŦāĻĒā§āĻ¯āĻžāĻ• āĻĄā§‡āĻ­ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻšāĻžāĻ˛āĻžāĻ‡ (āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻšā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯), āĻāĻŦāĻ‚ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻšāĻžāĻ¨ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ­āĻžāĻ°ā§‡āĻœ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡ āĻŦā§āĻ¯āĻžāĻœ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻž āĻšā§‹āĻ•, āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ‡ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ“ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻŋ Jest, Travis CI āĻāĻŦāĻ‚ Coveralls āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻ¤āĻžāĻ‡ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻāĻ–āĻžāĻ¨ā§‡ .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

āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻĻā§āĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡:

  • āĻāĻ•āĻŸāĻŋ CI āĻŸā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ‡āĻŽā§‡āĻœāĻŸāĻŋāĻ•ā§‡ āĻĄāĻ•āĻžāĻ° āĻšāĻžāĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨, āĻŸā§āĻ¯āĻžāĻ— āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻĒāĻžāĻ āĻžāĻ¨ (āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡)āĨ¤
  • āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž, āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ§āĻžāĻ°āĻ•āĻŸāĻŋ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž (āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ DigitalOcean āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡ āĻšāĻ˛ā§‡)āĨ¤

āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĄāĻ•āĻžāĻ° āĻšāĻžāĻŦā§‡ āĻ‡āĻŽā§‡āĻœ āĻ¤ā§ˆāĻ°āĻŋ, āĻŸā§āĻ¯āĻžāĻ—āĻŋāĻ‚ āĻāĻŦāĻ‚ āĻĒā§āĻļ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ‡āĻŽā§‡āĻœ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ˛āĻ—āĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻŸā§āĻ¯āĻžāĻ— āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ•ā§ŒāĻļāĻ˛ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ›āĻžāĻĄāĻŧāĻž āĻāĻŸāĻŋ āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¯āĻž āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ–ā§āĻŦ āĻŽāĻŋāĻ˛āĨ¤ āĻĄāĻŋāĻĒā§āĻ˛āĻ¯āĻŧāĻŽā§‡āĻ¨ā§āĻŸ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¯ā§‡āĻŽāĻ¨ āĻŸā§āĻ¯āĻžāĻ—āĻŋāĻ‚ āĻ•ā§ŒāĻļāĻ˛, āĻ˛āĻ—āĻ‡āĻ¨, āĻāĻ¸āĻāĻ¸āĻāĻ‡āĻš āĻ•ā§€ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚, āĻāĻ¸āĻāĻ¸āĻāĻ‡āĻš āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡ āĻ†āĻŽāĻžāĻ° āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§ŒāĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤ āĻ†āĻŽāĻžāĻ° āĻŦāĻ¯āĻŧāĻĢā§āĻ°ā§‡āĻ¨ā§āĻĄ āĻŦāĻžāĻļā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ­āĻžāĻ˛ā§‹, āĻ¯ā§‡āĻŽāĻ¨āĻŸāĻž āĻ…āĻ¨ā§āĻ¯ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻŋāĻ›ā§āĻ° āĻ¸āĻžāĻĨā§‡āĨ¤ āĻ¤āĻŋāĻ¨āĻŋ āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻ‡ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨āĨ¤

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ‚āĻļāĻŸāĻŋ āĻĄāĻ•āĻžāĻ° āĻšāĻžāĻŦā§‡ āĻ›āĻŦāĻŋāĻŸāĻŋ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ›ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻž āĻŦā§‡āĻļ āĻ¸āĻšāĻœāĨ¤ āĻ†āĻŽāĻŋ āĻ¯ā§‡ āĻŸā§āĻ¯āĻžāĻ—āĻŋāĻ‚ āĻ¸ā§āĻ•āĻŋāĻŽāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¤āĻžāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ—āĻŋāĻŸ āĻšā§āĻ¯āĻžāĻļ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ—āĻŋāĻŸ āĻŸā§āĻ¯āĻžāĻ— āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻœāĻĄāĻŧāĻŋāĻ¤, āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻ•ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻŸā§āĻ¯āĻžāĻ—āĻŸāĻŋ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ¯ā§‡āĻŸāĻŋāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸ā§‡āĻŸāĻŋāĻ•ā§‡ āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤ DOCKER_USERNAME и DOCKER_PASSWORD āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ¯āĻž āĻŸā§āĻ°ā§āĻ¯āĻžāĻ­āĻŋāĻ¸ āĻ¸āĻŋāĻ†āĻ‡ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ Travis CI āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻŦā§‡āĻĻāĻ¨āĻļā§€āĻ˛ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻŦā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻāĻŸāĻŋ āĻ­ā§āĻ˛ āĻšāĻžāĻ¤ā§‡ āĻ¨āĻž āĻĒāĻĄāĻŧā§‡āĨ¤

āĻāĻ–āĻžāĻ¨ā§‡ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ‚āĻļ 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, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ‡āĨ¤

āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ āĻŋāĻ¨ āĻ›āĻŋāĻ˛ āĻ¨āĻž. āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ†āĻŽāĻŋ āĻŦā§‡āĻ¸ āĻ‡āĻŽā§‡āĻœ āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻāĻŸāĻž āĻ¸ā§‡āĻŸ āĻ†āĻĒ. āĻāĻŸāĻŋ āĻ˛āĻ•ā§āĻˇ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¯ā§‡ āĻ†āĻŽāĻŋ āĻ¯ā§‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻŸāĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻāĻ•-āĻ•āĻžāĻ˛ā§€āĻ¨ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻāĻ•-āĻ•āĻžāĻ˛ā§€āĻ¨ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ˛āĻžā§āĻš āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻ†āĻŽāĻŋ āĻĄāĻ•āĻžāĻ° āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ 18.04 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ•āĻ‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨ āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ The āĻ¸āĻšāĻœ āĻ—āĻžāĻ‡āĻĄāĨ¤

āĻ†āĻŽāĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻ›āĻŋ āĻ¨āĻž, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻ‡ āĻĻāĻŋāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻŦā§āĻ¯āĻžāĻĒāĻ•āĻ­āĻžāĻŦā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ†āĻŽāĻŋ āĻļā§āĻ§ā§ SSH āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¯ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻŋāĻ¤ āĻ•āĻ°ā§āĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻĻā§‡āĻŦ:

  • āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻ¯ā§‡ āĻ§āĻžāĻ°āĻ•āĻŸāĻŋ āĻšāĻ˛āĻ›ā§‡ āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤
  • āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒāĻŸāĻ­ā§‚āĻŽāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ§āĻžāĻ°āĻ• āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤
  • āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻĒā§‹āĻ°ā§āĻŸ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ 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

āĻ•āĻŋāĻ›ā§ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĻāĻŋāĻ¤ā§‡

āĻāĻŸāĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ Travis CI āĻĨā§‡āĻ•ā§‡ SSH āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦā§‡āĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻŦā§‡āĻ¨ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻĨā§‡āĻ•ā§‡ āĻŦāĻžāĻ§āĻž āĻĻā§‡āĻŦā§‡ āĻ•āĻžāĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŦā§‡āĨ¤

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== [email protected]" | base64

āĻāĻŦāĻ‚ āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻŸāĻŋ āĻ•āĻŋ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°ā§‡ - āĻāĻ•āĻŸāĻŋ āĻŦā§‡āĻ¸64 āĻāĻ¨āĻ•ā§‹āĻĄā§‡āĻĄ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚:

MTIzLjQ1LjY3Ljg5IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQWtsT1Vwa0RIcmZIWTE3U2JybVRJcE5MVEdLOVRqb20vQldEU1UKR1BsK25hZnpsSERUWVc3aGRJNHlaNWV3MThKSDRKVzlqYmhVRnJ2aVF6TTd4bEVMRVZmNGg5bEZYNVFWa2JQcHBTd2cwY2RhMwpQYnY3a09kSi9NVHlCbFdYRkNSK0hBbzNGWFJpdEJxeGlYMW5LaFhwSEFac01jaUxxOFY2UmpzTkFRd2RzZE1GdlNsVksvN1hBCnQzRmFvSm9Bc25jTTFROXg1KzNWMFd3NjgvZUlGbWIxenVVRmxqUUpLcHJyWDg4WHlwTkR2allOYnk2dncvUGIwcndlcnQvRW4KbVorQVc0T1pQblRQSTg5WlBtVk1MdWF5ckQyY0U4NlovaWw4YitndzNyMysxbkthdG1Ja2puMnNvMWQwMVFyYVRsTXFWU3NieApOclJGaTl3cmYrTTdRPT0geW91QGV4YW1wbGUuY29tCg==

āĻāĻ–āĻžāĻ¨ā§‡ āĻ‰āĻĒāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ†āĻ›ā§‡

install:
  - echo < ĐŋŅƒĐąĐģиŅ‡ĐŊŅ‹Đš ĐēĐģŅŽŅ‡, СаĐēОдиŅ€ĐžĐ˛Đ°ĐŊĐŊŅ‹Đš в base64> | base64 -d >> $HOME/.ssh/known_hosts

āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ•āĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•ā§€ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•ā§€ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ•ā§€ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ Travis CI āĻāĻ¨āĻ­āĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§‡āĻ¨ā§āĻŸ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ•ā§‹āĻĨāĻžāĻ“ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻšā§āĻ›ā§‡ āĻ¨āĻžāĨ¤

āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ˛āĻ•ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¸āĻŽāĻ—ā§āĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ - āĻāĻ° āĻ¸āĻžāĻĨā§‡ doctl. āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

doctl compute ssh <droplet> --ssh-command "вŅĐĩ ĐēĐžĐŧĐ°ĐŊĐ´Ņ‹ ĐąŅƒĐ´ŅƒŅ‚ СдĐĩŅŅŒ && СдĐĩŅŅŒ"

TLS/SSL āĻāĻŦāĻ‚ āĻ˛ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻŋāĻ‚

āĻ†āĻŽāĻŋ āĻ‰āĻĒāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ āĻ¯ā§‡ āĻļā§‡āĻˇ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¤āĻž āĻšāĻ˛ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ SSL āĻ›āĻŋāĻ˛ āĻ¨āĻžāĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻŋ āĻœā§‹āĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ Node.js āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻ°āĻŋāĻ­āĻžāĻ°ā§āĻ¸ āĻĒā§āĻ°āĻ•ā§āĻ¸āĻŋ Nginx āĻāĻŦāĻ‚ āĻ†āĻ¸ā§āĻ¨ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻŋ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻŸāĻŋāĻ™ā§āĻ•āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ†āĻŽāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ SSL āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĻ¨āĻŋ, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻļā§āĻ§ā§ āĻāĻ•āĻŸāĻŋ āĻ˛ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĄāĻŋāĻāĻ¨āĻāĻ¸-āĻ āĻāĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ DigitalOcean-āĻāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ˛ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŦā§€āĻ•āĻ°āĻŖ āĻ¸ā§āĻŦ-āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°āĻŋāĻ¤ āĻļāĻ‚āĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ, āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤ āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§‡ āĻ˛ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻžāĻ°ā§‡āĻ° āĻĒāĻŋāĻ›āĻ¨ā§‡ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ SSL āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻ–ā§āĻŦ āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ‡ SSL āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ "āĻšāĻŋāĻ¨ā§āĻ¤āĻž" āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒā§‹āĻ°ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ 80. āĻ¤āĻžāĻ‡ āĻ˛ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ SSL āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž SSL āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•āĨ¤

āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§‹āĻ°ā§āĻŸ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻž āĻ‡āĻ¨āĻ•āĻžāĻŽāĻŋāĻ‚ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ—ā§āĻ˛āĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡ - āĻĒā§‹āĻ°ā§āĻŸ āĻ›āĻžāĻĄāĻŧāĻž 80, āĻ˛ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻžāĻ° āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ 22 SSH āĻāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ‡ āĻĻā§āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤ā§€āĻ¤ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨āĻ“ āĻĒā§‹āĻ°ā§āĻŸā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻž āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻŦā§‡āĨ¤

āĻĢāĻ˛āĻžāĻĢāĻ˛

āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻŸāĻŋāĻ¤ā§‡ āĻ¯āĻž āĻ¯āĻž āĻŦāĻ˛ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¤āĻž āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻĄāĻ•āĻžāĻ° āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻŦāĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ CI/CD āĻšā§‡āĻ‡āĻ¨ā§‡āĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻ—ā§āĻ˛āĻŋ āĻ†āĻŽāĻžāĻ•ā§‡ āĻ†āĻ° āĻ­āĻ¯āĻŧ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻ…āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨ āĻšā§‡āĻ‡āĻ¨ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ¯āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ†āĻ—ā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻāĻ–āĻ¨āĻ“ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ¨āĻ¤ā§āĻ¨, āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻžāĻ° āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ°āĻ“ āĻĻāĻ•ā§āĻˇ āĻ•āĻ°āĻžāĻ° āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¤āĻžāĻ‡ āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ āĻ§āĻžāĻ°āĻ¨āĻž āĻĨāĻžāĻ•āĻ˛ā§‡ āĻĻāĻ¯āĻŧāĻž āĻ•āĻ°ā§‡ āĻ†āĻŽāĻžāĻ•ā§‡ āĻœāĻžāĻ¨āĻžāĻ¨āĨ¤ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻœāĻžāĻ¨āĻŋ āĻ†āĻŽāĻŋ āĻ†āĻļāĻž āĻ•āĻ°āĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ¯āĻŧ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻĒāĻĄāĻŧāĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻŽāĻŋ āĻ¯āĻ¤āĻŸāĻž āĻļāĻŋāĻ–ā§‡āĻ›āĻŋ āĻ¤āĻ¤āĻŸāĻžāĻ‡ āĻļāĻŋāĻ–ā§‡āĻ›āĻŋ āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻāĻ¤ā§‡ āĻ¯ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻĨāĻž āĻŦāĻ˛ā§‡āĻ›āĻŋ āĻ¤āĻž āĻŦā§‡āĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤

āĻĻā§āĻ°āĻˇā§āĻŸāĻŦā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦāĻžāĻœāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ‡āĻŽā§‡āĻœ āĻ†āĻ›ā§‡ āĻĄāĻ•āĻļā§āĻ°āĻŽāĻŋāĻ•, āĻ¯āĻž āĻāĻ• āĻ•ā§āĻ˛āĻŋāĻ•ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻĒāĻžāĻ¤ā§āĻ°ā§‡ āĻ•āĻžāĻœ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ­āĻŋāĻĒāĻŋāĻāĻ¸. āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨āĻ¤ā§āĻ¨ āĻ—ā§āĻ°āĻžāĻšāĻ•āĻĻā§‡āĻ° āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ 3 āĻĻāĻŋāĻ¨ā§‡āĻ° āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤

āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻžāĻ āĻ•āĻ—āĻŖ! āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ CI/CD āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨?

āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ†āĻ‡/āĻ¸āĻŋāĻĄāĻŋ āĻšā§‡āĻ‡āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻžāĻœ āĻ•āĻ°āĻž

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨