CI / CD рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрджреНрдпрддрди: рддреИрдпрд╛рд░реА рдФрд░ рдпреЛрдЬрдирд╛

рдЫрд╡рд┐

2020 рдореЗрдВ, рд╕реНрдЯреИрдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдвреВрдВрдврдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдПрдХ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛: IaC, microservices, kubernetes, docker, aws / azure / gcloud, blockchain, ML, VR рдФрд░ рдЗрддрдиреЗ рдкрд░ред рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ! рдкреНрд░рдЧрддрд┐ рдЕрднреА рднреА рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИред рд╣рдо рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдмрдврд╝ рд░рд╣реА рд╣реИрдВ, рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЙрдкрдХрд░рдг рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдзреБрдирд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред

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

рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓-рдЧрд┐рдЯ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛, CI рдХреЛ рдХреНрд░реВрдЬрд╝рдХреЙрдиреНрдЯреНрд░реЛрд▓.рдиреЗрдЯ рд╕реЗ рдЯреАрдордХрд┐рдЯреА рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛, рдЧрд┐рдЯ-рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реЗ рдСрдХреНрдЯреЛрдкрд╕ рддрдХ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде ред

рдкрд╛рда рдмрд╣реБрдд рдирд┐рдХрд▓рд╛, рдЗрд╕рд▓рд┐рдП рдзрд╛рд░рдгрд╛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рд╛рдордЧреНрд░реА рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрдЧреАред
рднрд╛рдЧ 1: рдХреНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдпреЛрдЬрдирд╛, рдереЛрдбрд╝рд╛ рд╕рд╛ рдорд╛рд░ред рдореИрдВ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рддрдХрдиреАрдХреА рдХрд╣реВрдВрдЧрд╛ред
рднрд╛рдЧ 2: рдЯреАрдорд╕рд┐рдЯреАред
рднрд╛рдЧ 3: рдСрдХреНрдЯреЛрдкрд╕ рдХреА рддреИрдирд╛рддреАред
рднрд╛рдЧ 4: рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗред рдЕрдкреНрд░рд┐рдп рдХреНрд╖рдг, рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛рдПрдВ, рд╕рдВрднрд╡рддрдГ рдПрдлрдПрдХреНрдпреВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕реЗ рдирд┐рдХрдЯ-рддрдХрдиреАрдХреА рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдХреНрд▓рд╛рд╕рд┐рдХ рдкрд░рд┐рдЪрдп


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рднрдВрдбрд╛рд░ рдерд╛, 300+ (рдЦреБрд▓рд╛!) рдмреНрд░рдВрдЪ, ccnet, рдПрдХ рдФрд░ ccnet + рдЧрд┐рдЯ (рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП), рдФрд░ рд╣рдорд╛рд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЧреНрд░рд╛рд╣рдХреЛрдВ, рдЪрд╛рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдФрд░ IIS рдореЗрдВ рдкреВрд▓ рдХреА рдПрдХ рдкреВрд░реА рдореЗрдЬрдмрд╛рдиреА рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рдкреВрд░реА рдореЗрдЬрдмрд╛рди, рд╕рд╛рде рд╣реА рд╕рд╛рде cmd рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдПрд╕рдХреНрдпреВрдПрд▓, рдкрд╛рдВрдЪ рд╕реМ рд╕реЗ рдЕрдзрд┐рдХ рдбреЛрдореЗрди, рджреЛ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЖрд╡рд╢реНрдпрдХ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд▓рдВрдмрд╛ рдерд╛ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЪрд┐рдВрддрд┐рдд рдХрд┐рдпрд╛, рд╡рд╣ рдереА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЬрд┐рди рдкрд░ рдореЗрд░реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЗрд╕ рдкрд░рд┐рдорд╛рдг рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреБрдЫ рднреА рдПрдХрд╛рдЧреНрд░рддрд╛ рдФрд░ рд░реБрдХрд╛рд╡рдЯ рдХреА рдХрдореА рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЦрддрд░рдирд╛рдХ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдореБрдЭреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдореМрдЬреВрджрд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдЦрд░реНрдЪ рдХреА рд╣реИ рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЕрдирд╕реБрд▓рдЭреЗ рдореБрджреНрджреЗ рди рд╣реЛрдВред

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

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

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдЬрдЧрд╣ рд╕рдорд╛рди рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реАрдЖрдИ / рд╕реАрдбреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреНрдпреЛрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ:

  1. CruiseControl.NET рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рдЦреБрд╢реА рд╣реИред рдПрдХреНрд╕рдПрдордПрд▓ рдХрдИ рд╕реНрдХреНрд░реАрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЖрдзреБрдирд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХрдореА рд╣реИред
  2. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд▓реАрдб) рдХреЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╡реЗ рдХрднреА-рдХрднреА ccnet рдХреЙрдиреНрдлрд┐рдЧрд░реНрд╕ рдХреЛ рдмрджрд▓рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдЗрдП рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХреЛ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдХреЛрдИ рдкрд╛рда рд╡рд┐рдиреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ - рдЪрдВрдЪрд▓ рд╣рд╛рдереЛрдВ рд╕реЗ рдЪрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИред
  3. - тАж CCNET, git. (. ).
  4. , . , . 
  5. - , тАФ ( ) .
  6. . ? ? ? .
  7. рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдк-рдЙрдкрдпреЛрдЧ рдФрд░ рдХреЛрдб рдмрдирд╛рдиреЗ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдПрдХ рдкреБрд░рд╛рдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ред

