āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻ
āĻ¨āĻ˛āĻžāĻāĻ¨ āĻāĻŋāĻĄāĻŋāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻāĻžāĻ āĻāĻ°āĻāĻŋ āĻ¤āĻž āĻāĻāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻŦāĻžāĻŖāĻŋāĻā§āĻ¯āĻŋāĻ āĻŦāĻŋāĻāĻžāĻļ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§ āĻŽāĻžāĻ˛āĻŋāĻāĻžāĻ¨āĻž āĻāĻŦāĻ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻŦāĻšā§-āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ˇ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻ˛ā§āĻāĻžāĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻŋāĻ¤ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻŋāĻ¤ āĻāĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻšāĻā§ āĻŦā§āĻ¯āĻžāĻšāĻ¤ āĻ¨āĻž āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻāĻŋāĻ āĻ¸āĻžāĻāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻāĻžāĻ° āĻ¸ā§āĻ¯āĻŧāĻžāĻ°ā§āĻŽ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻžāĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻĻā§āĻˇā§āĻāĻŋāĻ¤ā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻāĻā§āĻ¯āĻžāĻ¨ āĻĻā§āĻāĻŋ āĻāĻžāĻā§ āĻŦāĻŋāĻāĻā§āĻ¤āĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻ
āĻāĻļāĻāĻŋ āĻĄāĻāĻžāĻ° āĻāĻžāĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻā§ CI/CD āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋ āĻāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§āĨ¤ āĻ¯āĻžāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻ
āĻāĻļ āĻĒāĻĄāĻŧāĻ¤ā§ āĻāĻā§āĻ°āĻšā§ āĻ¨āĻ¨ āĻ¤āĻžāĻ°āĻž āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻā§ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ
āĻāĻļā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŖā§āĻĄ
āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŦāĻāĻ°ā§, āĻ¯āĻ¤ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ āĻ¸āĻŽā§āĻāĻŦ āĻ¸āĻŋāĻāĻ/āĻ¸āĻŋāĻĄāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŋāĻ˛āĨ¤ āĻļāĻ°ā§āĻ¤āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻāĻŋāĻ˛ āĻĄāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻāĻ°āĻž āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻžāĻ°āĻŖā§ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨:
- āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻ°āĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ (āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž)
- āĻ¨ā§āĻ¤ā§āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻĄāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¯āĻŧāĻ¨āĻŋ (āĻ āĻĻā§āĻā§āĻ¤, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻŽāĻ¨ āĻāĻŋāĻ˛)
- R&D āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻĻāĻ°ā§āĻļāĻāĻ¤ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§
MVP-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§, āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻāĻŦāĻ āĻāĻ¨ā§āĻŽāĻžāĻ¨āĻŋāĻ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§:
- āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ¸āĻš 4 IntelÂŽ X5650 āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° (āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻŽā§āĻļāĻŋāĻ¨ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻŦāĻŋāĻāĻļāĻŋāĻ¤)
- āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻžāĻ¸ā§āĻāĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻāĻžāĻļ C++, Python3-āĻ¤ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ
- āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻĒā§āĻ°āĻ§āĻžāĻ¨ 3āĻ¯āĻŧ āĻĒāĻā§āĻˇā§āĻ° āĻā§āĻ˛: āĻāĻžāĻĢāĻāĻž, āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸, āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§, āĻ°ā§āĻĄāĻŋāĻ¸, āĻā§āĻ°āĻžāĻĢāĻžāĻ¨āĻž, āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ā§āĻāĻāĻ˛, āĻŽāĻžāĻāĻāĻ¸āĻāĻŋāĻāĻāĻ˛, âĻ
- āĻĄāĻŋāĻŦāĻžāĻ āĻāĻŦāĻ āĻ°āĻŋāĻ˛āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ˛āĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨
āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¯āĻž āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ° āĻ¤āĻž āĻšāĻ˛ āĻ¯ā§ āĻā§āĻ¨āĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ (CI/CD) āĻāĻžāĻ¸ā§āĻāĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻāĻžāĻŦā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻŽāĻ°āĻž āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§ āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻĒāĻā§āĻˇā§āĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ C++ āĻŦāĻž āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻŦāĻŋāĻāĻļāĻŋāĻ¤ āĻāĻžāĻ¸ā§āĻāĻŽ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ: āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž, āĻŦāĻŋāĻ˛ā§āĻ āĻāĻŽā§āĻ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĨ¤ āĻāĻāĻāĻŋ āĻ āĻāĻžāĻ¨āĻž āĻāĻžāĻ°āĻŖā§, āĻ āĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻĨāĻž: CI āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻĒā§āĻ°āĻā§āĻā§āĻ āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, py āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋ requirements.txt āĻĨā§āĻā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°, āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻŦāĻ āĻ¸āĻš āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧāĨ¤ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¸āĻšāĻāĻžāĻŽā§āĨ¤ āĻāĻ° āĻĒāĻ°ā§, āĻĒā§āĻ°āĻļāĻžāĻ¸āĻā§āĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻŋāĻāĻ˛ā§āĻ¯āĻžāĻŦ-āĻ¸āĻŋāĻāĻ āĻ¸āĻŋāĻāĻ/āĻ¸āĻŋāĻĄāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ āĻāĻ āĻŽāĻ¤ āĻāĻŋāĻā§ āĻĻā§āĻāĻžāĻ¯āĻŧ:
āĻāĻžāĻ āĻžāĻŽā§āĻāĻ¤āĻāĻžāĻŦā§, gitlab-ci.yml āĻāĻ° āĻŽāĻ¤ āĻ˛āĻžāĻāĻāĻŋāĻ˛
---
variables:
# ĐŧиĐŊиĐŧĐ°ĐģŅĐŊĐ°Ņ вĐĩŅŅиŅ ĐĻĐĐŖ ĐŊĐ° ŅĐĩŅвĐĩŅĐ°Ņ
, ĐŗĐ´Đĩ ŅаСвОŅĐ°ŅиваĐĩŅŅŅ ĐēĐģĐ°ŅŅĐĩŅ
CMAKE_CPUTYPE: "westmere"
DEBIAN: "MYREGISTRY:5000/debian:latest"
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh && echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config
stages:
- build
- testing
- deploy
debug.debian:
stage: build
image: $DEBIAN
script:
- cd builds/release && ./build.sh
paths:
- bin/
- builds/release/bin/
when: always
release.debian:
stage: build
image: $DEBIAN
script:
- cd builds/release && ./build.sh
paths:
- bin/
- builds/release/bin/
when: always
## testing stage
tests.codestyle:
stage: testing
image: $DEBIAN
dependencies:
- release.debian
script:
- /bin/bash run_tests.sh -t codestyle -b "${CI_COMMIT_REF_NAME}_codestyle"
tests.debug.debian:
stage: testing
image: $DEBIAN
dependencies:
- debug.debian
script:
- /bin/bash run_tests.sh -e codestyle/test_pylint.py -b "${CI_COMMIT_REF_NAME}_debian_debug"
artifacts:
paths:
- run_tests/username/
when: always
expire_in: 1 week
tests.release.debian:
stage: testing
image: $DEBIAN
dependencies:
- release.debian
script:
- /bin/bash run_tests.sh -e codestyle/test_pylint.py -b "${CI_COMMIT_REF_NAME}_debian_release"
artifacts:
paths:
- run_tests/username/
when: always
expire_in: 1 week
## staging stage
deploy_staging:
stage: deploy
environment: staging
image: $DEBIAN
dependencies:
- release.debian
script:
- cd scripts/deploy/ &&
python3 createconfig.py -s $CI_ENVIRONMENT_NAME &&
/bin/bash install_venv.sh -d -r ../../requirements.txt &&
python3 prepare_init.d.py &&
python3 deploy.py -s $CI_ENVIRONMENT_NAME
when: manual
āĻāĻāĻŋ āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¯ā§ āĻ¸āĻŽāĻžāĻŦā§āĻļ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻāĻŋ āĻ¤āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻŋāĻ¤ā§āĻ°ā§āĻ° āĻāĻĒāĻ° āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻ¯āĻĻāĻŋāĻ āĻāĻžāĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¤āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ, āĻ¤āĻŦā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻŽāĻŋ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦ āĻ¨āĻžāĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ āĻ¨ā§āĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻŦā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻŽāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻĒāĻ¨āĻžāĻ° āĻĻā§āĻˇā§āĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖ āĻāĻ°āĻŦ āĻ¯ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻ˛āĻŋāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻ°āĻŽ āĻĨāĻžāĻā§:
- createconfig.py - āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ¸āĻš āĻāĻāĻāĻŋ settings.ini āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ (āĻĒā§āĻ°āĻŋāĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨, āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨, āĻā§āĻ¸ā§āĻāĻŋāĻ, ...)
- install_venv.sh - āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ py āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§
- ready_init.d.py â āĻā§āĻŽāĻĒā§āĻ˛ā§āĻā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻŽā§āĻĒā§āĻ¨ā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻāĻžāĻ°ā§āĻ-āĻ¸ā§āĻāĻĒ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°ā§
- deploy.py - āĻ¨āĻ¤ā§āĻ¨ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻĒāĻā§ āĻāĻŦāĻ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§
āĻā§āĻ¸. āĻ¸ā§āĻā§āĻāĻŋāĻ āĻ¸ā§āĻā§āĻ āĻĒā§āĻ°āĻŋāĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻ°āĻ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖā§ āĻĒāĻŖā§āĻ¯ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ (CentOS)āĨ¤ āĻāĻ°āĻ 5āĻāĻŋ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻļāĻžāĻ°ā§āĻ°āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻāĻ āĻĄāĻāĻ¨ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ā§ˇ āĻāĻŦāĻ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ° āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻŽāĻ°āĻ¤ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻāĻ°āĻ āĻŦā§āĻļāĻŋ āĻāĻ āĻŋāĻ¨ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻā§āĨ¤ āĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻāĻāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻ āĻšāĻ¯āĻŧā§ āĻāĻ ā§ āĻ¯ā§ āĻ¤āĻžāĻā§ āĻāĻžāĻĄāĻŧāĻž āĻāĻ°āĻž āĻ āĻ¸āĻŽā§āĻāĻŦ āĻāĻŋāĻ˛ ...
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻāĻŖā§āĻĄ
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻāĻŋ āĻāĻ¯āĻŧā§āĻ āĻĄāĻāĻ¨ āĻĒā§āĻĨāĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻĻāĻ°ā§āĻļāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¯āĻž āĻĄāĻāĻžāĻ°āĻĢāĻžāĻāĻ˛āĻ¸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ āĻšāĻ˛ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻāĻŋāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ-āĻ°āĻŋāĻ˛āĻŋāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻ¤āĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻāĻāĻžāĻŦā§, āĻāĻāĻ¸āĻžāĻĨā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§: āĻ¯āĻ¤āĻā§āĻ˛āĻŋ āĻāĻžāĻ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻāĻā§ āĻŦāĻž āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋāĻ° āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻāĻā§āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻˇā§āĻĒāĻ¤ā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸ā§āĻā§āĻāĻŋāĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ āĻŦāĻļā§āĻ¯āĻ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻšāĻ¤ā§ āĻšāĻŦā§ (āĻĒā§āĻ°ā§āĻ, āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĻ¤ā§ āĻā§āĻ¨ā§ āĻā§āĻĻ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻž)āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻŽā§āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨ āĻ¸āĻŽā§āĻĒāĻĻ āĻšāĻ˛ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻ° āĻŦā§āĻļāĻŋ āĻāĻŋāĻā§ āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤
āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻ° āĻ¸āĻ°āĻ˛āĻ¤āĻž āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯ā§āĻ° āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻ° āĻāĻžāĻ°āĻŖā§ āĻĄāĻāĻžāĻ° āĻ¸ā§āĻ¯āĻŧāĻžāĻ°ā§āĻŽ āĻŦā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻ¯ā§ āĻāĻžāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋ āĻ¤āĻž āĻšāĻ˛ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¨ā§āĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž:
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
kilqc94pi2upzvabttikrfr5d nop-test-1 Ready Active 19.03.2
jilwe56pl2zvabupryuosdj78 nop-test-2 Ready Active 19.03.2
j5a4yz1kr2xke6b1ohoqlnbq5 * nop-test-3 Ready Active Leader 19.03.2
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻāĻāĻāĻŋ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨:
$ docker network create --driver overlay --subnet 10.10.10.0/24 nw_swarm
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž CI āĻĨā§āĻā§ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻ°āĻŋāĻŽā§āĻ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ā§āĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§āĻā§āĻˇāĻŋāĻ¤ā§ āĻāĻŋāĻāĻ˛ā§āĻ¯āĻžāĻŦ-āĻ¸āĻŋāĻāĻ āĻāĻŦāĻ āĻ¸ā§āĻ¯āĻŧāĻžāĻ°ā§āĻŽ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻāĻŋ: āĻ¸āĻžāĻ°ā§āĻāĻŋāĻĢāĻŋāĻā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž, āĻā§āĻĒāĻ¨ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĄāĻāĻžāĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻžāĨ¤ āĻāĻāĻāĻž
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž .gitlab-ci .yml-āĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻ§ā§āĻŦāĻāĻ¸ā§āĻ° āĻāĻžāĻ āĻ¯ā§āĻ āĻāĻ°ā§āĻāĻŋāĨ¤
.gitlab-ci .yml-āĻ āĻāĻ°āĻ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻžāĻāĻ°āĻŋ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
## staging stage
deploy_staging:
stage: testing
before_script:
- echo "override global 'before_script'"
image: "REGISTRY:5000/docker:latest"
environment: staging
dependencies: []
variables:
DOCKER_CERT_PATH: "/certs"
DOCKER_HOST: tcp://10.50.173.107:2376
DOCKER_TLS_VERIFY: 1
CI_BIN_DEPENDENCIES_JOB: "release.centos.7"
script:
- mkdir -p $DOCKER_CERT_PATH
- echo "$TLSCACERT" > $DOCKER_CERT_PATH/ca.pem
- echo "$TLSCERT" > $DOCKER_CERT_PATH/cert.pem
- echo "$TLSKEY" > $DOCKER_CERT_PATH/key.pem
- docker stack deploy -c docker-compose.yml ${CI_ENVIRONMENT_NAME}_${CI_COMMIT_REF_NAME} --with-registry-auth
- rm -rf $DOCKER_CERT_PATH
when: manual
## stop staging stage
stop_staging:
stage: testing
before_script:
- echo "override global 'before_script'"
image: "REGISTRY:5000/docker:latest"
environment: staging
dependencies: []
variables:
DOCKER_CERT_PATH: "/certs"
DOCKER_HOST: tcp://10.50.173.107:2376
DOCKER_TLS_VERIFY: 1
script:
- mkdir -p $DOCKER_CERT_PATH
- echo "$TLSCACERT" > $DOCKER_CERT_PATH/ca.pem
- echo "$TLSCERT" > $DOCKER_CERT_PATH/cert.pem
- echo "$TLSKEY" > $DOCKER_CERT_PATH/key.pem
- docker stack rm ${CI_ENVIRONMENT_NAME}_${CI_COMMIT_REF_NAME}
# TODO: need check that stopped
when: manual
āĻāĻĒāĻ°ā§āĻ° āĻā§āĻĄ āĻ¸ā§āĻ¨āĻŋāĻĒā§āĻ āĻĨā§āĻā§, āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨ āĻ¯ā§ āĻĻā§āĻāĻŋ āĻŦā§āĻ¤āĻžāĻŽ (deploy_staging, stop_staging) āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ ā§āĻ¯āĻžāĻāĻļāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻ¨āĻžāĻŽ āĻļāĻžāĻāĻžāĻ° āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°āĻ¤āĻž āĻ¯āĻĨā§āĻˇā§āĻ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋ āĻ
āĻ¨āĻ¨ā§āĻ¯ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻ, āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĨ¤ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ°āĻž āĻšāĻŦā§, āĻ¤āĻŦā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻāĻ (āĻāĻžāĻ°āĻŖ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ) - āĻāĻŽāĻ°āĻž āĻ¯āĻž āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ (āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°) āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŋ Docker-compose.yml, āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§āĨ¤
Docker-compose.yml
---
version: '3'
services:
userprop:
image: redis:alpine
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
celery_bcd:
image: redis:alpine
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
schedulerdb:
image: mariadb:latest
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: schedulerdb
MYSQL_USER: ****
MYSQL_PASSWORD: ****
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--explicit_defaults_for_timestamp=1']
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
celerydb:
image: mariadb:latest
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: celerydb
MYSQL_USER: ****
MYSQL_PASSWORD: ****
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
cluster:
image: $CENTOS7
environment:
- CENTOS
- CI_ENVIRONMENT_NAME
- CI_API_V4_URL
- CI_REPOSITORY_URL
- CI_PROJECT_ID
- CI_PROJECT_URL
- CI_PROJECT_PATH
- CI_PROJECT_NAME
- CI_COMMIT_REF_NAME
- CI_BIN_DEPENDENCIES_JOB
command: >
sudo -u myusername -H /bin/bash -c ". /etc/profile &&
mkdir -p /storage1/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME &&
cd /storage1/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME &&
git clone -b $CI_COMMIT_REF_NAME $CI_REPOSITORY_URL . &&
curl $CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=$CI_BIN_DEPENDENCIES_JOB -o artifacts.zip &&
unzip artifacts.zip ;
cd /storage1/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME/scripts/deploy/ &&
python3 createconfig.py -s $CI_ENVIRONMENT_NAME &&
/bin/bash install_venv.sh -d -r ../../requirements.txt &&
python3 prepare_init.d.py &&
python3 deploy.py -s $CI_ENVIRONMENT_NAME"
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
tty: true
stdin_open: true
networks:
nw_swarm:
networks:
nw_swarm:
external: true
āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨ āĻ¯ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ (nw_swarm) āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻŦāĻ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ˛āĻŦā§āĻ§āĨ¤
āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ (redis, mysql-āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§) āĻāĻžāĻ¸ā§āĻāĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ˛ āĻĨā§āĻā§ āĻĒā§āĻĨāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻžāĻ¸ā§āĻāĻŽāĻā§āĻ˛āĻŋāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ)āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻāĻŦāĻŋāĻ¤ā§ āĻ¸āĻŋāĻāĻŽāĻĄāĻŋ āĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻŽāĻ¤ āĻĻā§āĻāĻžāĻā§āĻā§ āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻ āĻāĻļ I-āĻ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĨā§āĻā§ āĻāĻžāĻ°ā§āĻ¯āĻ¤ āĻāĻŋāĻ¨ā§āĻ¨ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻŽāĻŋ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻŦ:
- git āĻā§āĻ˛ā§āĻ¨... - āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻĒāĻžāĻ¨ (createconfig.py, install_venv.sh, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)
- āĻāĻžāĻ°ā§āĻ˛... && āĻāĻ¨āĻāĻŋāĻĒ... - āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻāĻ¨āĻāĻŋāĻĒ āĻāĻ°ā§āĻ¨ (āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĻā§āĻ˛āĻŋ)
āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻāĻ¨āĻ āĻ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ°āĻ¯āĻŧā§āĻā§: āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻĨā§āĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻ¨āĻ¯āĻŧā§ˇ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ āĻĒā§āĻ°āĻā§āĻ¸āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻŋ, āĻāĻāĻžāĻŦā§:
.gitlab-ci.yml-āĻ, āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻžāĻ˛ā§āĻ¨ā§āĻ¸āĻžāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻ˛āĻžāĻāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻŋ (āĻ¯āĻž, āĻ¯āĻāĻ¨ āĻāĻŽāĻŋāĻ āĻāĻ°ā§, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§ (āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ¨āĻ¤ā§āĻ¨ nginx āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§: /etc/nginx/conf)āĨ¤ d/${CI_COMMIT_REF_NAME}.conf) - docker-compose-nginx.yml āĻā§āĻĄ āĻĻā§āĻā§āĻ¨)
- docker stack deploy -c docker-compose-nginx.yml ${CI_ENVIRONMENT_NAME} --with-registry-auth
docker-compose-nginx.yml
---
version: '3'
services:
nginx:
image: nginx:latest
environment:
CI_COMMIT_REF_NAME: ${CI_COMMIT_REF_NAME}
NGINX_CONFIG: |-
server {
listen 8080;
server_name staging_${CI_COMMIT_REF_NAME}_cluster.dev;
location / {
proxy_pass http://staging_${CI_COMMIT_REF_NAME}_cluster:8080;
}
}
server {
listen 5555;
server_name staging_${CI_COMMIT_REF_NAME}_cluster.dev;
location / {
proxy_pass http://staging_${CI_COMMIT_REF_NAME}_cluster:5555;
}
}
volumes:
- /tmp/staging/nginx:/etc/nginx/conf.d
command:
/bin/bash -c "echo -e "$$NGINX_CONFIG" > /etc/nginx/conf.d/${CI_COMMIT_REF_NAME}.conf;
nginx -g "daemon off;";
/etc/init.d/nginx reload"
ports:
- 8080:8080
- 5555:5555
- 3000:3000
- 443:443
- 80:80
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
networks:
nw_swarm:
external: true
āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ°ā§, āĻāĻĒāĻĄā§āĻ /etc/hosts; nginx āĻ url āĻ˛āĻŋāĻā§āĻ¨:
10.50.173.106 staging_BRANCH-1831_cluster.dev
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻā§āĻāĻŋāĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻāĻāĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻ¸āĻāĻā§āĻ¯āĻžāĻ¯āĻŧ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻŦāĻŋāĻˇā§āĻ¯ā§ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž:
- āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĒā§āĻĨāĻ āĻāĻ°ā§āĻ¨
- āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĄāĻāĻžāĻ°āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻā§
- āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŽ āĻ˛ā§āĻĄ āĻ¨ā§āĻĄ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°ā§āĻ¨
- āĻ¨āĻžāĻŽā§āĻ° āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĻ¨ (āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻŽāĻ¤ā§ āĻāĻāĻĄāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻāĻ°ā§)
- āĻāĻāĻāĻŋ āĻā§āĻ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻāĻŋ āĻ§ā§āĻŦāĻāĻ¸ āĻšāĻ¯āĻŧā§ āĻā§āĻā§
- ...
āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§āĻˇ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ
āĻāĻ¤ā§āĻ¸: www.habr.com