ΠΠ° Π ΠΠ’ 2019 Π½Π°Ρ ΠΊΠΎΠ»Π»Π΅Π³Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ ΠΠΎΡΠΎΡΠΊΠΎΠ² ΡΠ΄Π΅Π»Π°Π»
Β
ΠΡΠ»Π΅Π²ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ
Β«ΠΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ Π±ΡΠ²Π°Π΅Ρ, Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π·Π½Π°ΡΒ»
ΠΠ°ΡΡΠ΅Ρ Shifu ΠΈΠ· ΠΌ/Ρ Β«ΠΡΠ½Π³-ΡΡ ΠΠ°Π½Π΄Π°Β»
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π² Π¦ΠΠΠ Π½Π°ΡΠ°Π»Π°ΡΡ ΡΠ΅ΡΠ΅Π· 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 ΡΡΠ°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠ²ΠΎΠΈ workflow Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ².Β
ΠΠ·-Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π² Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ Π²ΡΡΠΎΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ run-ΠΎΠ² Π² Teamcity. Π’Π°ΠΊ ΠΏΡΠΈΡΠ»Π° Π½ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠ° Teamcity ΡΡΠ°Π»ΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°ΡΡ (3 Π°Π³Π΅Π½ΡΠ° ΠΈ 100 ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²), ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΡΠ°Π½Ρ (Π΅ΡΠ΅ 3 Π°Π³Π΅Π½ΡΠ° ΠΈ 100 ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²), ΠΏΠΎΡΠΎΠΌ Π΅ΡΠ΅. Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ»ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ:
ΠΠΎΠ³Π΄Π° Π²ΡΡΠ°Π» Π²ΠΎΠΏΡΠΎΡ ΠΎ 4 ΠΈΠ½ΡΡΠ°Π½ΡΠ΅, ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ Π΄Π°Π»ΡΡΠ΅ ΡΠ°ΠΊ ΠΆΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ, Ρ. ΠΊ. ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΡΠ΅ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ 4 ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² ΡΠΆΠ΅ Π½Π΅ Π»Π΅Π·Π»ΠΈ Π½ΠΈ Π² ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΌΠΊΠΈ. ΠΠΎΠ·Π½ΠΈΠΊ Π²ΠΎΠΏΡΠΎΡ ΠΏΠΎΠΊΡΠΏΠΊΠΈ ΠΏΠ»Π°ΡΠ½ΠΎΠΉ Teamcity ΠΈΠ»ΠΈ Π²ΡΠ±ΠΎΡΠ° Π² ΠΏΠΎΠ»ΡΠ·Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΉ Jenkins. ΠΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ ΡΠ°ΡΡΠ΅ΡΡ ΠΏΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠ°ΠΌ ΠΈ ΠΏΠ»Π°Π½Π°ΠΌ ΠΏΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π±ΡΠ΄Π΅ΠΌ ΠΆΠΈΡΡ Π½Π° Jenkins. Π‘ΠΏΡΡΡΡ ΠΏΠ°ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π° Jenkins ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΈΡΡ ΠΎΡ ΡΠ°ΡΡΠΈ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² Teamcity. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Integro ΠΈ Π΄ΠΎΠΏΠΈΠ»ΠΈΠ²Π°Π½ΠΈΠΈ Jenkins ΠΏΠΎΠ΄ ΡΠ΅Π±Ρ.
Π‘ ΡΠΎΡΡΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ (Π² Π²ΠΈΠ΄Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Pull Request-ΠΎΠ², ΡΠ±ΠΎΡΠ° ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Code coverage ΠΈ ΠΈΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ) ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΡΠΎΠΉΠΊΠΎΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΡΡΡΠ½ΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΠΈ ΠΎΡΠ΄Π°ΡΡ ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ±ΠΎΡΠ°ΠΌ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π°ΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅Π΅Π·Π΄ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ ΡΠ°ΡΡΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ², ΠΏΡΠΈΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°. Π’Π°ΠΊ ΠΌΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅Π»ΠΈΠ·Π°ΠΌ Π½Π°ΡΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ ΠΏΠΎΠΊΠ° ΡΡΠΎ Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π²ΡΡΡΠ½ΡΡ ΠΈΠ·-Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°). ΠΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π±ΡΠ²Π°Π΅Ρ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½ΠΎΠ²Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ.Β
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ·-Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΡΡΠΊΠΎΡΠΈΠ»ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π·Π° ΡΡΠ΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ°ΠΏΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°. ΠΠ²ΡΡΠΈΡ Π±Π°Π½Π°Π»ΡΠ½ΠΎ, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΌΠ΅Π½ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°Π΄ΡΠΌΠ°ΡΡΡΡ ΠΎΠ± Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈΠ²ΠΈΡΠΈΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (ΡΡΡ ΡΠ΅ΡΡ ΠΏΡΠΎ Β«ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ Π² Π³ΠΎΠ»ΠΎΠ²Π΅Β», Π° Π½Π΅ Π΄Π΅Π½Π΅ΠΆΠ½ΡΠ΅ ΡΡΡΠ°ΡΡ) ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π·Π° Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π±Π°Π³ΠΈ Π² Π½Π΅ΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎ Π²ΡΠΏΡΡΠΊΡ/Π½Π΅ Π²ΡΠΏΡΡΠΊΡ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ΡΠ΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ.Β
Π£ΡΡΡΠ°Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ, ΠΌΡ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ Π΄Π²ΡΠΌ Π²Π°ΠΆΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌ: ΡΡΠ°Π»ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Π½Π΅Π΄ΡΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠΎΠ½Π° ΠΎΡΠΈΠ±ΠΎΠΊ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° Π΅Π³ΠΎ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² production, Π²ΡΠΎΡΠΎΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² production. ΠΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π±ΡΠ²Π°ΡΡ, Π½ΠΎ ΠΌΡ ΡΡΠ°ΡΠΈΠΌ Π±ΠΎΜΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠ» Π½Π΅ Π½Π° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π° Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ.Β
ΠΠΎΠΌΠ°Π½Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ
Π‘Π΅ΠΉΡΠ°Ρ Ρ Π½Π°Ρ ΡΡΠ°Ρ ΠΈΠ· 130 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ
DevOps ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Dev/Beta ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΡΠ° CIAN, ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Integro, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ Π²ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Integro Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΠΉ Integro, ΡΠ°ΠΊ ΠΈ ΡΠΌΠ΅ΠΆΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ Π΄Π»Ρ Jenkins, Jira, Confluence, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².Β
ΠΠΎΠΌΠ°Π½Π΄Π° DI ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠΈΠΌ, Π»ΡΠ±ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²Π½ΡΡΡΠΈ Π¦ΠΠΠ ΠΌΠΎΠΆΠ΅Ρ Π²Π½Π΅ΡΡΠΈ Π²ΠΊΠ»Π°Π΄ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΈΠΊΡΠΎΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄ Π½ΡΠΆΠ΄Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π΅ΡΠ΅ Π»ΡΡΡΠ΅.
Π‘Π»ΠΎΠ΅Π½ΡΠΉ ΠΏΠΈΡΠΎΠ³ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π² Π¦ΠΠΠ
ΠΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠ΅ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ΅Π²:
- ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ (Jira, Bitbucket ΠΈ Π΄Ρ.). Π‘ Π½ΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
- ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Integro. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π΅ΠΉ Π½Π°ΠΏΡΡΠΌΡΡ, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅ΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ.
- Π‘Π΅ΡΠ²ΠΈΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ, ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ (ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Jeknins, 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 (embedded)
- Grafana + Graphite + Prometheus + Jaeger + ELK
- Web UI: React (CSR) + MobX
- SSO: Keycloak
ΠΡ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Ρ ΠΎΡΡ Ρ Π½Π°Ρ ΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ legacy Π² Π²ΠΈΠ΄Π΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ° ΡΠ°Π½Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Integro. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΊΡΡΡΠΈΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, ΡΠ΅ΡΠ²ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ RabbitMQ-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° ΡΠ΅ΡΠ΅Π· Consul ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊ Π½Π΅ΠΌΡ Π·Π°ΠΏΡΠΎΡ, ΠΏΡΠΎΡ ΠΎΠ΄Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· SSO (Keycloak, OAuth 2/OpenID Connect).
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Jenkins, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠ°Π³ΠΎΠ²:
- ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ workflow (Π΄Π°Π»Π΅Π΅ 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 ΠΈ Ρ. Π΄.).
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ (ΡΠ΅Π»ΠΈΠ·ΠΎΠ², ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ Ρ. Π΄.).
- Web-ΡΡΠΈΠ»ΠΈΡΡ (UI Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΌΠΈ ΡΡΠ΅Π΄Π°ΠΌΠΈ, ΡΠ±ΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ Ρ. Π΄.).
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ°ΡΠΊ-ΡΡΠ΅ΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ.
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ workflow Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π·Π°Π΄Π°Ρ.
Workflow Π·Π°Π΄Π°ΡΠΈ
Integro Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ Π·Π°Π΄Π°ΡΠΈ. Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ Π·Π°Π΄Π°ΡΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ workflow Π·Π°Π΄Π°ΡΠΈ Π² Jira. Π Π½Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°ΡΠΈΠΉ workflow Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΈΠΏΠ° Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΎΠΏΡΠΈΠΉ, Π²ΡΠ±ΡΠ°Π½Π½ΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅.Β
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ workflow, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ:
ΠΠ° ΡΡ
Π΅ΠΌΠ΅ ΡΠ΅ΡΡΠ΅ΡΠ΅Π½ΠΊΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ transition Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Integro Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠΈΠ³ΡΡΠΊΠ° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ transition Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠ΅ΠΉ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ Π·Π°Π΄Π°ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈ Π² ΡΡΠΎΠΌ workflow.
ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° DEV+BETA Π±Π΅Π· ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² (ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΠΊ Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ):
ΠΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ transition. ΠΠ½ΠΎΠ³Π΄Π° ΠΏΡΡΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠΉΠ΄Π΅Ρ Π·Π°Π΄Π°ΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠΈΠΈ Π² Jira.
ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ workflow Β«Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° DEV + ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΒ»:
1. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ»ΠΈ PM ΡΠΎΠ·Π΄Π°Π΅Ρ Π·Π°Π΄Π°ΡΡ.
2. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π±Π΅ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π² ΡΠ°Π±ΠΎΡΡ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π΅Π΅ Π² ΡΡΠ°ΡΡΡ IN REVIEW.
3. Jira ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Webhook Π² ΡΡΠΎΡΠΎΠ½Ρ Jira-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° (ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Jira).
4. Jira-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ Π² Flow-ΡΠ΅ΡΠ²ΠΈΡ (ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ workflow, Π² ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°) Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° workflow.
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 ΡΡΠ°Π²ΠΈΡ ΡΠ²ΠΎΠΉ Approve Π² Pull Request (Bitbucket-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ). - Integro ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Approve Π² Pull Request ΠΎΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ ΡΠ΅Π²ΡΡΠ΅ΡΠΎΠ².
- ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Approve (Π² Ρ. Ρ. ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΉΠ΄Π΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ), 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