рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдмрдордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреЗ рдЯрд╛рд╕реНрдХ рдпреБрдЬрд░-рдлреНрд░реЗрдВрдбрд▓реА рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ

рд╢реБрдн рджрд┐рд╡рд╕, рд╣рдмреНрд░!

рдЖрдЬ рдореА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдПрдХ рдорд╛рд░реНрдЧ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реВ рдЗрдЪреНрдЫрд┐рддреЛ рд╕рдХреНрд░рд┐рдп рдирд┐рд╡рдбреА рдкреНрд▓рдЧрдЗрди рдордзреНрдпреЗ рдХрд╛рд░реНрдп рдХрд░рд╛ рдЬреЗрдирдХрд┐рдиреНрд╕ рд╕рд░реНрд╡рд╛рдд рдПрдХрд╕рдВрдз рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓.

рдкрд░рд┐рдЪрдп

DevOps рдЕрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдЖрддрд╛ IT рд╕рдореБрджрд╛рдпрд╛рд╕рд╛рдареА рдирд╡реАрди рд░рд╛рд╣рд┐рд▓реЗрд▓реЗ рдирд╛рд╣реА. рдмрд░реНтАНрдпрд╛рдЪ рд▓реЛрдХрд╛рдВрд╕рд╛рдареА, тАЬрдбреВ DevOpsтАЭ рд╣рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдПрдЦрд╛рджреНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЬрд╛рджреВрдЪреНрдпрд╛ рдмрдЯрдгрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ, рдЬреЗрд╡реНрд╣рд╛ рдХреНрд▓рд┐рдХ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдЙрдкрдпреЛрдЬрд┐рдд рдЖрдгрд┐ рдЪрд╛рдЪрдгреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдд рдмрджрд▓рддреЛ (рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯ рдЦрд░реЛрдЦрд░ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдкрд╛рд╕реВрди рдЕрдореВрд░реНрдд рдЖрд╣реЛрдд).

рдореНрд╣рдгреВрди, рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрд╕реЗ рдЬрд╛рджреВрдЪреЗ рдмрдЯрдг рдмрдирд╡рдгреНрдпрд╛рдЪреА рдСрд░реНрдбрд░ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реА рдЬреЗрдгреЗрдХрд░реВрди рдкреНрд░рд╢рд╛рд╕рдХ рдПрдХрд╛ рдХреНрд▓рд┐рдХрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдХрд░реВ рд╢рдХрддреАрд▓. рдпрд╛ рдХрд╛рд░реНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреЗ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗрдд: рдХреЛрдгрддреНрдпрд╛рд╣реА рдЗрдиреНрд╕реНрдЯрдВрдЯ рдореЗрд╕реЗрдВрдЬрд░рд╕рд╛рдареА рдмреЙрдЯ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкрд╛рд╕реВрди рддреЗ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдкрд░реНрдпрдВрдд. рддрд░реАрд╕реБрджреНрдзрд╛, рдпрд╛ рд╕рд░реНрд╡рд╛рдВрдЪреЗ рдПрдХрдЪ рдЙрджреНрджрд┐рд╖реНрдЯ рдЖрд╣реЗ - рдЕрд░реНрдЬ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рддрд┐рддрдХреЗ рдкрд╛рд░рджрд░реНрд╢рдХ рдЖрдгрд┐ рд╕реЛрдпреАрд╕реНрдХрд░ рдХрд░рдгреЗ.

рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЖрдореНрд╣реА рд╡рд╛рдкрд░реВ рдЬреЗрдирдХрд┐рдиреНрд╕.


рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдмрдордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреЗ рдЯрд╛рд╕реНрдХ рдпреБрдЬрд░-рдлреНрд░реЗрдВрдбрд▓реА рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ

рдЙрджреНрджрд┐рд╖реНрдЯ

рдПрдХ рд╕реЛрдпреАрд╕реНрдХрд░ рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдм рддрдпрд╛рд░ рдХрд░рд╛ рдЬреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡реГрддреНрддреАрдЪреНрдпрд╛ рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕рдЪреА рдмрд┐рд▓реНрдб рдЖрдгрд┐ (рдХрд┐рдВрд╡рд╛) рддреИрдирд╛рддреА рд▓рд╛рдБрдЪ рдХрд░реЗрд▓.

рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдмрдордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреЗ рдЯрд╛рд╕реНрдХ рдпреБрдЬрд░-рдлреНрд░реЗрдВрдбрд▓реА рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ

рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛

рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╡рд┐рд╡рд┐рдз рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕рдЪреЗ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдЕрд╕рд▓реЗрд▓реЗ рдЕрдиреЗрдХ рднрд╛рдВрдбрд╛рд░ рдЖрд╣реЗрдд.

рдорд╛рдкрджрдВрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ

рдЦрд╛рд▓реАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЖрдордЪреНрдпрд╛ рдХрд╛рдорд╛рд╕рд╛рдареА рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд:

  1. рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕ рдХреЛрдбрд╕рд╣ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЪреА URL рдЬреА рдЖрдореНрд╣рд╛рд▓рд╛ рдЬреЙрдм рдЪрд╛рд▓рд╡рддрд╛рдирд╛ рддрдпрд╛рд░ рдЖрдгрд┐ рддреИрдирд╛рдд рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗ.
  2. рдХрдорд┐рдЯрдЪрд╛ рдЖрдпрдбреА рдЬреНрдпрд╛рдордзреВрди рдмрд┐рд▓реНрдб рд╣реЛрдИрд▓.

рдЖрд╣реЗ рдореНрд╣рдгреВрди

рд╣реЗ рдХрд╛рд░реНрдп рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░рд╛рдЪреЗ рджреЛрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ.

рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдмрдордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреЗ рдЯрд╛рд╕реНрдХ рдпреБрдЬрд░-рдлреНрд░реЗрдВрдбрд▓реА рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдЖрдгрд┐ рдХрдорд┐рдЯ рдЖрдпрдбреАрдЪрд╛ рдорд╛рд░реНрдЧ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕рддреЗ, рддреЗ рдкреВрд░реНрдгрдкрдгреЗ рд╕реЛрдпреАрдЪреЗ рдирд╛рд╣реА.

рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдмрдордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреЗ рдЯрд╛рд╕реНрдХ рдпреБрдЬрд░-рдлреНрд░реЗрдВрдбрд▓реА рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ

рдЬрд╕реЗ рдЕрд╕реЗрд▓

рдЖрддрд╛ рддреНрдпрд╛рдЪреЗ рд╕рд░реНрд╡ рдлрд╛рдпрджреЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЗрддрд░ рдкреНрд░рдХрд╛рд░рдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╡рд╛рдкрд░реВрди рдкрд╛рд╣реВ.
рдЪреЙрдИрд╕ рдкреЕрд░рд╛рдореАрдЯрд░ рдЯрд╛рдЗрдк рдХрд░реВрди рдкрд╣рд┐рд▓рд╛ рдкреЕрд░рд╛рдореАрдЯрд░ рддрдпрд╛рд░ рдХрд░реВ, рджреБрд╕рд░рд╛ - Active Choices Reactive Reference Parameter. рдЪреЙрдИрд╕ рдкреНрд░рдХрд╛рд░рд╛рд╕рд╣ рдкреЕрд░рд╛рдореАрдЯрд░рдордзреНрдпреЗ, рдЖрдореНрд╣реА рдЪреЙрдИрд╕реЗрд╕ рдлреАрд▓реНрдбрдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕рдЪрд╛ рдХреЛрдб рдЬрд┐рдереЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ рддреНрдпрд╛ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЬрдЪреА рдирд╛рд╡реЗ рдореЕрдиреНрдпреБрдЕрд▓реА рдЬреЛрдбреВ.

рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдмрдордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреЗ рдЯрд╛рд╕реНрдХ рдпреБрдЬрд░-рдлреНрд░реЗрдВрдбрд▓реА рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ

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

рдкрд╣рд┐рд▓реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдиреЗ рдХреЛрдгрддреЗ рдореВрд▓реНрдп (test1 рдХрд┐рдВрд╡рд╛ test2) рдШреЗрддрд▓реЗ рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди, рджреБрд╕рд▒реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдЪреА рдореВрд▓реНрдпреЗ рдЧрддрд┐рд╢реАрд▓рдкрдгреЗ рднрд░рд▓реА рдЬрд╛рддреАрд▓, рдХрд╛рд░рдг рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреА рд╕реНрд╡рддрдГрдЪреА рдХрдорд┐рдЯрдЪреА рд╕реВрдЪреА рдЕрд╕рддреЗ.

рд╕рдХреНрд░рд┐рдп рдирд┐рд╡рдбреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕рдВрджрд░реНрдн рдкреЕрд░рд╛рдореАрдЯрд░ рднрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЦрд╛рд▓реАрд▓ рдлреАрд▓реНрдб рдЖрд╣реЗрдд:

  1. рдирд╛рд╡ - рдкреЕрд░рд╛рдореАрдЯрд░рдЪреЗ рдирд╛рд╡.
  2. рд╕реНрдХреНрд░рд┐рдкреНрдЯ - рд╕рдВрджрд░реНрднрд┐рдд рдкреЕрд░рд╛рдореАрдЯрд░ рдлреАрд▓реНрдбрдордзреАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░рдЪреЗ рдореВрд▓реНрдп рдмрджрд▓рд▓реНрдпрд╛рд╡рд░ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓рд╛ рдЬрд╛рдгрд╛рд░рд╛ рдХреЛрдб (рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЖрдореНрд╣реА test1 рдЖрдгрд┐ test2 рджрд░рдореНрдпрд╛рди рдирд┐рд╡рдбрддреЛ рддреЗрд╡реНрд╣рд╛).
  3. рд╡рд░реНрдгрди - рдкреЕрд░рд╛рдореАрдЯрд░рдЪреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд░реНрдгрди.
  4. рдирд┐рд╡рдб рдкреНрд░рдХрд╛рд░ - рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░реЗ рдкрд░рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рдкреНрд░рдХрд╛рд░ (рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЖрдореНрд╣реА html рдХреЛрдб рдкрд░рдд рдХрд░реВ).
  5. рд╕рдВрджрд░реНрднрд┐рдд рдкреЕрд░рд╛рдореАрдЯрд░ - рдкреЕрд░рд╛рдореАрдЯрд░рдЪреЗ рдирд╛рд╡, рдЬреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рдмрджрд▓рд▓реЗ рдЬрд╛рддреЗ, рддреЗрд╡реНрд╣рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓.

рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬреЙрдмрдордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреЗ рдЯрд╛рд╕реНрдХ рдпреБрдЬрд░-рдлреНрд░реЗрдВрдбрд▓реА рдХрд╕реЗ рдмрдирд╡рд╛рдпрдЪреЗ

рдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдордзреАрд▓ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреЗ рдлреАрд▓реНрдб рднрд░рдгреНрдпрд╛рд╕рд╛рдареА рдереЗрдЯ рдкреБрдвреЗ рдЬрд╛рдК рдпрд╛. рдЖрдореНрд╣рд╛рд▓рд╛ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рдСрдлрд░ рджрд┐рд▓реА рдЬрд╛рддреЗ: рд╡рд╛рдкрд░рдгреЗ рдЧреНрд░реВрд╡реНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдВрд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ.
рдЖрдореНрд╣реА рдкрд╣рд┐рд▓реЗ рдирд┐рд╡рдбрддреЛ, рдХрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓рд░ рд╣реЗ рдлрдХреНрдд рдПрдХ рдкреНрд▓рдЧрдЗрди рдЖрд╣реЗ рдЬреЗ рддреБрдореНрд╣реА рдкреВрд░реНрд╡реА рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрддрди рдХрд░рддреЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ рдкреБрдиреНрд╣рд╛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рди рдХрд░рддрд╛ рдЗрддрд░ рдХрд╛рдорд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.

рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рд╕рд░реНрд╡ рдХрдорд┐рдЯ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЧреНрд░реВрд╡реА рдХреЛрдб:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