рдЪрд┐рддреНрд░ 3 рдХреЗ рдкреИрд░рд╛:


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

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

  1. рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рд░рдЦрд░рдЦрд╛рд╡ (рдмреИрдХрдЕрдк, рдЕрдкрдбреЗрдЯ, рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди, рдпрджрд┐ рдХреЛрдИ рд╣реЛ)ред
  2. рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдирдП рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрдо рд╕реЗ рдХрдо рдХрд░реЗрдВред рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ / рд╣рдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдирдпрд╛ рд╕реЗрдЯрдЕрдк рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдХреЛрдИ рджреЗрд░реА рди рд╣реЛред

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

рддреИрдпрд╛рд░реА: рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд░реВрдкрд╛рдВрддрд░рдг


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

  1. рд╣рдо рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рд╣рдЧрд┐рдЯ рд▓реЗрддреЗ рд╣реИрдВред 
  2. рд╣рдореЗрдВ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рднрдВрдбрд╛рд░ рдХреА рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИред 
  3. рд╣рдо рд╢рд╛рдЦрд╛ рдирд╛рдо (рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рдирд╛рдо рдФрд░ рд╢рд╛рдЦрд╛ рдирд╛рдореЛрдВ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕, umlauts рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЬреАрд╡рди рдХреЛ рдЖрдирдВрдж рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдкрд╛рддреНрд░реЛрдВ) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  4. рдмреБрдХрдорд╛рд░реНрдХ (hg рдмреБрдХрдорд╛рд░реНрдХ) рдмрдирд╛рдПрдВ рдФрд░ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреБрд╢ рдХрд░реЗрдВред рдХрд┐рд╕ рд▓рд┐рдП? рдХреНрдпреЛрдВрдХрд┐ рдмрд┐рдЯрдмрдХреЗрдЯ, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╢рд╛рдЦрд╛ рдХреЗ рдирд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдордВрдЪрди) рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдмреБрдХрдорд╛рд░реНрдХ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред 
  5. рдирдП (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрд┐рдЯ) рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ, рд╢рд╛рдЦрд╛ рдирд╛рдо рд╕реЗ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ hgignore рдХреЛ gitignore рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВред 
  6. рдореБрдЦреНрдп рднрдВрдбрд╛рд░ рдореЗрдВ рдзрдХреНрдХрд╛ред

рдЕрдВрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдорд╛рдВрдбрд┐рдВрдЧ рд╕реВрдЪреА:

  1. $ cd /path/to/hg/repo
    $ cat << EOF >> ./.hg/hgrc
    [extensions]
    hggit=
    EOF
    
  2. $ hg branches > ../branches
    
  3. #!/usr/bin/env bash
    hgBranchList="./branches"
    sed -i 's/:.*//g' ${hgBranchList}
    symbolsToDelete=$(awk '{print $NF}' FS=" " ${hgBranchList} > sym_to_del.tmp)
     
    i=0
    while read hgBranch; do
      hgBranches[$i]=${hgBranch}
      i=$((i+1))
    done <${hgBranchList}
     
    i=0
    while read str; do
      strToDel[$i]=${str}
      i=$((i+1))
    done < ./sym_to_del.tmp
     
    for i in ${!strToDel[@]}
    do
      echo ${hgBranches[$i]} | sed "s/${strToDel[$i]}//" >> result.tmp
    done
     
    sed -i 's/[ \t]*$//' result.tmp
    sed 's/^/"/g' result.tmp > branches_hg
    sed -i 's/$/"/g' branches_hg
    sed 's/ /-/g' result.tmp > branches_git
    sed -i 's/-\/-/\//g' branches_git
    sed -i 's/-\//\//g' branches_git
    sed -i 's/\/-/\//g' branches_git
    sed -i 's/---/-/g' branches_git
    sed -i 's/--/-/g' branches_git
    rm sym_to_del.tmp
    rm result.tmp
    
  4. #!/usr/bin/env bash
    gitBranchList="./branches_git"
    hgBranchList="./branches_hg"
    hgRepo="/repos/reponame"
     
    i=0
    while read hgBranch; do
      hgBranches[$i]=${hgBranch}
      i=$((i+1))
    done <${hgBranchList}
     
    i=0
    while read gitBranch; do
      gitBranches[$i]=${gitBranch}
      i=$((i+1))
    done <${gitBranchList}
     
    cd ${hgRepo}
    for i in ${!gitBranches[@]}
    do
      hg bookmark -r "${hgBranches[$i]}" "${gitBranches[$i]}-cnv"
    done
     
    hg push git+ssh://git@bitbucket.org:username/reponame-temp.git
    echo "Done."
    
  5. #!/bin/bash
    # clone repo, run git branch -a, delete remotes/origin words to leave only branch names, delete -cnv postfix, delete default branch string because we can't delete it
    repo="/repos/repo"
    gitBranchList="./branches_git"
    defaultBranch="default-cnv"
    while read gitBranch; do   gitBranches[$i]=${gitBranch};   i=$((i+1)); done < $gitBranchList
    cd $repo
    for i in ${!gitBranches[@]}; do git checkout ${gitBranches[$i]}-cnv; done
    git checkout $defaultBranch
    for i in ${!gitBranches[@]}; do
        git branch -m ${gitBranches[$i]}-cnv ${gitBranches[$i]}
        git push origin :${gitBranches[$i]}-cnv ${gitBranches[$i]}
        git push origin -u ${gitBranches[$i]}
    done
    
  6. #!/bin/bash
    # clone repo, run git branch -a, delete remotes/origin words to leave only branch names, delete -cnv postfix, delete default branch string because we can't delete it
    repo="/repos/repo"
    gitBranchList="./branches_git"
    defaultBranch="default"
    while read gitBranch; do   gitBranches[$i]=${gitBranch};   i=$((i+1)); done < $gitBranchList
    cd $repo
    for i in ${!gitBranches[@]}; do
        git checkout ${gitBranches[$i]}
        sed -i '1d' .hgignore
        mv .hgignore .gitignore
        git add .
        git commit -m "Migrated ignore file"
    done
    

