
ΠΠ° RIT 2019 Π½Π°Ρ ΠΊΠΎΠ»Π΅Π³Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΡ ΠΠΎΡΠΎΡΠΊΠΎΠ² Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π² Π¦ΠΠΠ: Π·Π° Π΄Π° ΡΠ»Π΅ΡΠ½ΠΈΠΌ ΠΆΠΈΠ²ΠΎΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ°, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Integro. Π’Ρ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ ΡΡΡΠΈΠ½Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π±ΡΠΎΡ Π½Π° Π±ΡΠ³ΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ. Π ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡ ΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΡ ΠΈ ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Ρ
ΠΌΠ΅ ΠΎΡ ΠΏΡΠΎΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΊΡΠΌ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° open source ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΡΡΠ΅Π· ΡΠΎΠ±ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΈ Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΅ΠΊΠΈΠΏ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ.
Β
ΠΡΠ»Π΅Π²ΠΎ Π½ΠΈΠ²ΠΎ
βΠΡΠ»Π΅Π²ΠΎ Π½ΠΈΠ²ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°, Π½Π΅ Π·Π½Π°ΠΌ ΡΠ°ΠΊΠΎΠ²Π°β
ΠΠ°ΠΉΡΡΠΎΡ Π¨ΠΈΡΡ ΠΎΡ ΠΌ/Ρ βΠΡΠ½Π³-Π€Ρ ΠΠ°Π½Π΄Π°β
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π² Π¦ΠΠΠ Π·Π°ΠΏΠΎΡΠ½Π° 14 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ»Π΅Π΄ ΠΎΡΠ½ΠΎΠ²Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°. Π’ΠΎΠ³Π°Π²Π° Π² Π΅ΠΊΠΈΠΏΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠΌΠ°ΡΠ΅ 35 ΡΠΎΠ²Π΅ΠΊΠ°. Π’ΡΡΠ΄Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΡΠ²Π°, Π½Π°Π»ΠΈ? Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π»Π°, Π½ΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π½Π° ΠΊΠΎΠ΄ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠ΅Π· 2015 Π³ΠΎΠ΄ΠΈΠ½Π°.Β
ΠΠΎ ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ ΠΈΠΌΠ°Ρ ΠΌΠ΅ ΠΎΠ³ΡΠΎΠΌΠ΅Π½ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ ΠΎΡ Python, C# ΠΈ PHP, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° Linux/Windows ΡΡΡΠ²ΡΡΠΈ. ΠΠ° Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠΎΠ½ΡΡΡΡ ΠΈΠΌΠ°Ρ ΠΌΠ΅ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΠΌΠ΅ ΡΡΡΠ½ΠΎ. ΠΠΌΠ°ΡΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ°, ΠΊΠΎΡΡΠΎ Π½ΠΎΡΠ΅ΡΠ΅ Π±ΠΎΠ»ΠΊΠ° ΠΈ ΡΡΡΠ°Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΏΡΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ Π½Π° Π΄Π΅ΡΠ΅ΠΊΡΠΈ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ βΡ Π΄ΡΡΠ³ Π½Π°Π±ΠΎΡ Π·Π°Π΄Π°ΡΠΈ Π² Π±ΠΈΠ»Π΄β. ΠΠΏΠΈΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΠ°ΠΊΠ°:

Π’ΠΎΠ²Π° Π½Π΅ Π½ΠΈ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΈΡΠΊΠ°Ρ
ΠΌΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ. ΠΠ° ΡΠΎΠ²Π° Π½ΠΈ Π±Π΅ΡΠ΅ Π½ΡΠΆΠ½Π° CI/CD ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΈΠ·Π±ΠΈΡΠ°Ρ
ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Teamcity ΠΈ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΈΡ Jenkins, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ°Π±ΠΎΡΠ΅Ρ
ΠΌΠ΅ Ρ ΡΡΡ
ΠΈ Π΄Π²Π°ΡΠ° Π½ΠΈ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ²Π°Ρ
Π° ΠΏΠΎ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ·Π±ΡΠ°Ρ
ΠΌΠ΅ Teamcity ΠΊΠ°ΡΠΎ ΠΏΠΎ-ΡΠ²Π΅ΠΆ ΠΏΡΠΎΠ΄ΡΠΊΡ. Π’ΠΎΠ³Π°Π²Π° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΠΌΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ Π½Π΅ ΡΠ°Π·ΡΠΈΡΠ°Ρ
ΠΌΠ΅ Π½Π° Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
ΠΡΠΈΡΡΠΈΠ³Π°ΠΌΠ΅ Π΄ΠΎ ΠΈΠ΄Π΅ΡΡΠ° Π·Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°
ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Teamcity ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π° ΡΠ°ΠΌΠΎ ΡΠ°ΡΡ ΠΎΡ ΡΡΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°: ΠΎΡΡΠ°Π²Π°ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Pull Request-ΠΎΠ²Π΅, ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ ΠΏΠΎ ΡΡΠ°ΡΡΡΠΈ Π² Jira ΠΈ ΠΈΠ·Π±ΠΎΡΡΡ Π½Π° Π·Π°Π΄Π°ΡΠΈ Π·Π° ΡΠ΅Π»ΠΈΠ·. Π‘ ΡΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Teamcity Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΡΠ΅. Π’ΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΡΡ Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ. Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΌΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² Teamcity ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΊΡΠΌ Π²ΡΠ½ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅ΡΠΈΡ ΠΌΠ΅, ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΠΏΡΡΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ, Π½Π°ΡΠ΅ΡΠ΅Π½Π° Integro.
Teamcity ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° Π½ΠΈΠ²ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ, Π΄ΠΎΠΊΠ°ΡΠΎ Integro ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° Π²ΠΈΡΡΠ°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΡΠΆΠ½ΠΎ Π±Π΅ΡΠ΅ Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π² Jira Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π² Bitbucket. ΠΠ° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ Π²ΡΡΡΠ΅ Π² Integro Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Π·Π°Π΄Π°ΡΠΈ.Β
ΠΠΎΡΠ°Π΄ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π² Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅, ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ Π±ΡΠΎΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΠΈ run-ΠΎΠ²Π΅ΡΠ΅ Π² Teamcity. Π’Π°ΠΊΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π½ΠΎΠ² ΠΏΡΠΎΠ±Π»Π΅ΠΌ: Π΅Π΄ΠΈΠ½ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΠΈΠ½ΡΡΠ°Π½Ρ Π½Π° Teamcity Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ (3 Π°Π³Π΅Π½ΡΠ° ΠΈ 100 ΠΏΡΠΎΠ΅ΠΊΡΠ°), Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΌΠ΅ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΈΠ½ΡΡΠ°Π½Ρ (ΠΎΡΠ΅ 3 Π°Π³Π΅Π½ΡΠ° ΠΈ 100 ΠΏΡΠΎΠ΅ΠΊΡΠ°), ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΠ΅. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΊΠΎΡΡΠΎ Π±Π΅ΡΠ΅ ΡΡΡΠ΄Π½Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅:

ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ Π²ΡΠΏΡΠΎΡΡΡ Π·Π° 4-ΡΠΈ ΠΈΠ½ΡΡΠ°Π½Ρ, ΠΎΡΡΠ·Π½Π°Ρ
ΠΌΠ΅, ΡΠ΅ ΡΠ°ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΠ±ΡΠΈΡΠ΅ ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° 4 ΠΈΠ½ΡΡΠ°Π½ΡΠ° Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ Π²ΠΏΠΈΡΠ²Π°Ρ
Π° Π² Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΡΠ°ΠΌΠΊΠΈ. ΠΡΠ·Π½ΠΈΠΊΠ½Π° Π²ΡΠΏΡΠΎΡΡΡ Π·Π° ΠΏΠΎΠΊΡΠΏΠΊΠ° Π½Π° ΠΏΠ»Π°ΡΠ΅Π½ Teamcity ΠΈΠ»ΠΈ ΠΈΠ·Π±ΠΎΡ Π² ΠΏΠΎΠ»Π·Π° Π½Π° Π±Π΅Π·ΠΏΠ»Π°ΡΠ½Π°ΡΠ° Jenkins. ΠΠ·Π²ΡΡΡΠΈΡ
ΠΌΠ΅ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠ΅ ΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ΅ΡΠΈΡ
ΠΌΠ΅, ΡΠ΅ ΡΠ΅ ΠΆΠΈΠ²Π΅Π΅ΠΌ Ρ Jenkins. Π‘Π»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄ΠΌΠΈΡΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Ρ
ΠΌΠ΅ Π½Π° Jenkins ΠΈ ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈ ΠΎΡ ΡΠ°ΡΡ ΠΎΡ Π³Π»Π°Π²ΠΎΠ±ΠΎΠ»ΠΈΠ΅ΡΠΎ, ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠ° Π½Π° Teamcity. Π’Π°ΠΊΠ° ΡΡΠΏΡΡ
ΠΌΠ΅ Π΄Π° ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΡΡ
Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Integro ΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Jenkins Π·Π° Π½Π°Ρ.
Π‘ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ (Π² Π²ΠΈΠ΄Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Pull Request-ΠΎΠ², ΡΠ±ΠΎΡΠ° ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΎΠΊΡΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ) Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΡΡΠΎΠΉΠΊΠΎΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΎΠΉΡΠΈ ΠΎΡ ΡΡΡΠ½ΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ±ΠΎΡΠ°ΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π°ΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ ΡΠ°ΡΡΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ², ΠΏΡΠΈΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π» ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. Π’Π°ΠΊ ΠΌΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅Π»ΠΈΠ·Π°ΠΌ Π½Π°ΡΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ ΠΏΠΎΠΊΠ° ΡΡΠΎ Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π²ΡΡΡΠ½ΡΡ ΠΈΠ·-Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½ΠΎΠ²Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ.Β
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅

ΠΠ·-Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΡΡΠΊΠΎΡΠΈΠ»ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π·Π° ΡΡΠ΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ°ΠΏΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°. ΠΠ²ΡΡΠΈΡ Π±Π°Π½Π°Π»ΡΠ½ΠΎ, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΡ Π½Π°ΡΠ°Π»ΠΈ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡΡ ΠΎΠ± Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈΠ²ΠΈΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ Β«ΠΏΡΠΈΠ½ΡΡΠΈΠΈ ΠΈΠ΄Π΅ΠΈ Π² Π³ΠΎΠ»ΠΎΠ²Π΅Β», Π° Π½Π΅ ΠΎ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ
ΡΡΡΠ°ΡΠ°Ρ
) Π·Π° Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌΡΠ΅ Π² Π½Π΅ΠΌ Π±Π°Π³ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ
ΠΏΠΎ Π²ΡΠΏΡΡΠΊΡ ΠΈΠ»ΠΈ Π½Π΅ Π²ΡΠΏΡΡΠΊΡ Π·Π°Π΄Π°Ρ ΡΠ΅ΡΠ΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ.Β
ΠΠ»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΡ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ Π΄Π²ΡΠΌ Π²Π°ΠΆΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌ: Π½Π°ΡΠ°Π»ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Π½Π΅Π΄ΡΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠΎΠ½Π° ΠΎΡΠΈΠ±ΠΎΠΊ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° Π΅Π³ΠΎ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π²ΡΡΠ²Π»ΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² production, Π²ΡΠΎΡΠΎΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² production. ΠΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π±ΡΠ²Π°ΡΡ, Π½ΠΎ ΠΌΡ ΡΡΠ°ΡΠΈΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠ» Π½Π΅ Π½Π° ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π° Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ.Β
ΠΠΎΠΌΠ°Π½Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ
Π‘Π΅ΠΉΡΠ°Ρ Ρ Π½Π°Ρ Π² ΡΡΠ°ΡΠ΅ 130 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ . ΠΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠ΅ ΠΊΠΎΠ΄Π° (Π΄Π°Π»Π΅Π΅ β ΠΊΠΎΠΌΠ°Π½Π΄Π° Deploy and Integration ΠΈΠ»ΠΈ DI) ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 7 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π΄Π²ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ : ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Integro ΠΈ DevOps.Β
DevOps ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° Dev/Beta ΡΡΠ΅Π΄ΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΡΠ° CIAN, ΡΡΠ΅Π΄ΠΈΡΠ΅ Integro, ΠΏΠΎΠΌΠ°Π³Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΡΠΈ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ Π·Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ΅Π΄ΠΈΡΠ΅. ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Integro ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° ΠΊΠ°ΠΊΡΠΎ ΡΡΡ ΡΠ°ΠΌΠΎΡΠΎ Integro, ΡΠ°ΠΊΠ° ΠΈ ΡΡΡ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° Jenkins, Jira, Confluence, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Π΅ΠΊΠΈΠΏΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ.Β
ΠΠΊΠΈΠΏΡΡ DI ΡΠ°Π±ΠΎΡΠΈ ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Π΅ΠΊΠΈΠΏΠ° Π½Π° ΠΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ ΠΊΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π² Π¦ΠΠΠ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠΏΡΠΈΠ½Π΅ΡΠ΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΌΠΈΠΊΡΠΎΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΎΡΠ΅Π΄ Π½ΡΠΆΠ΄ΠΈΡΠ΅ Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΈΠ»ΠΈ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈ ΡΡΡΠ°Ρ ΠΎΡΠ½Π° ΠΈΠ΄Π΅Ρ ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° ΠΎΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ°.
Π‘Π»ΠΎΠ΅Π½ ΠΊΠ΅ΠΉΠΊ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π² Π¦ΠΠΠ

ΠΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΡΠ°ΡΡΠ²Π°Π»ΠΈ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ°, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ»ΠΎΡ:
- ΠΡΠ½ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (Jira, Bitbucket ΠΈ Π΄Ρ.). Π‘ ΡΡΡ ΡΠ°Π±ΠΎΡΡΡ Π΅ΠΊΠΈΠΏΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ.
- ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Integro. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΡΡ Ρ Π½Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΡΠ»Π°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ.
- Π£ΡΠ»ΡΠ³ΠΈ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°, ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΡΠΊΡΠΈΡΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Jenkins, Consul, Nomad). Π‘ ΡΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡ Π½ΠΈΠ΅ ΡΠ°Π·Π³ΡΡΡΠ°ΠΌΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΡΡΡΠ²ΡΡΠΈΡΠ΅ ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
- Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΉ (ΡΡΡΠ²ΡΡΠΈ, ΠΠ‘, ΡΠ²ΡΡΠ·Π°Π½ΠΎ ΠΠ). ΠΠ° ΡΠΎΠ·ΠΈ ΡΠ»ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈ Π½Π°ΡΠΈΡΡ ΠΊΠΎΠ΄. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠ°ΠΊΡΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ²ΡΡ, ΡΠ°ΠΊΠ° ΠΈ Π²ΠΈΡΡΡΠ°Π»Π΅Π½ (LXC, KVM, Docker).
ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΎΠ²Π° ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠΌΠ΅ Π·ΠΎΠ½ΠΈΡΠ΅ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π²ΡΡΡΠ΅ Π² Π΅ΠΊΠΈΠΏΠ° DI. ΠΠ²Π°ΡΠ° ΠΏΡΡΠ²ΠΈ ΡΠ»ΠΎΡ ΠΏΠ°Π΄Π°Ρ Π² Π·ΠΎΠ½Π°ΡΠ° Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π½Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Integro, Π° Π΄Π²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈ ΡΠ»ΠΎΡ Π²Π΅ΡΠ΅ Π² Π·ΠΎΠ½Π°ΡΠ° Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π½Π° DevOps. Π’Π°ΠΊΠΎΠ²Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΡΡ Ρ Π·Π°Π΄Π°ΡΠΈΡΠ΅ ΠΈ Π½Π΅ ΠΏΡΠ΅ΡΠΈ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°ΠΌΠ΅ Π±Π»ΠΈΠ·ΠΎ Π΅Π΄ΠΈΠ½ Π΄ΠΎ Π΄ΡΡΠ³ ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΡΠΌΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΈ ΠΎΠΏΠΈΡ.
Integro
ΠΠ΅ΠΊΠ° ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΡΡ Ρ Integro ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈΡ ΡΡΠ΅ΠΊ:
- CentOs 7
- Docker + Nomad + Consul + Vault
- Java 11 (ΡΡΠ°ΡΠΈΡΡ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ Integro ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ Π½Π° Java 8)
- Spring Boot 2.X + Spring Cloud Config
- PostgreSql 11
- RabbitMQΒ
- Apache Ignite
- Camunda (Π²Π³ΡΠ°Π΄Π΅Π½Π°)
- Grafana + Graphite + Prometheus + Jaeger + ELK
- Web UI: React (CSR) + MobX
- SSO: Keycloak
ΠΠΈΠ΅ ΡΠ»Π΅Π΄Π²Π°ΠΌΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ° ΠΎΡ ΡΠ°Π½Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Integro. ΠΡΠ΅ΠΊΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΡΠ°Π±ΠΎΡΠΈ Π² ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠΈΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΡΡΠ΅Π· HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ RabbitMQ. ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π΅Π΄ΠΈΠ½ Π΄ΡΡΠ³ ΡΡΠ΅Π· Consul ΠΈ ΠΎΡΠΏΡΠ°Π²ΡΡ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅, ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΉΠΊΠΈ ΠΏΡΠ΅Π· ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΡΡΠ΅Π· SSO (Keycloak, OAuth 2/OpenID Connect).

