ΠžΡ‚ скриптовС Π΄ΠΎ собствСна ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π² ЦИАН

ΠžΡ‚ скриптовС Π΄ΠΎ собствСна ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π² ЦИАН

На 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 Ρ€Π°Π±ΠΎΡ‚ΠΈ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎ с Π΅ΠΊΠΈΠΏΠ° Π½Π° ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, която сС Π·Π°Π½ΠΈΠΌΠ°Π²Π° с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ към Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π²ΡŠΡ‚Ρ€Π΅ Π² компанията. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅, всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² ЦИАН ΠΌΠΎΠΆΠ΅ Π΄Π° допринСсС Π·Π° автоматизацията, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ микроавтоматизация спорСд Π½ΡƒΠΆΠ΄ΠΈΡ‚Π΅ Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΈΠ»ΠΈ Π΄Π° сподСли страхотна идСя ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ автоматизацията ΠΎΡ‰Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π°.

Π‘Π»ΠΎΠ΅Π½ ΠΊΠ΅ΠΉΠΊ Π½Π° автоматизацията Π² ЦИАН

ΠžΡ‚ скриптовС Π΄ΠΎ собствСна ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π² ЦИАН

Всички систСми, участвали Π² автоматизацията, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° няколко слоя:

  1. Π’ΡŠΠ½ΡˆΠ½ΠΈ систСми (Jira, Bitbucket ΠΈ Π΄Ρ€.). Π‘ тях работят Π΅ΠΊΠΈΠΏΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ.
  2. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Integro. Най-чСсто Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π΅ работят с нСя Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ тя ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° цялата автоматизация.
  3. Услуги Π·Π° доставка, оркСстриранС ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Jenkins, Consul, Nomad). Π‘ тяхна ΠΏΠΎΠΌΠΎΡ‰ Π½ΠΈΠ΅ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°ΠΌΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ ΠΈ осигурявамС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° услугитС ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си.
  4. ЀизичСски слой (ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ОБ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ ПО). На Ρ‚ΠΎΠ·ΠΈ слой Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°ΡˆΠΈΡΡ‚ ΠΊΠΎΠ΄. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠ°ΠΊΡ‚ΠΎ физичСски ΡΡŠΡ€Π²ΡŠΡ€, Ρ‚Π°ΠΊΠ° ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ (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, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ слСднитС ΡΡ‚ΡŠΠΏΠΊΠΈ:

  1. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡŠΡ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° работния ΠΏΠΎΡ‚ΠΎΠΊ (Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Flow микросСрвис) иска Π΄Π° стартира сборка Π² Jenkins. Π—Π° Ρ†Π΅Π»Ρ‚Π° Ρ‚ΠΎΠΉ Π½Π°ΠΌΠΈΡ€Π° IP:PORT Π½Π° микросСрвиса Π·Π° интСграция с Jenkins (Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Jenkins микросСрвис) Ρ‡Ρ€Π΅Π· Consul ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° асинхронно Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π·Π° стартиранС Π½Π° сборка Π² Jenkins.
  2. Jenkins ΠΌΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡŠΡ‚ слСд ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π° ΠΈ прСдоставя Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Job ID, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ послС ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Ρ‚ΠΎΠΉ стартира сборка Π² Jenkins Ρ‡Ρ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° REST API.
  3. Jenkins ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° сборката ΠΈ слСд ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ ѝ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° webhook с Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Jenkins микросСрвиза.
  4. Jenkins ΠΌΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡŠΡ‚, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΉΠΊΠΈ webhook, Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ прикрСпя към Π½Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° RabbitMQ.
  5. Π§Ρ€Π΅Π· RabbitMQ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π° Π² Flow микросСрвиза, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π°ΡƒΡ‡Π°Π²Π° Π·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° си, сопоставяйки Job ID ΠΎΡ‚ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎΡ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 30 микросСрвиза, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° няколко Π³Ρ€ΡƒΠΏΠΈ:

  1. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
  2. Π˜Π½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ ΠΈ взаимодСйствиС с ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ (ΠΌΠ΅ΡΠΈΠ½Π΄ΠΆΡŠΡ€ΠΈ, ΠΈΠΌΠ΅ΠΉΠ»).
  3. Π Π°Π±ΠΎΡ‚Π° с изходния ΠΊΠΎΠ΄.
  4. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с инструмСнти Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ (Jenkins, Nomad, Consul ΠΈ Ρ‚.Π½.).
  5. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ (Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Ρ‚.Π½.).
  6. Web инструмСнти (UI Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° тСстови срСди, ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° статистика ΠΈ Ρ‚.Π½.).
  7. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с таск Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ систСми.
  8. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° работния ΠΏΠΎΡ‚ΠΎΠΊ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster