рд╢реБрдн рджрд┐рд╡рд╕, рд╣рдмреНрд░!
рдЖрдЬ рдореА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдПрдХ рдорд╛рд░реНрдЧ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реВ рдЗрдЪреНрдЫрд┐рддреЛ
рдкрд░рд┐рдЪрдп
DevOps рдЕрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдЖрддрд╛ IT рд╕рдореБрджрд╛рдпрд╛рд╕рд╛рдареА рдирд╡реАрди рд░рд╛рд╣рд┐рд▓реЗрд▓реЗ рдирд╛рд╣реА. рдмрд░реНтАНрдпрд╛рдЪ рд▓реЛрдХрд╛рдВрд╕рд╛рдареА, тАЬрдбреВ DevOpsтАЭ рд╣рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдПрдЦрд╛рджреНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЬрд╛рджреВрдЪреНрдпрд╛ рдмрдЯрдгрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ, рдЬреЗрд╡реНрд╣рд╛ рдХреНрд▓рд┐рдХ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдЙрдкрдпреЛрдЬрд┐рдд рдЖрдгрд┐ рдЪрд╛рдЪрдгреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдд рдмрджрд▓рддреЛ (рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯ рдЦрд░реЛрдЦрд░ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдкрд╛рд╕реВрди рдЕрдореВрд░реНрдд рдЖрд╣реЛрдд).
рдореНрд╣рдгреВрди, рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрд╕реЗ рдЬрд╛рджреВрдЪреЗ рдмрдЯрдг рдмрдирд╡рдгреНрдпрд╛рдЪреА рдСрд░реНрдбрд░ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реА рдЬреЗрдгреЗрдХрд░реВрди рдкреНрд░рд╢рд╛рд╕рдХ рдПрдХрд╛ рдХреНрд▓рд┐рдХрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдХрд░реВ рд╢рдХрддреАрд▓. рдпрд╛ рдХрд╛рд░реНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреЗ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗрдд: рдХреЛрдгрддреНрдпрд╛рд╣реА рдЗрдиреНрд╕реНрдЯрдВрдЯ рдореЗрд╕реЗрдВрдЬрд░рд╕рд╛рдареА рдмреЙрдЯ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкрд╛рд╕реВрди рддреЗ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдкрд░реНрдпрдВрдд. рддрд░реАрд╕реБрджреНрдзрд╛, рдпрд╛ рд╕рд░реНрд╡рд╛рдВрдЪреЗ рдПрдХрдЪ рдЙрджреНрджрд┐рд╖реНрдЯ рдЖрд╣реЗ - рдЕрд░реНрдЬ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рддрд┐рддрдХреЗ рдкрд╛рд░рджрд░реНрд╢рдХ рдЖрдгрд┐ рд╕реЛрдпреАрд╕реНрдХрд░ рдХрд░рдгреЗ.
рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЖрдореНрд╣реА рд╡рд╛рдкрд░реВ рдЬреЗрдирдХрд┐рдиреНрд╕.
рдЙрджреНрджрд┐рд╖реНрдЯ
рдПрдХ рд╕реЛрдпреАрд╕реНрдХрд░ рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдм рддрдпрд╛рд░ рдХрд░рд╛ рдЬреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡реГрддреНрддреАрдЪреНрдпрд╛ рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕рдЪреА рдмрд┐рд▓реНрдб рдЖрдгрд┐ (рдХрд┐рдВрд╡рд╛) рддреИрдирд╛рддреА рд▓рд╛рдБрдЪ рдХрд░реЗрд▓.
рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛
рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╡рд┐рд╡рд┐рдз рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕рдЪреЗ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдЕрд╕рд▓реЗрд▓реЗ рдЕрдиреЗрдХ рднрд╛рдВрдбрд╛рд░ рдЖрд╣реЗрдд.
рдорд╛рдкрджрдВрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ
рдЦрд╛рд▓реАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЖрдордЪреНрдпрд╛ рдХрд╛рдорд╛рд╕рд╛рдареА рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд:
- рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕ рдХреЛрдбрд╕рд╣ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЪреА URL рдЬреА рдЖрдореНрд╣рд╛рд▓рд╛ рдЬреЙрдм рдЪрд╛рд▓рд╡рддрд╛рдирд╛ рддрдпрд╛рд░ рдЖрдгрд┐ рддреИрдирд╛рдд рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗ.
- рдХрдорд┐рдЯрдЪрд╛ рдЖрдпрдбреА рдЬреНрдпрд╛рдордзреВрди рдмрд┐рд▓реНрдб рд╣реЛрдИрд▓.
рдЖрд╣реЗ рдореНрд╣рдгреВрди
рд╣реЗ рдХрд╛рд░реНрдп рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░рд╛рдЪреЗ рджреЛрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ.
рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдЖрдгрд┐ рдХрдорд┐рдЯ рдЖрдпрдбреАрдЪрд╛ рдорд╛рд░реНрдЧ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕рддреЗ, рддреЗ рдкреВрд░реНрдгрдкрдгреЗ рд╕реЛрдпреАрдЪреЗ рдирд╛рд╣реА.
рдЬрд╕реЗ рдЕрд╕реЗрд▓
рдЖрддрд╛ рддреНрдпрд╛рдЪреЗ рд╕рд░реНрд╡ рдлрд╛рдпрджреЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЗрддрд░ рдкреНрд░рдХрд╛рд░рдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╡рд╛рдкрд░реВрди рдкрд╛рд╣реВ.
рдЪреЙрдИрд╕ рдкреЕрд░рд╛рдореАрдЯрд░ рдЯрд╛рдЗрдк рдХрд░реВрди рдкрд╣рд┐рд▓рд╛ рдкреЕрд░рд╛рдореАрдЯрд░ рддрдпрд╛рд░ рдХрд░реВ, рджреБрд╕рд░рд╛ - Active Choices Reactive Reference Parameter. рдЪреЙрдИрд╕ рдкреНрд░рдХрд╛рд░рд╛рд╕рд╣ рдкреЕрд░рд╛рдореАрдЯрд░рдордзреНрдпреЗ, рдЖрдореНрд╣реА рдЪреЙрдИрд╕реЗрд╕ рдлреАрд▓реНрдбрдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕рдЪрд╛ рдХреЛрдб рдЬрд┐рдереЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ рддреНрдпрд╛ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЬрдЪреА рдирд╛рд╡реЗ рдореЕрдиреНрдпреБрдЕрд▓реА рдЬреЛрдбреВ.
рдЬрд░ рдкреНрд░реЗрдХреНрд╖рдХрд╛рдВрдирд╛ рд╣рд╛ рд▓реЗрдЦ рдЖрд╡рдбрд▓рд╛ рдЕрд╕реЗрд▓, рддрд░ рдкреБрдвреАрд▓ рд▓реЗрдЦрд╛рдд рдореА рдЬреЗрдирдХрд┐рдиреНрд╕рдордзреАрд▓ рдХрд╛рд░реНрдпреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рд╡рд░реНрдгрди рдХрд░реЗрди, рдХреЛрдбрджреНрд╡рд╛рд░реЗ рд╡рд░реНрдгрди рд╡рд╛рдкрд░реВрди (рдХреЛрдб рдореНрд╣рдгреВрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди), рдореНрд╣рдгрдЬреЗ. рдЖрдореНрд╣рд╛рд▓рд╛ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реА рдирд╛рд╡реЗ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА, рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╣реЛрдИрд▓ (рдЖрдордЪреНрдпрд╛ рдХреЛрдбрд▓рд╛ SCM рдХрдбреВрди рднрд╛рдВрдбрд╛рд░рд╛рдВрдЪреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрд▓ рдЖрдгрд┐ рдпрд╛ рд╕реВрдЪреАрд╕рд╣ рдПрдХ рдкреЕрд░рд╛рдореАрдЯрд░ рддрдпрд╛рд░ рд╣реЛрдИрд▓).
рдкрд╣рд┐рд▓реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдиреЗ рдХреЛрдгрддреЗ рдореВрд▓реНрдп (test1 рдХрд┐рдВрд╡рд╛ test2) рдШреЗрддрд▓реЗ рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди, рджреБрд╕рд▒реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдЪреА рдореВрд▓реНрдпреЗ рдЧрддрд┐рд╢реАрд▓рдкрдгреЗ рднрд░рд▓реА рдЬрд╛рддреАрд▓, рдХрд╛рд░рдг рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреА рд╕реНрд╡рддрдГрдЪреА рдХрдорд┐рдЯрдЪреА рд╕реВрдЪреА рдЕрд╕рддреЗ.
рд╕рдХреНрд░рд┐рдп рдирд┐рд╡рдбреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕рдВрджрд░реНрдн рдкреЕрд░рд╛рдореАрдЯрд░ рднрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЦрд╛рд▓реАрд▓ рдлреАрд▓реНрдб рдЖрд╣реЗрдд:
- рдирд╛рд╡ - рдкреЕрд░рд╛рдореАрдЯрд░рдЪреЗ рдирд╛рд╡.
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ - рд╕рдВрджрд░реНрднрд┐рдд рдкреЕрд░рд╛рдореАрдЯрд░ рдлреАрд▓реНрдбрдордзреАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░рдЪреЗ рдореВрд▓реНрдп рдмрджрд▓рд▓реНрдпрд╛рд╡рд░ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓рд╛ рдЬрд╛рдгрд╛рд░рд╛ рдХреЛрдб (рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЖрдореНрд╣реА test1 рдЖрдгрд┐ test2 рджрд░рдореНрдпрд╛рди рдирд┐рд╡рдбрддреЛ рддреЗрд╡реНрд╣рд╛).
- рд╡рд░реНрдгрди - рдкреЕрд░рд╛рдореАрдЯрд░рдЪреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд░реНрдгрди.
- рдирд┐рд╡рдб рдкреНрд░рдХрд╛рд░ - рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░реЗ рдкрд░рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рдкреНрд░рдХрд╛рд░ (рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЖрдореНрд╣реА html рдХреЛрдб рдкрд░рдд рдХрд░реВ).
- рд╕рдВрджрд░реНрднрд┐рдд рдкреЕрд░рд╛рдореАрдЯрд░ - рдкреЕрд░рд╛рдореАрдЯрд░рдЪреЗ рдирд╛рд╡, рдЬреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рдмрджрд▓рд▓реЗ рдЬрд╛рддреЗ, рддреЗрд╡реНрд╣рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓.
рдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдордзреАрд▓ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреЗ рдлреАрд▓реНрдб рднрд░рдгреНрдпрд╛рд╕рд╛рдареА рдереЗрдЯ рдкреБрдвреЗ рдЬрд╛рдК рдпрд╛. рдЖрдореНрд╣рд╛рд▓рд╛ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рдСрдлрд░ рджрд┐рд▓реА рдЬрд╛рддреЗ: рд╡рд╛рдкрд░рдгреЗ рдЧреНрд░реВрд╡реНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдВрд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ.
рдЖрдореНрд╣реА рдкрд╣рд┐рд▓реЗ рдирд┐рд╡рдбрддреЛ, рдХрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓рд░ рд╣реЗ рдлрдХреНрдд рдПрдХ рдкреНрд▓рдЧрдЗрди рдЖрд╣реЗ рдЬреЗ рддреБрдореНрд╣реА рдкреВрд░реНрд╡реА рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрддрди рдХрд░рддреЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ рдкреБрдиреНрд╣рд╛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рди рдХрд░рддрд╛ рдЗрддрд░ рдХрд╛рдорд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.
рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рд╕рд░реНрд╡ рдХрдорд┐рдЯ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЧреНрд░реВрд╡реА рдХреЛрдб:
AUTH = "╨╗╨╛╨│╨╕╨╜ ╨╕ ╨┐╨░╤А╨╛╨╗╤М ╨▓ Base64"
GIT_URL = "url ╨┤╨╛ ╨▓╨░╤И╨╡╨╣ SCM (https://bitbucket.org/)"
PROJECT_NAME = "╨╕╨╝╤П ╨┐╤А╨╛╨╡╨║╤В╨╜╨╛╨╣ ╨╛╨▒╨╗╨░╤Б╤В╨╕, ╨│╨┤╨╡ ╨╜╨░╤Е╨╛╨┤╤П╤В╤Б╤П ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╨╕"
def htmlBuild() {
html = """
<html>
<head>
<meta charset="windows-1251">
<style type="text/css">
div.grayTable {
text-align: left;
border-collapse: collapse;
}
.divTable.grayTable .divTableCell, .divTable.grayTable .divTableHead {
padding: 0px 3px;
}
.divTable.grayTable .divTableBody .divTableCell {
font-size: 13px;
}
</style>
</head>
<body>
"""
def commitOptions = ""
getCommitsForMicroservice(MICROSERVICE_NAME).each {
commitOptions += "<option style='font-style: italic' value='COMMIT=${it.getKey()}'>${it}</option>"
}
html += """<p style="display: inline-block;">
<select id="commit_id" size="1" name="value">
${commitOptions}
</select></p></div>"""
html += """
</div>
</div>
</div>
</body>
</html>
"""
return html
}
def getCommitsForMicroservice(microserviceRepo) {
def commits = [:]
def endpoint = GIT_URL + "/rest/api/1.0/projects/${PROJECT_NAME}/repos/${microserviceRepo}/commits"
def conn = new URL(endpoint).openConnection()
conn.setRequestProperty("Authorization", "Basic ${AUTH}")
def response = new groovy.json.JsonSlurper().parseText(conn.content.text)
response.values.each {
commits.put(it.displayId, it.message)
}
return commits
}
return htmlBuild()
рддрдкрд╢реАрд▓рд╛рдд рди рдЬрд╛рддрд╛, рд╣рд╛ рдХреЛрдб рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдорд╛рдпрдХреНрд░реЛ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдирд╛рд╡ (MICROSERVICE_NAME) рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рддреЛ рдмреЕрдЯрдмреВрдХрдЯ (рдкрджреНрдзрдд Microservice рд╕рд╛рдареА рдХрдорд┐рдЯ рдорд┐рд│рд╡рд╛) рддреНрдпрд╛рдЪрд╛ рдПрдкреАрдЖрдп рд╡рд╛рдкрд░реВрди, рдЖрдгрд┐ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕рд╕рд╛рдареА рд╕рд░реНрд╡ рдХрдорд┐рдЯрдЪрд╛ рдЖрдпрдбреА рдЖрдгрд┐ рдХрдорд┐рдЯ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЛ.
рдЖрдзреА рд╕рд╛рдВрдЧрд┐рддрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдпрд╛ рдХреЛрдбрдиреЗ рдкреГрд╖реНрдард╛рд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдгрд╛рд░реЗ html рджрд┐рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╣ рддрдпрд╛рд░ рдХрд░рд╛ рдЬреЗрдирдХрд┐рдиреНрд╕рдордзреНрдпреЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА Bitbucket рдХрдбреВрди рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗрд▓реА рд╕рд░реНрд╡ рдореВрд▓реНрдпреЗ рд╕реВрдЪреАрдордзреНрдпреЗ рдЧреБрдВрдбрд╛рд│рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рдЬреЛрдбрддреЛ.
рд╕рдЧрд│реЗ рдЯрдкреНрдкреЗ рдкреВрд░реНрдг рдХреЗрд▓реНрдпрд╛рд╡рд░ рдПрд╡рдврдВ рд╕реБрдВрджрд░ рдкрд╛рди рдорд┐рд│рд╛рдпрд▓рд╛ рд╣рд╡рдВ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╣ рддрдпрд╛рд░ рдХрд░рд╛.
рддреБрдореНрд╣реА рдЪрд╛рдЪрдгреА1 рдорд╛рдпрдХреНрд░реЛрд╕реЗрд╡рд╛ рдирд┐рд╡рдбрд▓реНрдпрд╛рд╕:
рддреБрдореНрд╣реА рдЪрд╛рдЪрдгреА2 рдорд╛рдпрдХреНрд░реЛрд╕реЗрд╡рд╛ рдирд┐рд╡рдбрд▓реНрдпрд╛рд╕:
рд╕рд╣рдордд рдЖрд╣реЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА url рдХреЙрдкреА рдХрд░реВрди рдЖрд╡рд╢реНрдпрдХ рдХрдорд┐рдЯ рдЖрдпрдбреА рд╢реЛрдзрдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдЖрдкрд▓реНрдпрд╛ рдХрд╛рд░реНрдпрд╛рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА рдЕрдзрд┐рдХ рд╕реЛрдпреАрдЪреЗ рдЕрд╕реЗрд▓.
PS рд╣рд╛ рд▓реЗрдЦ рдПрдХ рдЕрддрд┐рд╢рдп рд╕реЛрдкреНрдпрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЛ, рдЬреНрдпрд╛рдЪрд╛ рдпрд╛ рдлреЙрд░реНрдордордзреНрдпреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА, рдХрд╛рд░рдг рдЕрд╕реЗрдВрдмреНрд▓реАрдордзреНрдпреЗ рдЖрдгрдЦреА рдмрд░реЗрдЪ рднрд┐рдиреНрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рдпрд╛ рд▓реЗрдЦрд╛рдЪрд╛ рдЙрджреНрджреЗрд╢ рд╣реЗ рд╕рд╛рдзрди рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рдЪрд╛ рд╣реЛрддрд╛, рдХрд╛рд░реНрдпрд░рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдгреЗ рдирд╛рд╣реА.
PSS рдореА рдЖрдзреА рд▓рд┐рд╣рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдЬрд░ рд╣рд╛ рд▓реЗрдЦ рдЙрдкрдпреБрдХреНрдд рдЕрд╕реЗрд▓ рддрд░ рдкреБрдвреАрд▓ рд▓реЗрдЦ рдпрд╛рдмрджреНрджрд▓ рдЕрд╕реЗрд▓ рдХреЛрдбрджреНрд╡рд╛рд░реЗ рдЬреЗрдирдХрд┐рдиреНрд╕ рдЯрд╛рд╕реНрдХрдЪреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди.
рд╕реНрддреНрд░реЛрдд: www.habr.com