
ΠΠ° 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-ΠΎΠ²Π΅, ΡΡΠ±ΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° Code coverage ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ) Π²ΡΠ·Π½ΠΈΠΊΠ½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½Π° Π½ΡΠΆΠ΄Π° Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡ ΡΡΡΠ½ΠΈΡΠ΅ ΡΠ΅Π»ΠΈΠ·ΠΈ ΠΈ Π΄Π° ΠΎΡΡΠ°Π²ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΎΠ±ΠΎΡΠΈΡΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Π·Π°ΠΏΠΎΡΠ½Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ ΠΊΡΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π° ΡΠ΅ΡΡΠΈ ΡΠ΅Π»ΠΈΠ·ΠΈ, ΠΎΡΠ΄Π΅Π»Π½ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ Π΄ΡΡΠ³. Π’Π°ΠΊΠ° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΡΠΈΠ³Π½Π°Ρ ΠΌΠ΅ Π΄ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ΅Π»ΠΈΠ·ΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ (ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ ΠΈΠ·Π΄Π°Π²Π° ΡΡΡΠ½ΠΎ Π·Π°ΡΠ°Π΄ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°). ΠΠΎ, ΠΊΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°, Π²ΡΠ·Π½ΠΈΠΊΠ½Π° Π½ΠΎΠ²Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ.Β
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ

ΠΠ°ΡΠ°Π΄ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ ΡΡΠΊΠΎΡΠΈΡ
Π°, ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π·Π° ΡΠΌΠ΅ΡΠΊΠ° Π½Π° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠΈ Π΅ΡΠ°ΠΏΠΈ ΠΎΡ ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ. Π ΡΠΎΠ²Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²Π»ΠΎΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ. ΠΠ²ΡΡΠΈ Π±Π°Π½Π°Π»Π½ΠΎ, Π½ΠΎ Π·Π°Π΅Π΄Π½ΠΎ Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅Π»ΠΈΠ·ΠΈ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΡΠΆΠ½ΠΎ Π±Π΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΌΠΈΡΠ»ΠΈΠΌ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ, ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π»ΠΈΡΠ½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ (ΡΡΠΊ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° "ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ Π½Π° ΠΈΠ΄Π΅ΡΡΠ° Π² Π³Π»Π°Π²Π°ΡΠ°", Π° Π½Π΅ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΈ ΡΠ°Π½ΠΊΡΠΈΠΈ) Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π·Π° ΠΈΠ·Π΄Π°Π²Π°Π½ΠΈΡ ΠΊΠΎΠ΄ ΠΈ Π±ΡΠ³ΠΎΠ²Π΅ΡΠ΅ Π² Π½Π΅Π³ΠΎ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ/Π½Π΅ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΡΡΠ΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅Π½ Π΄Π΅ΠΏΠ»ΠΎΠΉ.Β
ΠΠ° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΠΌ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ, ΡΡΠΈΠ³Π½Π°Ρ ΠΌΠ΅ Π΄ΠΎ Π΄Π²Π΅ Π²Π°ΠΆΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ: Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°Π½Π°ΡΠ΅ΠΉΡΠΊΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ Π²Π½Π΅Π΄ΡΠΈΡ ΠΌΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΡΠΎΠ½ΠΎΠ²ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΡΠΌΠ°ΡΠ°. ΠΡΡΠ²ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠΊΡΠΈΠ²Π°Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠ»Π½ΠΎΠΏΡΠ°Π²Π½ΠΎΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π² production, Π° Π²ΡΠΎΡΠΎΡΠΎ Π½Π°ΠΌΠ°Π»ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² production. ΠΡΠ΅ΡΠΊΠΈ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ΅ ΡΠ»ΡΡΠ²Π°Ρ, Π½ΠΎ Π½ΠΈΠ΅ Π²Π»Π°Π³Π°ΠΌΠ΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΈ ΡΡΠΈΠ»ΠΈΡΡΠ° ΡΠΈ Π½Π΅ Π² ΠΊΠΎΡΠ΅ΠΊΡΠΈΡΡΠ°, Π° Π² ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ°.Β
ΠΠΊΠΈΠΏ ΠΏΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ Π΅ΠΊΠΈΠΏ ΠΎΡ 130 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ . ΠΠΊΠΈΠΏΡΡ ΠΏΠΎ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π½Π° ΠΊΠΎΠ΄ (Π½Π°ΡΠ°ΡΡΠΊ β Π΅ΠΊΠΈΠΏ Deploy and Integration ΠΈΠ»ΠΈ DI) ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ 7 Π΄ΡΡΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π² 2 Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ: ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ 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. ΠΠ° ΡΠ΅Π»ΡΠ° ΡΠΎΠΉ ΡΡΠ΅Π· Consul ΠΎΡΠΊΡΠΈΠ²Π° IP:PORT Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Jenkins (ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ Π½Π°ΡΠΈΡΠ°Π½ Jenkins-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ) ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π² Jenkins.
- Jenkins-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈ Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΈ Π²ΡΡΡΠ° Job ID, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ°. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠΎΠΉ ΡΡΠ°ΡΡΠΈΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π² Jenkins ΡΡΠ΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° REST API.
- Jenkins ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΠΈ ΡΠ»Π΅Π΄ Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° webhook Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Jenkins-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ.
- Jenkins-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΉΠΊΠΈ webhook, Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΡ ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ. Π‘ΡΠΎΡΠΌΠΈΡΠ°Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° RabbitMQ.
- Π§ΡΠ΅Π· RabbitMQ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π° ΠΏΡΠΈ Flow-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π°, ΠΊΠΎΠΉΡΠΎ Π½Π°ΡΡΠ°Π²Π° Π·Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ²ΠΎΡΡΠ° Π·Π°Π΄Π°ΡΠ°, ΡΡΠΏΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ Job ID ΠΎΡ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 30 ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΡΡΠΏΠΈ:
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠ½ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ (ΠΌΠ΅ΡΠ΅Π½Π΄ΠΆΡΡΠΈ, ΠΈΠΌΠ΅ΠΉΠ»ΠΈ).
- Π Π°Π±ΠΎΡΠ° Ρ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ (jenkins, nomad, consul ΠΈ Ρ.Π½.).
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ (Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΡ, Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Ρ.Π½.).
- Π£Π΅Π± ΡΡΠΈΠ»ΠΈΡΠΈ (UI Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΡΡΠ΅Π΄ΠΈ, ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ Ρ.Π½.).
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΡΠ°ΠΊΠ΅ΡΠΈ Π½Π° Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ.
Π Π°Π±ΠΎΡΠ΅Π½ ΠΏΠΎΡΠΎΠΊ Π½Π° Π·Π°Π΄Π°ΡΠ°
Integro Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ΄ ΠΆΠΈΠ·Π½Π΅Π½ ΡΠΈΠΊΡΠ» Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² Jira. Π Π½Π°ΡΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΈΠΏΠ° Π·Π°Π΄Π°ΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΈΡΠ΅, ΠΈΠ·Π±ΡΠ°Π½ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ°.Β
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ:

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

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