ΠΠ°ΡΠΎ ΡΠ΅Π°Π»Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ Jenkins, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΡΠΏΠΊΠΈ:
- ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ (Π½Π°ΡΠ΅ΡΠ΅Π½ Flow ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ) ΠΈΡΠΊΠ° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° ΡΠ±ΠΎΡΠΊΠ° Π² Jenkins. ΠΠ° ΡΠ΅Π»ΡΠ° ΡΠΎΠΉ Π½Π°ΠΌΠΈΡΠ° IP:PORT Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Jenkins (Π½Π°ΡΠ΅ΡΠ΅Π½ Jenkins ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ) ΡΡΠ΅Π· Consul ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ±ΠΎΡΠΊΠ° Π² Jenkins.
- Jenkins ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ ΡΠ»Π΅Π΄ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π² ΠΎΡΠ³ΠΎΠ²ΠΎΡ Job ID, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ°. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠΎΠΉ ΡΡΠ°ΡΡΠΈΡΠ° ΡΠ±ΠΎΡΠΊΠ° Π² Jenkins ΡΡΠ΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° REST API.
- Jenkins ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΡΠ»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ° webhook Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π² Jenkins ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π°.
- Jenkins ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΉΠΊΠΈ webhook, ΡΠΎΡΠΌΡΠ»ΠΈΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΡ ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ. Π€ΠΎΡΠΌΡΠ»ΠΈΡΠ°Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° RabbitMQ.
- Π§ΡΠ΅Π· RabbitMQ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π° Π² Flow ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π°, ΠΊΠΎΠΉΡΠΎ Π½Π°ΡΡΠ°Π²Π° Π·Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΡΠΈ, ΡΠΎΠΏΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ Job ID ΠΎΡ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 30 ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΡΡΠΏΠΈ:
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠ½ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ (ΠΌΠ΅ΡΠΈΠ½Π΄ΠΆΡΡΠΈ, ΠΈΠΌΠ΅ΠΉΠ»).
- Π Π°Π±ΠΎΡΠ° Ρ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ (Jenkins, Nomad, Consul ΠΈ Ρ.Π½.).
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ (Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ, Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Ρ.Π½.).
- Web ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ (UI Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΡΡΠ΅Π΄ΠΈ, ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΈ Ρ.Π½.).
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ°ΡΠΊ ΡΡΠ΅ΠΊΠ΅ΡΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ.
Π Π°Π±ΠΎΡΠ΅Π½ ΠΏΠΎΡΠΎΠΊ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°
Integro Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°. Π ΠΎΠΏΡΠΎΡΡΠ΅Π½ Π²ΠΈΠ΄ ΠΏΠΎΠ΄ ΠΆΠΈΠ·Π½Π΅Π½ ΡΠΈΠΊΡΠ» Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² Jira. Π Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΈΠΏΠ° Π·Π°Π΄Π°ΡΠ° ΠΈ ΠΎΠΏΡΠΈΡΡΠ°, ΠΈΠ·Π±ΡΠ°Π½Π° Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ°.Β
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ:

