(āĻāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻŋāĻ¤ā§āĻ°
āĻā§āĻ°āĻŋāĻāĻŋāĻāĻ¸!
āĻāĻŽāĻžāĻ° āĻ¨āĻžāĻŽ āĻšāĻ˛ āĻāĻāĻā§āĻ¨āĻŋ āĻā§āĻ°āĻāĻŋāĻ¨, āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻŽāĻžāĻāĻ¨āĻŋāĻ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĻāĻ˛ā§āĻ° āĻāĻāĻāĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ° āĻĒāĻ˛āĻŋāĻŽā§āĻāĻžāĻ˛.
āĻā§āĻ¨ā§ āĻŦāĻĄāĻŧ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻŦāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨: "āĻā§āĻ¨ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻāĻŋ āĻāĻāĻŋ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻžāĻ˛?" āĻāĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻžāĻ° āĻāĻā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ§āĻžāĻĒ āĻ āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻāĻ°ā§āĨ¤ āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§āĻ° āĻā§āĻāĻ¨ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻšāĻ˛ā§ āĻāĻāĻŋ āĻāĻžāĻ˛āĨ¤ āĻāĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨. āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻ¸āĻšāĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻāĻžāĻ°āĻāĻŋāĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ. āĻāĻ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻŋ āĻ¸āĻā§āĻˇāĻŽ? āĻāĻŋāĻāĻžāĻŦā§ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻŦā§āĻ¨ āĻāĻŦāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ āĻāĻĄāĻŧā§ āĻ¤ā§āĻ˛āĻŦā§āĻ¨? āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŽā§āĻļāĻŋāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻā§āĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ
āĻāĻŋāĻā§āĻāĻ¤āĻž āĻ¨āĻŋāĻā§āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻ
āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻ
1. āĻā§āĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ?
āĻāĻ¤āĻŋāĻĒā§āĻ°ā§āĻŦā§ āĻšāĻžāĻŦāĻ°-āĻ-āĻ āĻāĻŽāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻā§āĻ˛āĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻ¸āĻā§āĻā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ,
āĻĨāĻžāĻŽā§! āĻā§āĻ āĻāĻŋ āĻāĻ¸āĻ˛ā§ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻā§? āĻāĻāĻž āĻšā§āĻ¯āĻžāĻ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻāĻ
āĻ¤āĻžāĻšāĻ˛ā§ āĻŽāĻžāĻ¨ā§āĻˇ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ? āĻ¸āĻ°ā§āĻŦā§āĻĒāĻ°āĻŋ, āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻ°āĻ¯āĻŧā§āĻā§: āĻā§āĻ°ā§āĻ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ и āĻā§āĻ¨āĻāĻŋāĻ¨ā§āĻ¸. āĻāĻŽāĻŋ āĻāĻāĻāĻžāĻŦā§ āĻāĻ¤ā§āĻ¤āĻ° āĻĻā§āĻŦāĨ¤ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ¨āĻāĻŋāĻ¨ā§āĻ¸ āĻāĻŦāĻ āĻ¸āĻ¤ā§āĻ¯ āĻ¯āĻĨā§āĻˇā§āĻ āĻšāĻŦā§āĨ¤ āĻĒāĻžāĻ˛āĻžāĻā§āĻ°āĻŽā§, āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ - āĻāĻ°āĻ āĻ āĻāĻŋāĻ¯ā§āĻāĻŋāĻ¤, āĻ¯āĻāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¯ā§āĻŽāĻ¨ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻā§āĻ¨āĻāĻŋāĻ¨ā§āĻ¸. āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻāĻĒāĻ¨āĻžāĻ°. āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨āĻļā§āĻ˛ āĻ˛āĻā§āĻˇā§āĻ¯ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻ˛ āĻā§āĻāĻāĻāĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻā§āĻ¨ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž āĻ¯āĻž āĻ¸āĻšāĻ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ āĻ¨āĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻāĻā§ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
āĻ¯āĻžāĻĻā§āĻ° āĻ˛āĻā§āĻˇā§āĻ¯ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ ā§āĻā§: "āĻā§āĻ¨ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻŦā§āĻā§ āĻ¨āĻŋāĻā§āĻā§āĻ¨ āĻ¨āĻž āĻ¯ā§āĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻāĻžāĻˇāĻžāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§āĻā§āĻˇāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻāĻā§?" āĻāĻŦāĻ āĻāĻāĻ¨ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ.
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻŽāĻžāĻĻā§āĻ° "āĻāĻ¨ā§āĻ¸āĻā§āĻ°ā§āĻŽā§āĻ¨ā§āĻāĻžāĻ˛ āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ"āĨ¤ āĻ¨āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ āĻāĻžāĻ°āĻāĻŋ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°ā§āĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ:
- āĻāĻāĻŋ āĻāĻŋāĻĒāĻŋāĻāĻ˛ āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸ā§āĻ° āĻ āĻ§ā§āĻ¨ā§ āĻāĻāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ
- āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻā§āĻ˛ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻžāĻāĻĨāĻ¨ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°
- āĻ¯ā§ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻ¸āĻŽāĻžāĻŦā§āĻļ āĻšāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻĨā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻ¯ā§āĻ
- āĻāĻā§āĻ˛āĻŋ āĻšāĻ˛, āĻ āĻŦāĻļā§āĻˇā§, āĻāĻāĻāĻŋ āĻšā§āĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĨ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻŦāĻ āĻā§āĻāĻ¸ā§āĻā§āĻĄ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻāĻŦāĻ āĻāĻžāĻāĻž āĻŽā§āĻļāĻŋāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤
2. āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻ¨ā§āĻ¤ā§āĻ¤ā§āĻŦā§ āĻ§āĻžāĻ°āĻŖāĻž
āĻāĻžāĻ¸ā§āĻ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°. āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¯āĻž:
- āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻ°āĻžāĻā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻā§āĻ¸ āĻāĻžāĻā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
- āĻĒāĻžāĻ āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻā§āĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻŽā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻāĻŽāĻ¨ āĻāĻŽāĻžāĻ¨ā§āĻĄ
- āĻ āĻŦāĻšāĻŋāĻ¤ āĻāĻ°ā§ āĻā§āĻšā§āĻ¤ āĻāĻ°ā§āĻŽā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ°
āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ master.cfg. āĻāĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ°ā§āĻā§ āĻāĻā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°. āĻĒāĻ°ā§ āĻĻā§āĻāĻžāĻŦā§ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ āĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧāĨ¤ āĻĢāĻžāĻāĻ˛ āĻ¨āĻŋāĻā§āĻ master.cfg āĻāĻāĻāĻŋ āĻĒāĻžāĻāĻĨāĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ.
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻŦāĻ¸ā§āĻ¤ā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽ āĻāĻā§ āĻāĻ°ā§āĻŽā§. āĻāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻ āĻ¨ā§āĻ¯ āĻšā§āĻ¸ā§āĻā§ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ OS āĻ¸āĻš āĻ˛āĻā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻŦāĻž āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋāĻ¤ā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°. āĻāĻāĻŋ āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻŦāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¸āĻš āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻā§āĻ˛āĻŋ āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ virtualenv, venv.
āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻ¸āĻāĻ˛ā§āĻ° āĻāĻžāĻā§ āĻāĻĻā§āĻļ āĻ¸āĻŽā§āĻĒā§āĻ°āĻāĻžāĻ° āĻāĻ°ā§ āĻāĻ°ā§āĻŽā§-y, āĻāĻŦāĻ āĻ¸ā§, āĻā§āĻ°ā§, āĻ¸ā§āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°ā§āĨ¤ āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻāĻŋ āĻĻā§āĻāĻž āĻ¯āĻžāĻā§āĻā§ āĻ¯ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻ°ā§āĻŽā§-āĻ āĻāĻāĻ¨ā§āĻĄā§āĻ āĻāĻžāĻ˛āĻžāĻā§āĻā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯ āĻāĻāĻāĻ¨ āĻāĻ°ā§āĻŽā§ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻāĻžāĻ˛āĻžāĻā§āĻā§āĨ¤
āĻā§āĻāĻāĻāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋāĻ¤ā§ āĻāĻā§ āĻāĻ°ā§āĻŽā§-āĻ
3. āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨
āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŦāĻžāĻ° āĻāĻ˛. āĻāĻŽāĻŋ āĻšā§āĻ¸ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŦā§āĻ¨ā§āĻā§ 18.04 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŦ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°- āĻāĻāĻāĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻ°ā§āĻŽā§-āĻ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻĒāĻ¨āĻžāĻā§ python3.7 āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
sudo apt-get update
sudo apt-get install python3.7
āĻ¯āĻžāĻĻā§āĻ° 3.7.2 āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ python3.7.1 āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤āĻā§āĻ˛āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
sudo apt-get update
sudo apt-get software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get install python3.7
sudo ln -fs /usr/bin/python3.7 /usr/bin/python3
pip3 install --upgrade pip
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻā§āĻāĻ āĻāĻ°ā§āĻā§āĻ¨ и āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ-āĻ
/*ĐŅĐĩ ŅŅĐž ĐŋОд sudo ĐąŅĐ´ĐĩŅ ŅŅŅĐ°ĐŊОвĐģĐĩĐŊĐŊĐž Đ´ĐģŅ вŅĐĩŅ
ĐŋĐžĐģŅСОваŅĐĩĐģĐĩĐš в диŅĐĩĐēŅĐžŅиŅ /usr/local/lib/python3.7/dist-packages*/
#ĐĐ° Ņ
ĐžŅŅĐĩ ĐēĐžŅĐžŅŅĐš ĐŋŅОиСвОдиŅ ĐŧĐžĐŊиŅĐžŅиĐŊĐŗ Worker-Ов
sudo pip install twisted #ĐийĐģиОŅĐĩĐēĐ° twisted
sudo pip install buildbot #BuildMaster
#ĐĐžĐŋĐžĐģĐŊиŅĐĩĐģŅĐŊŅĐš ŅŅĐŊĐēŅиОĐŊĐ°Đģ
pip install pysqlite3 #ĐŖŅŅĐ°ĐŊавĐģиваĐĩĐŧ йаСŅ sqllite в ŅŅĐĩĐąĐŊŅŅ
ŅĐĩĐģŅŅ
pip install jinja2 #framework ĐŊĐ°ĐŋОдОйиĐĩ django, Đ´ĐģŅ web и Đ´ĐģŅ ĐŋĐžŅŅОвŅŅ
ŅĐ°ŅŅŅĐģĐģĐžĐē
pip install autobahn #Web cĐžĐēĐĩŅŅ Đ´ĐģŅ ŅвŅСи BuildMaster->Worker
pip install sqlalchemy sqlalchemy-migrate #ĐĐģŅ ĐžŅОйŅĐ°ĐļĐĩĐŊиŅ ŅŅ
ĐĩĐŧŅ йаСŅ Đ´Đ°ĐŊĐŊŅŅ
#ĐĐģŅ Web ĐžŅОйŅĐ°ĐļĐĩĐŊиŅ BuildBot-a
pip install buildbot-www buildbot-grid-view buildbot-console-view buildbot-waterfall-view
pip install python-dateutil #ĐŅОйŅĐ°ĐļĐĩĐŊиĐĩ Đ´Đ°Ņ в web
#ĐĐ° ŅŅĐžŅĐžĐŊĐĩ Ņ
ĐžŅŅĐ° ĐēĐžŅĐžŅŅĐš ĐŊĐĩĐŋĐžŅŅĐĩĐ´ŅŅвĐĩĐŊĐŊĐž ĐžŅŅŅĐĩŅŅвĐģŅĐĩŅ ŅйОŅĐēŅ и ŅĐĩŅŅиŅОваĐŊиĐĩ
pip install buildbot-worker #Worker
#ĐĐžĐŋĐžĐģĐŊиŅĐĩĐģŅĐŊŅĐš ŅŅĐŊĐēŅиОĐŊĐ°Đģ
sudo pip install virtualenv #ĐиŅŅŅĐ°ĐģŅĐŊĐ°Ņ ŅŅĐĩĐ´Đ°
4. āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒ
āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°. āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻĨāĻžāĻāĻŦā§ /home/habr/master.
mkdir master
buildbot create-master master # ХОйŅŅвĐĩĐŊĐŊĐž ŅĐ´ĐĩŅŅ и ŅОСдаĐĩĐŧ
mkdir worker
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker localhost:4000 yourWorkerName password
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ āĻĻā§āĻĄāĻŧāĻžāĻ¨ āĻāĻ°ā§āĻŽā§, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻšāĻŦā§ /home/habr/worker āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°, āĻ¯āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻāĻā§ master.cfg. āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻā§āĻā§āĻā§āĻ° āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻ°āĻž, āĻāĻŦāĻ āĻ¤āĻž āĻāĻ°āĻ¤ā§ āĻĨāĻžāĻāĻŦā§ āĻā§āĻāĻāĻāĻ. āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻāĻ°ā§āĻŽā§-āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§ /home/habr/yourProject/build.
"āĻ¸ā§āĻ¨āĻžāĻ° āĻāĻžāĻŦāĻŋ
āĻāĻŦāĻ āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻāĻŋ āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ
āĻ¨ā§āĻā§āĻā§āĻĻ āĻ˛āĻŋāĻā§āĻā§āĻ¨: āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¯ā§ āĻŽāĻžāĻ˛āĻŋāĻ āĻĨā§āĻā§ āĻĻāĻžāĻŦāĻŋ āĻāĻ°āĻŦā§ āĻāĻ°ā§āĻŽā§-āĻāĻŦāĻ āĻāĻ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¨āĻž āĻāĻžāĻ°āĻŖ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻ¨ā§āĻāĨ¤ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻāĻŋ āĻā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§
āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° и āĻāĻ°ā§āĻŽā§ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĨ¤ āĻāĻāĻž āĻšāĻ¯āĻŧ āĻ¯ā§ āĻāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻŦāĻŋāĻ°āĻ¤āĻŋ āĻāĻŦāĻ āĻāĻ°ā§āĻŽā§ āĻĨā§āĻā§ āĻāĻ¤ā§āĻ¤āĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°-āĻ. āĻ¯āĻĻāĻŋ āĻā§āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¨āĻž āĻĨāĻžāĻā§, āĻ¸āĻāĻ¯ā§āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻžāĻŦāĻŋ --keepalive=60 āĻļā§āĻ§ā§ āĻāĻ° āĻĒāĻ°ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻž āĻ°āĻŋāĻŦā§āĻ
5. āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĨ¤ āĻ§āĻžāĻĒā§ āĻ§āĻžāĻĒā§ āĻ°ā§āĻ¸āĻŋāĻĒāĻŋ
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻŽā§āĻļāĻŋāĻ¨ā§āĻ° āĻĒāĻžāĻļā§ āĻŦāĻžāĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°ā§āĻāĻŋ āĻ¸ā§āĻˇā§āĻāĻŋāĻāĻ°ā§āĻ¤āĻž. āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ /home/habr/master. āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ master.cfg āĻāĻāĻ¨āĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨ā§āĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¨āĻŋāĻā§āĻ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻā§ master.cmg.sample. āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻŋāĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ master.cfg.āĻ¨āĻŽā§āĻ¨āĻž в master.cfg
mv master.cfg.sample master.cfg
āĻāĻ° āĻāĻ āĻāĻ āĻā§āĻ˛ā§āĻ¨ master.cfg. āĻāĻŦāĻ āĻāĻ° āĻāĻāĻŋ āĻāĻ āĻŋāĻ¤ āĻāĻŋ āĻ¤āĻžāĻāĻžāĻ¨. āĻāĻŦāĻ āĻāĻ° āĻĒāĻ°ā§, āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋāĨ¤
master.cfg
c['change_source'] = []
c['change_source'].append(changes.GitPoller(
'git://github.com/buildbot/hello-world.git',
workdir='gitpoller-workdir', branch='master',
pollInterval=300))
c['schedulers'] = []
c['schedulers'].append(schedulers.SingleBranchScheduler(
name="all",
change_filter=util.ChangeFilter(branch='master'),
treeStableTimer=None,
builderNames=["runtests"]))
c['schedulers'].append(schedulers.ForceScheduler(
name="force",
builderNames=["runtests"]))
factory = util.BuildFactory()
factory.addStep(steps.Git(repourl='git://github.com/buildbot/hello-world.git', mode='incremental'))
factory.addStep(steps.ShellCommand(command=["trial", "hello"],
env={"PYTHONPATH": "."}))
c['builders'] = []
c['builders'].append(
util.BuilderConfig(name="runtests",
workernames=["example-worker"],
factory=factory))
c['services'] = []
c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
c['buildbotURL'] = "http://localhost:8010/"
c['www'] = dict(port=8010,
plugins=dict(waterfall_view={}, console_view={}, grid_view={}))
c['db'] = {
'db_url' : "sqlite:///state.sqlite",
}
5.1 āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻ
c = BuildmasterConfig = {}
Buildmaster Config â āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŽā§āĻ˛āĻŋāĻ āĻ
āĻāĻŋāĻ§āĻžāĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§ āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻāĨ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻ¸āĻšāĻāĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻā§āĻĄā§ āĻāĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻŽ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ "āĻ". āĻ¨āĻžāĻŽ
5.2 āĻļā§āĻ°āĻŽāĻŋāĻ
c['workers'] = [worker.Worker("example-worker", "pass")]
āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻāĻā§āĻāĻŋāĻ¤ āĻāĻ°āĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°-y āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻ°ā§āĻŽā§-s āĻāĻŽāĻŋ āĻ¨āĻŋāĻā§āĻ āĻāĻ°ā§āĻŽā§ āĻāĻŽāĻ°āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ
5.3 āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨_āĻā§āĻ¸
c['change_source'] = []
c['change_source'].append(changes.GitPoller(
'git://github.com/buildbot/hello-world.git',
workdir='gitpoller-workdir', branch='master',
pollInterval=300))
āĻāĻžāĻŦāĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨_āĻā§āĻ¸ āĻ āĻāĻŋāĻ§āĻžāĻ¨ c āĻāĻŽāĻ°āĻž āĻ¸ā§āĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĒāĻžāĻ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻ°āĻžāĻāĻ¤ā§ āĻāĻžāĻ āĻ¯āĻž āĻĒā§āĻ°āĻā§āĻā§āĻā§āĻ° āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĻā§ āĻĒā§āĻ˛ āĻāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦāĻŋāĻ°āĻ¤āĻŋāĻ¤ā§ āĻĒā§āĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻĒā§āĻ°āĻĨāĻŽ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻšāĻ˛ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻĒāĻĨāĨ¤
workdir āĻĒāĻžāĻļā§āĻ° āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§āĻ° āĻĒāĻžāĻĨ āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°ā§ āĻāĻ°ā§āĻŽā§-āĻĒāĻĨā§āĻ° āĻāĻĒā§āĻā§āĻˇāĻŋāĻ /home/habr/worker/yourProject/build git āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŦā§āĨ¤
āĻļāĻžāĻāĻž āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻļāĻžāĻāĻž āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤
pollInterval āĻāĻ° āĻĒāĻ°ā§ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ°āĻ¯āĻŧā§āĻā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĒā§āĻ˛ āĻāĻ°āĻž āĻšāĻŦā§.
āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻā§.
āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻšāĻ˛ āĻā§āĻāĻĻāĻžāĻ¨, āĻ¯āĻž āĻŦā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ°āĻŽā§ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ˛ āĻāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻ°ā§āĻĒāĻŖ āĻāĻ°āĻž āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻĢāĻ˛āĻŋāĻ¤ āĻāĻ°ā§, āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻāĻŋāĻā§ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ
āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻŦāĻ āĻāĻā§āĻ¨ā§āĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°ā§āĻ° āĻāĻžāĻā§ āĻĒāĻžāĻ āĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§, āĻ¯āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻŦā§ā§ˇ āĻāĻ°ā§āĻŽā§-āĻ āĻāĻ āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻšāĻŦā§ āĻāĻĒāĻĄā§āĻā§āĻ° āĻāĻžāĻ¨ā§āĻĄāĻžāĻ° āĻ āĻŋāĻ āĻāĻžāĻ˛ā§ āĻāĻā§ āĻāĻ°ā§āĻŽā§āĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§āĨ¤ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĻā§āĻāĻŋ āĻŦāĻŋāĻāĻžāĻā§ āĻ¨āĻŋāĻā§ āĻāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ (
āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻ°āĻ āĻŽāĻžāĻ°ā§āĻāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻšāĻ˛ āĻāĻāĻŋ āĻšā§āĻ¸ā§āĻ āĻāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°- āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¤ā§āĻ¸ āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¯āĻ¤ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻ¸āĻŽāĻ°ā§āĻĒāĻŖ āĻāĻ°āĻž, āĻĒā§āĻ°āĻā§āĻā§āĻ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻ¸āĻš āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻŦā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°-y āĻāĻŦāĻ āĻ¤āĻŋāĻ¨āĻŋ, āĻā§āĻ°ā§, āĻāĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻāĻŋ āĻāĻāĻāĻžāĻŦā§ āĻĒāĻŋāĻŦāĻŋāĻā§āĻā§āĻ āĻ¸ā§āĻ°ā§āĻ¸. āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻāĻ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§, āĻ¯āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻŦāĻ āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°ā§āĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻ āĻāĻļ āĻ¸āĻā§āĻā§ āĻāĻžāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻšā§āĻ-āĻāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĨ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻšā§āĻ-āĻ, āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻāĻ°ā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§ āĻ¯āĻāĻ¨ āĻ¸āĻŽāĻ°ā§āĻĒāĻŖ āĻāĻ°āĻž-āĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻĒāĻžāĻ āĻžāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻŦāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°-āĻ. āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸ā§āĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°ā§āĻāĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻļā§āĻ¨āĻŦā§ āĻĒāĻŋāĻŦāĻŋāĻā§āĻā§āĻ āĻ¸ā§āĻ°ā§āĻ¸. āĻĒāĻŋāĻŦāĻŋāĻā§āĻā§āĻ āĻ¸ā§āĻ°ā§āĻ¸, āĻāĻĒāĻžāĻ¯āĻŧ āĻĻā§āĻŦāĻžāĻ°āĻž, āĻ āĻāĻļ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°-āĻ. āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§ āĻ ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨-āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻžāĻāĻāĻĒ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
5.4 āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§
c['schedulers'] = []
c['schedulers'].append(schedulers.SingleBranchScheduler(
name="all",
change_filter=util.ChangeFilter(branch='master'),
treeStableTimer=None,
builderNames=["runtests"]))
c['schedulers'].append(schedulers.ForceScheduler(
name="force",
builderNames=["runtests"]))
āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ - āĻāĻāĻŋ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯āĻž āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¯āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻŽāĻžāĻŦā§āĻļ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻā§āĻāĻ¨ āĻļā§āĻ°ā§ āĻāĻ°ā§āĨ¤
āĻ¯ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨_āĻā§āĻ¸, āĻāĻžāĻā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ-āĻāĻĒāĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻŦāĻ āĻāĻāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋ āĻļā§āĻĄā§āĻ˛āĻžāĻ° āĻ¤āĻžāĻĻā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§, āĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻāĻ¨ āĻāĻ āĻ
āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻāĻ°āĻ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¤āĻžāĻ āĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻŽāĻ°āĻž āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ 2 āĻā§āĻāĻ°āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ. āĻ¤āĻžāĻāĻžāĻĄāĻŧāĻž, āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ§āĻ°āĻ¨ āĻāĻā§āĨ¤
āĻāĻāĻ āĻļāĻžāĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ - āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§āĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻā§āĻ˛āĻžāĻ¸ āĻāĻ. āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻļāĻžāĻāĻž āĻĻā§āĻā§ āĻāĻŦāĻ āĻāĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻ¨āĻĨāĻŋāĻā§āĻā§āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻāĻ¨ āĻ¤āĻŋāĻ¨āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ¨, āĻ¤āĻāĻ¨ āĻ¤āĻŋāĻ¨āĻŋ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻŦāĻŋāĻ˛āĻŽā§āĻŦ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ (āĻŦāĻŋāĻļā§āĻˇ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻŋāĻāĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ¨ āĻā§āĻ°āĻŋ āĻ¸ā§āĻā§āĻŦāĻ˛ āĻāĻžāĻāĻŽāĻžāĻ°)āĨ¤ āĻĻā§āĻ¯ āĻ¨āĻžāĻŽ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§āĻ° āĻ¨āĻžāĻŽ āĻ¸ā§āĻ āĻāĻ°ā§ āĻ¯āĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ-āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸. āĻāĻŋāĻ¤āĻ°ā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻ¨ āĻāĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻļāĻžāĻāĻžāĻ¯āĻŧ āĻā§āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§āĻā§ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°ā§āĨ¤ āĻāĻŋāĻ¤āĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻžāĻ° āĻ¨āĻžāĻŽ āĻ¨āĻžāĻŽ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻž-āĻ, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻāĻā§ āĻĒāĻ°ā§ āĻ¸ā§āĻ āĻāĻ°āĻŦāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¨āĻžāĻŽāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¨āĻžāĻŽā§āĻ° āĻŽāĻ¤ā§āĻ āĻšāĻŦā§: āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ.
āĻĢā§āĻ°ā§āĻ¸ āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ° āĻāĻāĻāĻŋ āĻā§āĻŦ āĻ¸āĻšāĻ āĻāĻŋāĻ¨āĻŋāĻ¸āĨ¤ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻāĻāĻāĻŋ āĻŽāĻžāĻāĻ¸ āĻā§āĻ˛āĻŋāĻ āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻšāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ-āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸. āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻ āĻ¸āĻžāĻ°āĻžāĻāĻļ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻāĻ āĻļāĻžāĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§.
āĻĒāĻŋāĻāĻ¸ āĻ¨āĻ 3āĨ¤ āĻšāĻ¯āĻŧāĻ¤ā§ āĻāĻžāĻā§ āĻāĻ¸āĻŦā§
āĻĒāĻ°ā§āĻ¯āĻžāĻŦā§āĻ¤ā§āĻ¤ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻŽāĻ¯āĻŧ-āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĢā§āĻ°āĻŋāĻā§āĻ¯āĻŧā§āĻ¨ā§āĻ¸āĻŋāĻ¤ā§ āĻāĻ˛ā§āĨ¤ āĻāĻ˛ āĻāĻ āĻŽāĻ¤ āĻāĻŋāĻā§ āĻĻā§āĻāĻžāĻ¯āĻŧ
from buildbot.plugins import schedulers
nightly = schedulers.Periodic(name="daily",
builderNames=["full-solaris"],
periodicBuildTimer=24*60*60)
c['schedulers'] = [nightly]
5.5 āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢā§āĻ¯āĻžāĻā§āĻāĻ°āĻŋ
factory = util.BuildFactory()
factory.addStep(steps.Git(repourl='git://github.com/buildbot/hello-world.git', mode='incremental'))
factory.addStep(steps.ShellCommand(command=["trial", "hello"],
env={"PYTHONPATH": "."}))
āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ°āĻŽāĻŋāĻ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻžāĻāĻŽāĻžāĻ° āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ°āĻŽā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĨ¤
āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢā§āĻ¯āĻžāĻā§āĻāĻ°āĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻ°āĻž, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ āĻāĻ°ā§āĻŽā§āĨ¤ āĻĻā§āĻ¯ āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢā§āĻ¯āĻžāĻā§āĻāĻ°āĻŋ āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻž āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ āĻāĻ°ā§āĻŽā§-y āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻ˛ āĻāĻ°ā§ āĻ§āĻžāĻĒ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ§āĻžāĻĒ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨
āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻĒā§āĻ°āĻĨāĻŽ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ§āĻžāĻĒ āĻšāĻ˛ git āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° -d -f -f -xāĻ¤āĻžāĻ°āĻĒāĻ°, āĻāĻŋāĻ āĻā§āĻāĻāĻāĻ. āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ¤ā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻ¯āĻž āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŽāĻžāĻ¨ āĻŦā§āĻāĻžāĻ¯āĻŧ āĻ¤āĻžāĻāĻž. āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŽā§āĻĄ = 'āĻā§āĻ°āĻŽāĻŦāĻ°ā§āĻ§āĻŽāĻžāĻ¨' āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ āĻ¯ā§ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻĨā§āĻā§ āĻāĻ¸ā§āĻā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻā§āĻāĻāĻāĻ, āĻāĻžāĻ¨ā§āĻĄāĻžāĻ° āĻĨā§āĻā§ āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤, āĻ āĻ¸ā§āĻĒā§āĻļā§āĻ¯ āĻĨāĻžāĻāĻž.
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ§āĻžāĻĒ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¸āĻš āĻšā§āĻ¯āĻžāĻ˛ā§ āĻĒāĻžāĻļā§ āĻāĻ°ā§āĻŽā§- āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻĨā§āĻā§ /home/habr/worker/yourProject/build āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ PATHONPATH=... āĻāĻāĻāĻžāĻŦā§, āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻĒāĻžāĻļā§ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§āĻŽā§- āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻĻāĻā§āĻˇā§āĻĒ util.ShellCommand. āĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ āĻā§āĻāĻāĻāĻ- āĻ¤āĻžāĻ°āĻž āĻĒāĻĄāĻŧā§ āĻ¯āĻžāĻŦā§ /home/habr/worker/yourProject/build. āĻ¯āĻžāĻāĻšā§āĻ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĻā§āĻāĻŋ "āĻāĻŋāĻ¨ā§āĻ¤ā§" āĻāĻā§:
- āĻāĻ°ā§āĻŽā§ āĻāĻāĻāĻŋ āĻā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§
--āĻāĻŽāĻžāĻ¸ā§āĻ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻĒāĻ°ā§ āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻ āĻŦāĻ°ā§āĻĻā§āĻ§ āĻ¨āĻž āĻāĻ°ā§ āĻā§āĻāĻāĻāĻ-āĻ - āĻ āĻāĻŋāĻ āĻ§āĻžāĻā§āĻāĻž-āĻ āĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻŽā§āĻĒāĻ¤ā§āĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¯ā§āĻā§āĻ¯āĻ¯āĻžāĻ¤ā§ āĻĒāĻ°ā§ āĻā§āĻāĻāĻāĻ-e āĻāĻŋāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻšāĻžāĻ°āĻžāĻ¯āĻŧāĻ¨āĻŋāĨ¤
5.6 āĻāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻž
c['builders'] = []
c['builders'].append(util.BuilderConfig(name="runtests",
workernames=["example-worker"],
factory=factory))
āĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻž āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ
c['builders'] = []
c['builders'].append(util.BuilderConfig(name="yourProject",
workernames=["yourWorkerName"],
factory=factory))
āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦāĻ˛āĻŦ āĻŦāĻŋāĻ˛ā§āĻĄāĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻ.
āĻ¨āĻžāĻŽ āĻ¨āĻžāĻŽ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻž-āĻ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¯āĻŧā§āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ... āĻāĻ āĻ¯ā§ āĻŽāĻžāĻ¨ā§ āĻāĻ°ā§āĻŽā§- āĻāĻ āĻĒāĻĨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§ /home/habr/worker/yourProject/build. āĻļā§āĻĄā§āĻ˛āĻžāĻ° āĻā§āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻž āĻļā§āĻ§ā§ āĻāĻ āĻ¨āĻžāĻŽā§āĨ¤
āĻāĻ°ā§āĻŽā§āĻ° āĻ¨āĻžāĻŽ āĻļā§āĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻ°ā§āĻŽā§-s āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ['āĻļā§āĻ°āĻŽāĻŋāĻ'].
āĻāĻžāĻ°āĻāĻžāĻ¨āĻž - āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻ°āĻž, āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻ¯ā§āĻā§āĻ¤ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻž. āĻ¤āĻŋāĻ¨āĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻĒāĻžāĻ āĻžāĻŦā§āĻ¨ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻ°āĻž āĻāĻĒāĻ° āĻāĻ°ā§āĻŽā§ āĻāĻ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°āĻ¤ā§ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻ°āĻž-āĻ
6. āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ
āĻāĻāĻžāĻ¨ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻ¯āĻž āĻāĻŽāĻŋ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻāĻ°āĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ
.
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ SVN. āĻāĻžāĻ¨ā§āĻĄāĻžāĻ°āĻāĻŋ āĻ¨āĻŋāĻā§āĻ āĻāĻ āĻ§āĻ°āĻŖā§āĻ° āĻŽā§āĻā§ āĻ
āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻŦā§āĨ¤ āĻāĻ āĻŽā§āĻā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž
āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° и āĻāĻ°ā§āĻŽā§ āĻāĻāĻ āĻšā§āĻ¸ā§āĻā§ āĻāĻžāĻ˛āĻžāĻ¨ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ.āĻšā§āĻ¸ā§āĻ .āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻāĻ° āĻĢāĻžāĻāĻ˛ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§ /home/habr/master. āĻāĻ°ā§āĻŽā§ āĻāĻāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻĨā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧ /home/habr/worker. āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°-āĻ āĻāĻŦāĻ āĻāĻ°ā§āĻŽā§-a āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻĒā§āĻ°ā§āĻ 4000 āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦāĻžāĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ-āĻ, āĻ¯ā§ 'āĻĒāĻŋāĻŦāĻŋ' āĻĒā§āĻ°ā§āĻā§āĻāĻ˛
āĻ˛āĻā§āĻˇā§āĻ¯ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻžāĻāĻāĻŋ āĻšāĻ˛ āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻž, āĻāĻāĻāĻŋ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž, āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĨ¤ āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻā§ āĻāĻŽā§āĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻāĻāĻāĻŋ āĻ āĻ¸āĻĢāĻ˛ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻ¯āĻŧā§āĻŦ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻ 80 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻŦ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ.āĻšā§āĻ¸ā§āĻ. Apatch āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤ āĻā§āĻ°āĻ¨ā§āĻĨāĻžāĻāĻžāĻ°ā§āĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻĒāĻžāĻāĻžāĻ¨ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻā§, āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ āĻāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§
āĻāĻ¨ā§āĻ¯ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§ āĻ¸ā§āĻā§āĻ˛āĻžāĻāĻ.
āĻŽā§āĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻšā§āĻ¸ā§āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ smtp.your.domain - āĻāĻāĻŋ āĻŽā§āĻāĻ˛ ââāĻĨā§āĻā§ āĻāĻŋāĻ āĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ [āĻāĻŽā§āĻ˛ āĻ¸ā§āĻ°āĻā§āĻˇāĻŋāĻ¤] āĻĒā§āĻ°āĻŽāĻžāĻŖā§āĻāĻ°āĻŖ āĻāĻžāĻĄāĻŧāĻžāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻšā§āĻ¸ā§āĻā§'SMTP ' āĻŽāĻŋāĻ¨āĻŋāĻ ā§§ā§Ļā§¨ā§Ģ āĻĒā§āĻ¸ā§āĻā§ āĻļā§āĻ¨āĻžāĻ¨āĻŋ āĻšāĻā§āĻā§āĨ¤
āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻāĻĄāĻŧāĻŋāĻ¤ āĻĻā§āĻ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋ āĻāĻā§: āĻ ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ и āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§. āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ. āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋāĻļā§āĻ˛ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋ āĻ¸āĻŽāĻ°ā§āĻĒāĻŖ āĻāĻ°āĻž-s
āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻĒāĻžāĻāĻāĻ¨āĻ¸ā§āĻāĻ˛āĻžāĻ°. āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻĄāĻā§āĻ¸āĻŋāĻā§āĻ¨.
āĻāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻ˛āĻŋāĻā§āĻāĻŋ: master.cfg:
master.cfg
import os, re
from buildbot.plugins import steps, util, schedulers, worker, changes, reporters
c= BuildmasterConfig ={}
c['workers'] = [ worker.Worker('yourWorkerName', 'password') ]
c['protocols'] = {'pb': {'port': 4000}}
svn_poller = changes.SVNPoller(repourl="https://svn.host/svn/yourProject/trunk",
svnuser="user",
svnpasswd="password",
pollinterval=60,
split_file=util.svn.split_file_alwaystrunk
)
c['change_source'] = svn_poller
hourlyscheduler = schedulers.SingleBranchScheduler(
name="your-project-schedulers",
change_filter=util.ChangeFilter(branch=None),
builderNames=["yourProject"],
properties = {'owner': 'admin'}
)
c['schedulers'] = [hourlyscheduler]
checkout = steps.SVN(repourl='https://svn.host/svn/yourProject/trunk',
mode='full',
method='fresh',
username="user",
password="password",
haltOnFailure=True)
projectHost_build = util.BuildFactory()
cleanProject = steps.ShellCommand(name="Clean",
command=["buildbot/worker_linux/pyinstaller_project", "clean"]
)
buildProject = steps.ShellCommand(name="Build",
command=["buildbot/worker_linux/pyinstaller_project", "build"]
)
doxyProject = steps.ShellCommand(name="Update Docs",
command=["buildbot/worker_linux/gendoc", []]
)
testProject = steps.ShellCommand(name="Tests",
command=["python","tests/utest.py"],
env={'PYTHONPATH': '.'}
)
projectHost_build.addStep(checkout)
projectHost_build.addStep(cleanProject)
projectHost_build.addStep(buildProject)
projectHost_build.addStep(doxyProject)
projectHost_build.addStep(testProject)
c['builders'] = [
util.BuilderConfig(name="yourProject", workername='yourWorkerName', factory=projectHost_build)
]
template_html=u'''
<h4>ĐĄŅĐ°ŅŅŅ ĐŋĐžŅŅŅĐžĐĩĐŊĐŊĐžĐŗĐž ŅĐĩĐģиСа: {{ summary }}</h4>
<p>ĐŅĐŋĐžĐģŅСŅĐĩĐŧŅĐš ŅĐĩŅвиŅ Đ´ĐģŅ ĐŋĐžŅŅŅĐ°ĐĩĐŊиŅ: {{ workername }}</p>
<p>ĐŅĐžĐĩĐēŅ: {{ projects }}</p>
<p>ĐĐģŅ ŅĐžĐŗĐž ŅŅĐž ĐąŅ ĐŋĐžŅĐŧĐžŅŅĐĩŅŅ иĐŊŅĐĩŅŅĐĩĐšŅ ŅĐŋŅавĐģĐĩĐŊиŅ ĐŋŅОКдиŅĐĩ ĐŋĐž ŅŅŅĐģĐēĐĩ: {{ buildbot_url }}</p>
<p>ĐĐģŅ ŅĐžĐŗĐž ŅŅĐž ĐąŅ ĐŋĐžŅĐŧĐžŅŅĐĩŅŅ ŅĐĩСŅĐģŅŅĐ°Ņ ŅйОŅĐēи ĐŋŅОКдиŅĐĩ ĐŋĐž ŅŅŅĐģĐēĐĩ: {{ build_url }}</p>
<p>ĐŅĐŋĐžĐģŅСŅŅ WinSCP ĐŧĐžĐļĐŊĐž ĐŋОдĐēĐģŅŅиŅŅŅŅ Đē ŅĐĩŅвĐĩŅŅ c ip:xxx.xx.xxx.xx. ĐОКдŅ ĐŋОд habr/password, СайŅĐ°ŅŅ ŅОйŅĐ°ĐŊĐŊŅĐš executable ŅĐ°ĐšĐģ Ņ диŅĐĩĐēŅĐžŅии ~/worker/yourProject/build/dist.</p>
<p><b>ĐĐžŅŅŅĐžĐĩĐŊиĐĩ ĐąŅĐģĐž ĐŋŅОиСвĐĩĐ´ĐĩĐŊĐž ŅĐĩŅĐĩС Buildbot</b></p>
'''
sendMessageToAll = reporters.MailNotifier(fromaddr="[email protected]",
sendToInterestedUsers=True,
lookup="your.domain",
relayhost="smtp.your.domain",
smtpPort=1025,
mode="warnings",
extraRecipients=['[email protected]'],
messageFormatter=reporters.MessageFormatter(
template=template_html,
template_type='html',
wantProperties=True,
wantSteps=True)
)
c['services'] = [sendMessageToAll]
c['title'] = "The process of bulding"
c['titleURL'] = "http://project.host:80/"
c['buildbotURL'] = "http://project.host"
c['www'] = dict(port=80,
plugins=dict(waterfall_view={}, console_view={}, grid_view={}))
c['db'] = {
'db_url' : "sqlite:///state.sqlite"
}
āĻĒā§āĻ°āĻĨāĻŽ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ§āĻžāĻĒ āĻšāĻ˛ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ
sudo buildbot start /home/habr/master
āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨ āĻāĻ°ā§āĻŽā§-a
buildbot-worker start /home/habr/worker
āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤! āĻāĻāĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻŦā§ āĻ¸āĻŽāĻ°ā§āĻĒāĻŖ āĻāĻ°āĻž-y āĻŽāĻ§ā§āĻ¯ā§ SVN, āĻāĻĒāĻ°ā§āĻ° āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻ§āĻžāĻĒāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻžāĨ¤
āĻ¨āĻŋāĻā§ āĻāĻŽāĻŋ āĻāĻĒāĻ°ā§āĻ° āĻāĻŋāĻā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŦ master.cfg.
6.1 āĻāĻĒāĻ¨āĻžāĻ° master.cfg āĻāĻ° āĻĒāĻĨā§
āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻžāĻ° master.cfg āĻ
āĻ¨ā§āĻ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻāĻ°āĻž āĻšāĻŦā§, āĻ¤āĻžāĻ āĻ˛āĻ āĻĢāĻžāĻāĻ˛ āĻĒāĻĄāĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§. āĻāĻāĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°-āĻāĻ¸āĻŋ āĻĒāĻ°āĻŽ āĻĒāĻĨ /home/habr/master/twistd.log, āĻāĻŦāĻ āĻĒāĻžāĻļā§ āĻāĻ°ā§āĻŽā§-āĻāĻāĻāĻŋ āĻĒāĻ°āĻŽ āĻĒāĻĨ āĻ¸āĻš /home/habr/worker/twistd.log. āĻāĻĒāĻ¨āĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋāĻāĻŋ āĻĒāĻĄāĻŧāĻž āĻāĻŦāĻ āĻāĻāĻŋ āĻ āĻŋāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻŦāĻŋāĻ˛ā§āĻĄāĻŽāĻžāĻ¸ā§āĻāĻžāĻ°-āĻ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻāĻāĻžāĻ¨ā§:
sudo buildbot stop /home/habr/master
sudo buildbot upgrade-master /home/habr/master
sudo buildbot start /home/habr/master
6.2 svn āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻž
svn_poller = changes.SVNPoller(repourl="https://svn.host/svn/yourProject/trunk",
svnuser="user",
svnpasswd="password",
pollinterval=60,
split_file=util.svn.split_file_alwaystrunk
)
c['change_source'] = svn_poller
hourlyscheduler = schedulers.SingleBranchScheduler(
name="your-project-schedulers",
change_filter=util.ChangeFilter(branch=None),
builderNames=["yourProject"],
properties = {'owner': 'admin'}
)
c['schedulers'] = [hourlyscheduler]
checkout = steps.SVN(repourl='https://svn.host/svn/yourProject/trunk',
mode='full',
method='fresh',
username="user",
password="password",
haltOnFailure=True)
āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ° āĻāĻāĻāĻŋ āĻāĻāĻžāĻā§āĻˇāĻĒāĻžāĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻ svn_poller. āĻāĻāĻŋ āĻāĻāĻ¨āĻ āĻāĻāĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸, āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻ¤āĻŋ āĻŽāĻŋāĻ¨āĻŋāĻā§ āĻāĻāĻŦāĻžāĻ° āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻā§āĻ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻā§āĻˇā§āĻ¤ā§āĻ°ā§ svn_poller āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻļāĻžāĻāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°ā§ āĻā§āĻ°āĻžāĻā§āĻ. āĻ°āĻšāĻ¸ā§āĻ¯āĻŽāĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° split_file=util.svn.split_file_alwaystruunk āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻā§āĻ˛āĻŋ āĻ¸ā§āĻ āĻāĻ°ā§: āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻāĻžāĻ āĻžāĻŽā§āĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻā§āĻāĻž āĻ¯āĻžāĻ¯āĻŧ SVN āĻļāĻžāĻāĻžāĻ¯āĻŧ āĻ¤āĻŋāĻ¨āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻāĻĒā§āĻā§āĻˇāĻŋāĻ āĻĒāĻĨāĻ āĻ āĻĢāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ āĻ¤āĻžāĻ° āĻĒāĻžāĻ˛āĻž split_file_alwaystruk āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ āĻŦāĻ˛ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻā§ āĻ¸āĻšāĻ āĻāĻ°ā§ āĻā§āĻ°āĻžāĻā§āĻ.
Đ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻā§āĻāĻžāĻĒāĻŋāĻ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻ¨āĻ¯āĻžāĻ°āĻž āĻĻā§āĻā§ āĻ¨āĻž āĻāĻŦāĻ āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻļāĻžāĻāĻž āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§ āĻā§āĻ°āĻžāĻā§āĻ āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¸āĻŽāĻŋāĻ¤āĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ split_file_alwaystruk. āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸āĻžāĻĄāĻŧāĻž āĻā§āĻ°āĻžāĻā§āĻ, āĻ˛āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻž āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ.
āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻāĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¯āĻžāĻ¤ā§ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻ° āĻŽāĻžāĻ˛āĻŋāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ā§āĻ° āĻŽā§āĻ˛āĻŋāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻ¨āĨ¤
āĻ§āĻžāĻĒ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻ°āĻž-a āĻā§āĻāĻāĻāĻ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻā§āĻ¨ā§ āĻĢāĻžāĻāĻ˛ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°ā§āĻŽā§-āĻ. āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°ā§āĻ¨ svn āĻāĻĒāĻĄā§āĻ. āĻŽā§āĻĄāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻŽā§āĻĄ = āĻĒā§āĻ°ā§āĻŖ, āĻĒāĻĻā§āĻ§āĻ¤āĻŋ=āĻ¤āĻžāĻāĻž. āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° haltOnTailure āĻŦāĻ˛ā§āĻ¨ āĻ¯ā§ āĻ¯āĻĻāĻŋ svn āĻāĻĒāĻĄā§āĻ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻŦā§, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĒā§āĻ°ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻ¸ā§āĻĨāĻāĻŋāĻ¤ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤, āĻ¯ā§āĻšā§āĻ¤ā§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ āĻ āĻ°ā§āĻĨāĻšā§āĻ¨āĨ¤
6.3 āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŋāĻ āĻŋ: āĻ¸āĻžāĻāĻŦāĻžāĻĻāĻŋāĻāĻ°āĻž āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤
āĻ¸āĻžāĻāĻŦāĻžāĻĻāĻŋāĻāĻĻā§āĻ° āĻāĻŽā§āĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĨ¤
template_html=u'''
<h4>ĐĄŅĐ°ŅŅŅ ĐŋĐžŅŅŅĐžĐĩĐŊĐŊĐžĐŗĐž ŅĐĩĐģиСа: {{ summary }}</h4>
<p>ĐŅĐŋĐžĐģŅСŅĐĩĐŧŅĐš ŅĐĩŅвиŅ Đ´ĐģŅ ĐŋĐžŅŅŅĐ°ĐĩĐŊиŅ: {{ workername }}</p>
<p>ĐŅĐžĐĩĐēŅ: {{ projects }}</p>
<p>ĐĐģŅ ŅĐžĐŗĐž ŅŅĐž ĐąŅ ĐŋĐžŅĐŧĐžŅŅĐĩŅŅ иĐŊŅĐĩŅŅĐĩĐšŅ ŅĐŋŅавĐģĐĩĐŊиŅ ĐŋŅОКдиŅĐĩ ĐŋĐž ŅŅŅĐģĐēĐĩ: {{ buildbot_url }}</p>
<p>ĐĐģŅ ŅĐžĐŗĐž ŅŅĐž ĐąŅ ĐŋĐžŅĐŧĐžŅŅĐĩŅŅ ŅĐĩСŅĐģŅŅĐ°Ņ ŅйОŅĐēи ĐŋŅОКдиŅĐĩ ĐŋĐž ŅŅŅĐģĐēĐĩ: {{ build_url }}</p>
<p>ĐŅĐŋĐžĐģŅСŅŅ WinSCP ĐŧĐžĐļĐŊĐž ĐŋОдĐēĐģŅŅиŅŅŅŅ Đē ŅĐĩŅвĐĩŅŅ c ip:xxx.xx.xxx.xx. ĐОКдŅ ĐŋОд habr/password, СайŅĐ°ŅŅ ŅОйŅĐ°ĐŊĐŊŅĐš executable ŅĐ°ĐšĐģ Ņ диŅĐĩĐēŅĐžŅии ~/worker/yourProject/build/dist.</p>
<p><b>ĐĐžŅŅŅĐžĐĩĐŊиĐĩ ĐąŅĐģĐž ĐŋŅОиСвĐĩĐ´ĐĩĐŊĐž ŅĐĩŅĐĩС Buildbot</b></p>
'''
sendMessageToAll = reporters.MailNotifier(fromaddr="[email protected]",
sendToInterestedUsers=True,
lookup="your.domain",
relayhost="smtp.your.domain",
smtpPort=1025,
mode="warnings",
extraRecipients=['[email protected]'],
messageFormatter=reporters.MessageFormatter(
template=template_html,
template_type='html',
wantProperties=True,
wantSteps=True)
)
c['services'] = [sendMessageToAll]
āĻ¤āĻŋāĻ¨āĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻŽā§āĻāĻ˛ āĻ¨ā§āĻāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ° āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻāĻŽā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤
template_html āĻ¨āĻŋāĻāĻāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻā§āĻ¸āĻ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻ¸ā§āĻ āĻāĻ°ā§āĨ¤ āĻŽāĻžāĻ°ā§āĻāĻāĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ HTML āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧ
āĻŽā§āĻāĻ˛ āĻ¨ā§āĻāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§.
addr āĻĨā§āĻā§ â āĻ¯ā§ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĨā§āĻā§ āĻ¸āĻŦāĻžāĻ āĻ¨āĻŋāĻāĻāĻ˛ā§āĻāĻžāĻ° āĻĒāĻžāĻŦā§āĨ¤
āĻāĻā§āĻ°āĻšā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻĒāĻžāĻ āĻžāĻ¨=True āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻŽāĻžāĻ˛āĻŋāĻ āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻ°ā§āĻĒāĻŖ āĻāĻ°āĻž.
āĻā§āĻāĻā§ āĻĻā§āĻā§ â āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻ¯āĻŧ āĻ¯āĻž āĻ¨āĻŋāĻāĻāĻ˛ā§āĻāĻžāĻ° āĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻ āĻ ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻŋāĻāĻžāĻŦā§ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻāĻāĻ˛ā§āĻāĻžāĻ° āĻĒāĻžāĻŦā§āĻ¨ [āĻāĻŽā§āĻ˛ āĻ¸ā§āĻ°āĻā§āĻˇāĻŋāĻ¤].
āĻ°āĻŋāĻ˛ā§āĻšā§āĻ¸ā§āĻ āĻ¯ā§ āĻšā§āĻ¸ā§āĻāĻ¨ā§āĻŽāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻā§āĻ˛āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ SMTP, āĻāĻāĻāĻŋ smptPort āĻļā§āĻ¨āĻžāĻ° āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ SMTP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°
āĻŽā§āĻĄ="āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž" āĻŦāĻ˛ā§āĻā§āĻ¨ āĻ¯ā§ āĻŽā§āĻāĻ˛āĻŋāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯āĻĻāĻŋ āĻāĻŽāĻĒāĻā§āĻˇā§ āĻāĻāĻāĻŋ āĻ§āĻžāĻĒ āĻĨāĻžāĻā§ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻ°āĻž-a, āĻ¯āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸ āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻž āĻŦāĻž āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻˇ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ¸āĻžāĻĢāĻ˛ā§āĻ¯ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻāĻ˛ā§āĻāĻžāĻ° āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤
āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒā§āĻ°āĻžāĻĒāĻ āĻŽāĻžāĻ˛āĻŋāĻ āĻāĻŦāĻ āĻ¯āĻŋāĻ¨āĻŋ āĻāĻ āĻāĻžāĻāĻāĻŋ āĻāĻ°ā§āĻā§āĻ¨ āĻ¤āĻžāĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻ¯āĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻŽā§āĻāĻ˛āĻŋāĻ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻāĻāĻŋāĻ¤ āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ°āĻ¯āĻŧā§āĻā§ āĻ¸āĻŽāĻ°ā§āĻĒāĻŖ āĻāĻ°āĻž.
āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻāĻžāĻ° āĻāĻāĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āĻ¯āĻž āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸, āĻāĻ° āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻāĻŦāĻ āĻāĻ° āĻĨā§āĻā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ āĻāĻŋāĻā§āĻāĻžā§¨. āĻ¯ā§āĻŽāĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒ wantProperties=āĻ¸āĻ¤ā§āĻ¯ и āĻāĻžāĻ āĻ¸ā§āĻā§āĻĒāĻ¸=āĻ¸āĻ¤ā§āĻ¯ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻāĻ āĻ¸ā§āĻāĻāĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°ā§āĻ¨āĨ¤
āĻ¸āĻā§āĻā§['services']=[sendMessageToAll] āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻšāĻŦā§ā§ˇ āĻ¸āĻāĻŦāĻžāĻĻāĻĻāĻžāĻ¤āĻž.
āĻāĻŽāĻ°āĻž āĻāĻāĻž āĻāĻ°ā§āĻāĻŋ! āĻ āĻāĻŋāĻ¨āĻ¨ā§āĻĻāĻ¨
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻĻā§āĻā§āĻāĻŋ āĻ¯āĻž āĻāĻāĻŋ āĻ¸āĻā§āĻˇāĻŽāĨ¤ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ. āĻāĻāĻŋ, āĻāĻŽāĻŋ āĻŽāĻ¨ā§ āĻāĻ°āĻŋ, āĻāĻ āĻā§āĻ˛āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻŦā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻĨā§āĻˇā§āĻāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻā§āĻ°āĻšā§? āĻāĻāĻž āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻ˛āĻžāĻāĻŦā§? āĻ¤āĻŋāĻ¨āĻŋ āĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻ¸ā§āĻŦāĻžāĻā§āĻāĻ¨ā§āĻĻā§āĻ¯ āĻŦā§āĻ§ āĻāĻ°ā§āĻ¨? āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻŋ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻŦā§āĻĨāĻž āĻ˛āĻŋāĻāĻāĻŋ āĻ¨āĻžāĨ¤
āĻāĻŦāĻ āĻāĻ°āĻāĨ¤ āĻāĻŽāĻŋ āĻĒā§āĻļāĻžāĻĻāĻžāĻ° āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻŦāĻŋāĻ˛ā§āĻĄāĻŦāĻ, āĻāĻ°āĻ āĻŦāĻŋāĻ¸ā§āĻ¤ā§āĻ¤ āĻšāĻ¯āĻŧā§āĻā§, āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻŦāĻžāĻĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŦāĻ āĻāĻ°āĻ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§āĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ. āĻļā§āĻāĻāĻžāĻŽāĻ¨āĻžāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com