рдореИрдВ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЕрд░реНрде рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛, рдЕрд░реНрдерд╛рддреН рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рднрдВрдбрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ, рд╢рд╛рдЦрд╛ рдирд╛рдореЛрдВ рдореЗрдВ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ "-cnv" рд╣реЛрддрд╛ рд╣реИред рдпрд╣ hg рдмреБрдХрдорд╛рд░реНрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдЖрдкрдХреЛ рдЗрд╕ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ hgignore рдХреЗ рдмрдЬрд╛рдп gitignore рдлрд╛рдЗрд▓ рднреА рдХрд░реЗрдВред рдпрд╣ рд╕рдм рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдФрд░ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ: рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде 300M рдХреЛрдб рдкрд░ рдкрд╣рд▓рд╛ рдХрдорд┐рдЯ рдЪрд▓рд╛рдКрдВрдЧрд╛ред рдлрд┐рд░ рдЗрд╕реЗ gitignore рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдзрдХреНрдХрд╛ рджреЗрдВред рд╡рд╣ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд░рд╣реЗрдЧрд╛ред рдЕрдм рдЗрд╕реЗ рдЗрддрд┐рд╣рд╛рд╕ (git рдлрд╝рд┐рд▓реНрдЯрд░-рд╢рд╛рдЦрд╛) рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде, рдкрд░рд┐рдгрд╛рдореА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЖрдХрд╛рд░ рдШрдЯреЗрдЧрд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдмрдврд╝реЗрдЧрд╛ред рдпрд╣ рдЕрдиреБрдХреВрд▓рди рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрд┐рдЯрдХреЙрдЗрди рдкрд░ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдпрд╣ рдХреЗрд╡рд▓ рднрдВрдбрд╛рд░ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рднреА рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рдирдП рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╛рдЗрдирд▓ рдореЗрдВ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЖрдХрд╛рд░ 1.15G рдерд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдореА 350M рдХрд╛ рдЖрдХрд╛рд░ред 

рдирд┐рд╖реНрдХрд░реНрд╖


рд╕рдВрдкреВрд░реНрдг рдкреНрд░рд╡рд╛рд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН:

  • рддреИрдпрд╛рд░реА (рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рд▓реНрдб, рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд░реВрдкрд╛рдВрддрд░рдг, рдореМрдЬреВрджрд╛ ccnet рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛) рдХрд╛ рдЙрджрд╛рд╣рд░рдг;
  • рджреЗрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдЗрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдЖрдИ / рд╕реАрдбреА рд╡рд┐рдиреНрдпрд╛рд╕ (рдкреБрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ);
  • рд╢реЗрд╖ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП CI / CD рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдореМрдЬреВрджрд╛ "рдЕрдЪреНрдЫрд╛" рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░) рдФрд░ рдкрд░реАрдХреНрд╖рдг;
  • рдкреНрд░рд╡рд╛рд╕ рджреЗрд╡, рдордВрдЪрди рдФрд░ рдкрд░реАрдХреНрд╖рдг;
  • рдЙрддреНрдкрд╛рджрди рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдкреБрд░рд╛рдиреЗ IIS рд╕реЗ рдбреЛрдореЗрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред

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

All Articles