ΠΠ° ΡΡ
Π΅ΠΌΠ°ΡΠ° Π·ΡΠ±Π½ΠΎΡΠΎ ΠΊΠΎΠ»Π΅Π»ΠΎ ΠΏΠΎΡΠΎΡΠ²Π°, ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΡ Integro, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠΈΠ³ΡΡΠΊΠ°ΡΠ° Π½Π° ΡΠΎΠ²Π΅ΠΊΠ° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΡΠ½ΠΎ ΠΎΡ ΡΠΎΠ²Π΅ΠΊ. ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ, ΠΏΠΎ ΠΊΠΎΠΈΡΠΎ Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ Π² ΡΠΎΠ·ΠΈ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ.
ΠΠ°ΠΏΡΠ»Π½ΠΎ ΡΡΡΠ½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° DEV+BETA Π±Π΅Π· ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ°ΠΊΠ° ΠΏΡΡΠΊΠ°ΠΌΠ΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ°):

ΠΠΎΠ³Π°Ρ Π΄Π° ΠΈΠΌΠ° ΠΈ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΎΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½ΠΈΡ. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΏΡΡΡΡ, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ Π·Π°Π΄Π°ΡΠ°ΡΠ° ΡΠ΅ ΠΏΠΎΠ΅ΠΌΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π±ΡΠ°Π½ ΡΡΠ΅Π· ΠΎΠΏΡΠΈΠΈΡΠ΅ Π² Jira.
ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΡΡΡΠΏΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΡΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΏΡΠ΅Π· ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ βΠ’Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° DEV + ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅β:
1. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ»ΠΈ PM ΡΡΠ·Π΄Π°Π²Π° Π·Π°Π΄Π°ΡΠ°.
2. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΠΏΠΎΠ΅ΠΌΠ° Π·Π°Π΄Π°ΡΠ°ΡΠ°. Π‘Π»Π΅Π΄ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Ρ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π° Π² ΡΡΠ°ΡΡΡ IN REVIEW.
3. Jira ΠΈΠ·ΠΏΡΠ°ΡΠ° Webhook ΠΊΡΠΌ Jira ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° (ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ Jira).
4. Jira ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ Flow-ΡΠ΅ΡΠ²ΠΈΡΠ° (ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°) Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ.
5. ΠΡΡΡΠ΅ Π² Flow-ΡΠ΅ΡΠ²ΠΈΡΠ°:
- ΠΠ°Π·Π½Π°ΡΠ°Π²Π°Ρ ΡΠ΅ ΡΠ΅Π²ΡΡΡΠΈ Π·Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° (Users ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΊΠΎΠΉΡΠΎ Π·Π½Π°Π΅ Π²ΡΠΈΡΠΊΠΎ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ + Jira ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°).
- Π§ΡΠ΅Π· Source ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° (Π·Π½Π°Π΅ Π·Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅, Π½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΊΠΎΠ΄Π°) ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ°, Π² ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ° ΠΊΠ»ΠΎΠ½ Π½Π° Π½Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° (Π·Π° ΡΠ»Π΅ΡΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠ΅Π½Π΅ΡΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΠΎΠ½Π° ΡΡΠ²ΠΏΠ°Π΄Π° Ρ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² Jira). ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΎΠ½ Π² Π΅Π΄Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π·Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ°.
- ΠΠ° Π²ΡΡΠΊΠΎ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ ΠΊΠ»ΠΎΠ½ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
i) ΠΠΎΠ΄Π»ΠΈΠ²Π°ΠΌΠ΅ master ΠΊΠ»ΠΎΠ½Π° (Git ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ΄Π°).
ii) ΠΠ»ΠΎΠ½ΡΡ ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ° ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (Bitbucket ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°).
iii) Π‘ΡΠ·Π΄Π°Π²Π° ΡΠ΅ Pull Request Π·Π° ΡΠΎΠ·ΠΈ ΠΊΠ»ΠΎΠ½ (Bitbucket ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°).
iv) ΠΠ·ΠΏΡΠ°ΡΠ° ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π½ΠΎΠ²ΠΎ Pull Request Π² ΡΠ°ΡΠΎΠ²Π΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ (Notify ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ·Π²Π΅ΡΡΠΈΡ).
v) ΠΠ°ΠΏΠΎΡΠ²Π°Ρ ΡΠ΅ ΡΠ±ΠΎΡΠΊΠ°, ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π½Π° DEV (Jenkins ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Jenkins).
vi) ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΈ ΡΠΎΡΠΊΠΈ Π·Π°Π²ΡΡΡΠ°Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Integro ΠΏΠΎΡΡΠ°Π²Ρ ΡΠ²ΠΎΠ΅ΡΠΎ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Pull Request (Bitbucket ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°). - Integro ΠΎΡΠ°ΠΊΠ²Π° ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Pull Request ΠΎΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅Π²ΡΡΡΠΈ.
- Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅), Integro ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² ΡΡΠ°ΡΡΡ Test on Dev (Jira ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°).
6. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Ρ ΡΠ΅ΡΡ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°. ΠΠΊΠΎ Π½ΡΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΡ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² ΡΡΠ°ΡΡΡ Ready For Build.
7. Integro βΠ²ΠΈΠΆΠ΄Π°β, ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π΅ Π³ΠΎΡΠΎΠ²Π° Π·Π° ΡΠ΅Π»ΠΈΠ· ΠΈ ΡΡΠ°ΡΡΠΈΡΠ° Π½Π΅ΠΉΠ½ΠΎΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² ΠΊΠ°Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ (Jenkins ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ). ΠΠΎΡΠΎΠ²Π½ΠΎΡΡΡΠ° Π·Π° ΡΠ΅Π»ΠΈΠ· ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π΄Π°ΡΠ°ΡΠ° Π΅ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΡΡΠ°ΡΡΡ, Π½ΡΠΌΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ Π·Π°Π΄Π°ΡΠΈ, Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½ΡΠΌΠ° Π°ΠΊΡΠΈΠ²Π½ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΈ Ρ.Π½.
8. ΠΠ°Π΄Π°ΡΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Ρ Π² ΡΡΠ°ΡΡΡ Canary (Jira ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ).
9. Jenkins ΡΡΠ°ΡΡΠΈΡΠ° ΡΡΠ΅Π· Nomad Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² ΠΊΠ°Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ 1-3 ΠΈΠ½ΡΡΠ°Π½ΡΠ°) ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π° Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ΡΠ²ΠΈΠ·Π° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅ (DeployWatch ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ).
10. DeployWatch ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ ΡΡΠ±ΠΈΡΠ° ΡΠΎΠ½ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΠ΅Π°Π³ΠΈΡΠ° Π½Π° Π½Π΅Π³ΠΎ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΡΠΈ ΠΏΡΠ΅Π²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ½Π° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ (Π½ΠΎΡΠΌΠ°ΡΠ° ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ) ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΡΠ΅Π· Notify ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ. ΠΠΊΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° 5 ΠΌΠΈΠ½ΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π½Π΅ ΡΠ΅Π°Π³ΠΈΡΠ° (Π½Π°ΡΠΈΡΠ½Π΅ Revert ΠΈΠ»ΠΈ Stay), Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΠΎΡΠΊΠ°Ρ Π½Π° ΠΊΠ°Π½Π°ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ. ΠΠΊΠΎ ΡΠΎΠ½ΡΡ Π½Π΅ Π΅ ΠΏΡΠ΅Π²ΠΈΡΠ΅Π½, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΡΡΡΠ±Π²Π° ΡΡΡΠ½ΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² Production (Π½Π°ΡΠΈΡΠΊΠ°ΠΉΠΊΠΈ Π±ΡΡΠΎΠ½Π° Π² UI). ΠΠΊΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° 60 ΠΌΠΈΠ½ΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠ° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π² Production, ΠΊΠ°Π½Π°ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ ΡΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΎΡΠΊΠ°ΡΠ΅Π½ΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ.
11. Π‘Π»Π΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π² Production:
- ΠΠ°Π΄Π°ΡΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Ρ Π² ΡΡΠ°ΡΡΡ Production (Jira ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ).
- Jenkins ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π° Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ DeployWatch ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ.
- DeployWatch ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°, ΡΠ΅ Π½Π° Production Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΡΠ° ΠΎΠ±Π½ΠΎΠ²Π΅Π½ΠΈ (ΠΈΠΌΠ°Π»ΠΎ Π΅ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ° ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ).
- Π§ΡΠ΅Π· Notify ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π·Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π² Production.
12. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠΌΠ°Ρ 30 ΠΌΠΈΠ½ΡΡΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠΊΠ°Ρ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΎΡ Production Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΎΡΠΊΡΠΈΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°. Π‘Π»Π΅Π΄ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π²Π»ΠΈΡΠ° Π² master (Git ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ).
13. Π‘Π»Π΅Π΄ ΡΡΠΏΠ΅ΡΠ΅Π½ merge Π² master ΡΡΠ°ΡΡΡΡΡ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ Π½Π° Closed (Jira ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ).
Π‘Ρ Π΅ΠΌΠ°ΡΠ° Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΠΈΡΠ° Π·Π° ΠΏΡΠ»Π½Π° Π΄Π΅ΡΠ°ΠΉΠ»Π½ΠΎΡΡ (Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΡΡΡΠΏΠΊΠΈΡΠ΅ ΡΠ° ΠΎΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅), Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΡΡΠ΅ΠΏΠ΅Π½ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅. ΠΠΈΠ΅ Π½Π΅ ΡΠΌΡΡΠ°ΠΌΠ΅ ΡΠ°Π·ΠΈ ΡΡ Π΅ΠΌΠ° Π·Π° ΠΈΠ΄Π΅Π°Π»Π½Π° ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΎΠΌΠ°Π³Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅ ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ»Π΅Π΄Π²Π°
ΠΠΌΠ°ΠΌΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΊΠ°Π· ΠΎΡ ΡΡΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅ Π½Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈΡ Π΄Π΅ΠΏΠ»ΠΎΠΉ, ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅.
ΠΠΎ ΡΡΠΊ ΡΠ΅ ΡΠΏΡΠ΅ΠΌ Π·Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°. ΠΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠΈ Π² ΠΏΡΠ΅Π³Π»Π΅Π΄Π° Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° ΠΎΠ±Ρ
Π²Π°Π½Π°Ρ
ΠΌΠ΅ ΠΏΠΎΠ²ΡΡΡ
Π½ΠΎΡΡΠ½ΠΎ, Π½ΡΠΊΠΎΠΈ Π΄ΠΎΡΠΈ Π½Π΅ Π·Π°ΡΠ΅Π³Π½Π°Ρ
ΠΌΠ΅, Π·Π°ΡΠΎΠ²Π° Ρ ΡΠ°Π΄ΠΎΡΡ ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π½Π° Π²ΡΠΏΡΠΎΡΠΈΡΠ΅ Π²ΠΈ. ΠΡΠ°ΠΊΠ²Π°ΠΌΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΎΡΠ²Π΅ΡΠΈΠΌ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ, ΠΏΠΈΡΠ΅ΡΠ΅ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
