Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Continuous Integration для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ CI

Continuous Integration β€” это ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, которая Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² слиянии Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠΎΠΏΠΈΠΉ Π² ΠΎΠ±Ρ‰ΡƒΡŽ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ нСсколько Ρ€Π°Π· Π² дСнь ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ частых Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сборок ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для ΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ выявлСния ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π³Π΄Π΅ Π½Π°Π΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ частями систСмы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ трудятся нСзависимо, стадия ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ являСтся Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Она ΠΌΠΎΠΆΠ΅Ρ‚ нСпрСдсказуСмо Π·Π°Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ позволяСт ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‘ Π±ΠΎΠ»Π΅Π΅ прСдсказуСмой Π·Π° счСт Ρ€Π°Π½Π½Π΅Π³ΠΎ обнаруТСния ΠΈ устранСния ошибок ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠΉ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ прСимущСством являСтся сокращСниС стоимости исправлСния Π΄Π΅Ρ„Π΅ΠΊΡ‚Π°, Π·Π° счёт Ρ€Π°Π½Π½Π΅Π³ΠΎ Π΅Π³ΠΎ выявлСния.

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ CI Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, я ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ вас «ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚»

ВсСм Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡΠΌ стилСй ΠΈ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ, я Π½Π΅ всСгда соблюдаю Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΈ трСбования Π² силу Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π² ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ. Π― знаю, Ρ‡Ρ‚ΠΎ я ΠΎΡ‚ΡΡ‚ΡƒΠΏΠ°ΡŽ ΠΎΡ‚ ΠΊΠ°Π½ΠΎΠ½ΠΎΠ² React ΠΈ JS сообщСств, поэтому сразу ΠΏΡ€ΠΎΡˆΡƒ мСня Π·Π° это ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΡ€ΡŒΡŽ Π°Π²Ρ‚ΠΎΡ€Π°. Моя Ρ†Π΅Π»ΡŒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΈ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ людям насколько просто сСгодня Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ CI, я Π½Π΅ имСю Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ ВрСвису ΠΈΠ»ΠΈ Π₯Π΅Ρ€ΠΎΠΊΡƒ, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ½Π΅ Π½Π΅ нравится Heroku, я использовал Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·-Π·Π° простоты настройки для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². Π”Π°Π»ΡŒΡˆΠ΅ TLDR.

Π—Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ это Π½ΡƒΠΆΠ½ΠΎ

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ½Π΅ часто приходится ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ сСрвисы ΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ сСрвСра. Когда ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π±Ρ‹Π»ΠΎ ΠΌΠ°Π»ΠΎ, это Π½Π΅ составляло особых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚.ΠΊ. Ρ€Π΅Π»ΠΈΠ·Ρ‹ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π΄ΠΊΠΈΠΌΠΈ, развСртывания Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ довольно Ρ€Π΅Π΄ΠΊΠΎ. ВСсты Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π·Π°Π΄Π°Ρ‡ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ большС, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ стало Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Рассмотрим классичСский процСсс Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ, подходящий для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ:

Π­Ρ‚ΠΎΡ‚ процСсс повторяСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, Ссли Π²Ρ‹ 10 Π΄Π½Π΅ΠΉ писали ΠΊΠΎΠ΄ ΠΈ Π½Π° сборку/Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ 1 час, Ρ‚ΠΎ это выглядит Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈ Π½Π΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎ. Но Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΌΠ΅Π»ΠΊΠΈΠΉ Π±Π°Π³ Π·Π° 1 ΠΌΠΈΠ½ΡƒΡ‚Ρƒ, Π½ΠΎ Π½Π° Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ час? Π’ этой ситуации это выглядит довольно Ρ€Π°ΡΡ‚ΠΎΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. А Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² дСнь 10 β€” 20 багфиксов (bugfix, исправлСниС ошибки)?

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, ΡƒΠΊΡ€ΡƒΠΏΠ½ΡΡ‚ΡŒ ΠΏΡƒΠ» рСквСсты ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ объСдинСниС Π² мастСр ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΠΆΠ΅. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ CI Ρ‡Ρ‚ΠΎΠ±Ρ‹ процСсс тСстирования/построСния/развСртывания выполнялся автоматичСски. Π”Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π²ΡŒΡŽ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡƒΠ» рСквСстов Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ, поэтому ΠΌΡ‹ ΠΏΠΎΠΉΠ΄Π΅ΠΌ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

Когда я столкнулся с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π΅Ρ‰Π΅ Π² Π΄Π°Π»Π΅ΠΊΠΎΠΌ 2008ΠΌ Π³ΠΎΠ΄Ρƒ, Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎΠ³Π΄Π° для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ этих процСссов ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ свои сСрвСра, ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ вСрсий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипты для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипты для Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° сСрвСра ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. БСйчас всС ΠΏΡ€ΠΎΡ‰Π΅, большая Ρ‡Π°ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ элСмСнтарно поддаСтся Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ мноТСство ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисов для ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ПослС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… поисков, я Ρ€Π΅ΡˆΠΈΠ» ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ travis-ci.org. «Π’рэвис» бСсплатСн для open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для коммСрчСского использования. Он понравился ΠΌΠ½Π΅ Π·Π° простоту настройки ΠΈ использования. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π½Π΅ выглядСло Ρ€Π΅ΠΊΠ»Π°ΠΌΠΎΠΉ, я Ρ…ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ появляСтся всС большС достойных сСрвисов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: CircleCI, Codeship.

ΠœΡ‹ создадим React ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, для тСстирования Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Jest, для развСртывания Heroku. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ знаниями Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ английским, Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΠΎΠΌ, ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ срСду node.js, установлСнный yarn, ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ записи Π½Π° github.com, heroku.com, travis-ci.org ΠΈΠ»ΠΈ Π² состоянии ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π² процСссС прохоТдСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π°.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’.ΠΊ. ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€
React ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” create-react-app. Установим Π΅Π³ΠΎ глобально:

ПослС установки создадим нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π΅Π±-интСрфСйс для управлСния производствСнной Π»ΠΈΠ½ΠΈΠ΅ΠΉ.

ПослС создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ скачивания всСх Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π·Π°ΠΉΠ΄Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ запустим Π΅Π³ΠΎ.

Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ страница нашСго прилоТСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли ΠΏΠΎΡ€Ρ‚ 3000 свободСн β€” localhost:3000

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ create-react-app создаСт Π½Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ with no build configuration, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ β€” Π±Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ создаст для нас стандартный Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ webpack, jest, babel ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ 95% случаСв эти настройки Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ качСствСнный ΠΈ чистый ΠΊΠΎΠ΄, Ρ‡Π΅ΠΌ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ смоТСт ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ копию ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² консоли

ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π³Π΄Π΅ Π²Ρ‹ смоТСтС ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ GIT

Для Ρ‚Π΅Ρ… ΠΊΡ‚ΠΎ Π·Π½Π°ΠΊΠΎΠΌ с Π³ΠΈΡ‚ΠΎΠΌ β€” создайтС Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΊ Π½Π΅ΠΌΡƒ наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅. Для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… β€” ΠΏΡ€ΠΎΠΉΠ΄Π΅ΠΌ пошагово. Π£ Вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ настроСн доступ ΠΏΠΎ ssh ΠΊΠ»ΡŽΡ‡Ρƒ, Ссли Π’Ρ‹ Π½Π΅ сдСлали этого Ρ€Π°Π½Π΅Π΅, сСйчас самоС врСмя β€” Π»ΠΈΠ½ΠΊ.

Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° github ΠΈ создайтС Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π― создал ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ habrahabr_topic_352282.

ΠΠ°Ρ…ΠΎΠ΄ΡΡΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π³ΠΈΡ‚:

ДобавляСм всС Ρ„Π°ΠΉΠ»Ρ‹ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π³ΠΈΡ‚

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΈΡ‚:

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΊ Π’Π°ΡˆΠ΅ΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Π½Π° Π³ΠΈΡ‚Π΅. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ evilosa β€” Π½Π° свой ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈ habrahabr_topic_352282 β€” Π½Π° имя созданного Π²Π°ΠΌΠΈ рСпозитория:

Π—Π°Π»ΠΈΠ²Π°Π΅ΠΌ наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр Π³ΠΈΡ‚:

ПослС послСднСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ магия ΠΈ ΠΊΠΎΠ΄ выгрузится Π² наш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° Π³ΠΈΡ‚Π΅.

НастраиваСм CI

Π—Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° сайт travis-ci.org ΠΈ Π²Ρ…ΠΎΠ΄ΠΈΠΌ с ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью Π³ΠΈΡ‚Ρ…Π°Π±Π° (Sign in with Github). Π’ появившСмся ΠΎΠΊΠ½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· OAuth:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

НаТимаСм Authorize-CI ΠΈ ΠΆΠ΄Π΅ΠΌ ΠΏΠΎΠΊΠ° трСвис Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… с нашСй ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ этого процСсса Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

ДобавляСм измСнСния Π² Π³ΠΈΡ‚ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π½Π° сСрвСр:

Настройка ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ этапа CI Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. ПослС Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π³ΠΈΡ‚, трСвис Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ настройки ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ тСстированиС ΠΈ сборку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π’ ΠΊΠΎΠ½Ρ†Π΅ Π»ΠΎΠ³ΠΎΠ² трСвиса, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ статус ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ прохоТдСния тСстов:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΈΡ‚Π΅ Π² мастСр Π²Π΅Ρ‚ΠΊΡƒ Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ автоматичСскоС построСниС ΠΈ запуск тСстов Π½Π° трСвисС. Π£ΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ. ДвигаСмся дальшС. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” автоматичСская публикация нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Heroku.

Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Heroku, создайтС ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚Π° ΠΈΠ· Π΄ΠΎΠΌΠ΅Π½Π° mail.ru Ρƒ Π½ΠΈΡ… Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сторонниС сСрвисы.
Если Π’Ρ‹ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ имя ΠΌΠΎΠ΅Π³ΠΎ прилоТСния Π½Π° Heroku, Π½Π΅ соотвСтствуСт ΠΈΠΌΠ΅Π½ΠΈ рСпозитория.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² настройки профиля, для этого ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ ΠΈΠΊΠΎΠ½ΠΊΠ΅ профиля ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ «Account settings». НайдитС ΠΏΡƒΠ½ΠΊΡ‚ API key:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

ПослС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Reveal Ρƒ Вас появится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡.

ДобавляСм измСнСния Π² Π³ΠΈΡ‚ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π½Π° сСрвСр:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈ трСвиса. Если всС сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сообщСниС:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Если ΠΏΡ€ΠΈ построСнии Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π—Π½Π°Ρ‡ΠΈΡ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° входящСго Π² состав Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° create-react-app.

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ список ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² локально ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ измСнСния Π² мастСр ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ:

Наш CI Π³ΠΎΡ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ΅ΠΌ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ дальшС

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с основами CI ΠΈ слуТит ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… экспСримСнтов. Из явных минусов прСдставлСнного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° β€” Π’Π°Ρˆ API ΠΊΠ»ΡŽΡ‡ Heroku Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. ПослС прохоТдСния Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π°, я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π’Π°ΠΌ Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Для Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· encrypted variables, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с этим здСсь.

Если Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ нСсколько вСрсий прилоТСния, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ β€” production, staging. Π’ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСсколько Π²Π΅Ρ‚ΠΎΠΊ Π² Π³ΠΈΡ‚Π΅ ΠΈ управляя этим процСссом, ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ прилоТСния Π² Heroku, ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ мСняя ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, модСрнизируя тСсты β€” ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊ Ρ‡Π΅ΠΌΡƒ всС это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ тСст ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π²Π°Π»ΠΈΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π½ΡŽΠ°Π½ΡΡ‹ настройки сСрвисов ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Бонус

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΅Ρ‰Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊΡ€ΡƒΡ‚Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Π΅Ρ€Ρ‹, сдСлаСм для нашСго рСпозитория Π΄Π²Π° Π±Π°Π΄ΠΆΠ° с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ статуса сборки ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° покрытия нашСго ΠΊΠΎΠ΄Π° тСстами β€” Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integrationΠ§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ содСрТимоС Ρ„Π°ΠΉΠ»Π° readme.md подставив свои значСния Π² ссылки:

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ coverage Π² .gitignore
Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ для тСстов, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ покрытия ΠΊΠΎΠ΄Π° тСстами. Для этого Π² Ρ„Π°ΠΉΠ»Π΅ package.json ΠΏΠΎΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ ΠΌΡ‹ добавляСм запуск ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ покрытия нашСго ΠΊΠΎΠ΄Π° тСстами. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для создания Π±Π°Π΄ΠΆΠ°. ΠœΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» src/registerServiceWorker ΠΈΠ· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‚.ΠΊ. этот Ρ„Π°ΠΉΠ» Π½Π°ΠΌΠΈ Π½Π΅ обслуТиваСтся.

Установим Π½ΡƒΠΆΠ½Ρ‹Π΅ dev зависимости для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΠΌ всС Π½Π° github:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послС сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° трСвисом:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ CI ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π·Π½Π°Π½ΠΈΠΉ Π·Π°ΠΉΠΌΠ΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 10 ΠΌΠΈΠ½ΡƒΡ‚, Π² слоТных ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ часы, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π½ΠΈ ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ. Но сколько своСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹ сэкономитС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² этот процСсс? Π― Π΄ΡƒΠΌΠ°ΡŽ Ρ‚ΡƒΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅ΡˆΠΈΡ‚ для сСбя сам, Π½ΡƒΠΆΠ½ΠΎ Π΅ΠΌΡƒ это ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

НадСюсь пост Π±Ρ‹Π» Π’Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½, исходный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Ρ‚ΡƒΡ‚, Ссли ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ ΠΏΠ»ΡŽΡΡƒΠΉΡ‚Π΅, Ссли Π½Π΅Ρ‚ β€” Π»ΡŽΡ‚ΠΎ минусуйтС. Π–Π΅Π»Π°ΡŽ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ кодСрства. ΠœΠΈΡ€ всСм!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Continuous Integration для самых ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ…

НСпрСрывная интСграция (Π°Π½Π³Π». Continuous Integration) β€” это ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, которая Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ частых Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сборок ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для ΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ выявлСния ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π Π°Π±ΠΎΡ‚Π° с VCS

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ потрСбуСтся тСстовоС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для тСстирования прилоТСния. Если Ρ†ΠΈΠΊΠ» тСстирования достаточно Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° вСдСтся быстро, Ρ‚ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ dev-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° VCS Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ваши окруТСния.
ВсС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с основной Π²Π΅Ρ‚ΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π·Π°Ρ‚Π΅ΠΌ опрСдСлСнная вСрсия фиксируСтся ΠΈ мСрТится Π² Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Из тСстовой Π²Π΅Ρ‚ΠΊΠΈ происходит Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ° Π½Π° тСстовоС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡΡ тСстированиС, внСсСниС фиксов ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ€ΠΆ Π² Π΄Π΅Π². ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ вСрсия отправляСтся Π² Ρ€Π΅Π»ΠΈΠ·Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΠΎΡ‚ Ρ‚ΡƒΠ΄Π° публикуСтся Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½. Π’ случаС нахоТдСния ляпов Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½Π΅ (ΠΊ соТалСнию, Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚) Ρ‡ΠΈΠ½ΠΈΠΌ Π² Π°Π²Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ· ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΎΠΏΡΡ‚ΡŒ ΠΌΠ΅Ρ€ΠΆΠΈΠΌ Π² DEV-Π²Π΅Ρ‚ΠΊΡƒ.

Π’ философии GIT Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GIT Π½Π΅ принято ΠΊΠΎΠΌΠΈΡ‚ΠΈΡ‚ΡŒ Π² master ΠΈ Π΄Π°ΠΆΠ΅ dev. ВмСсто этого практикуСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ„ΠΈΡ‡Π°-Π±Ρ€Π΅Π½Ρ‡. ΠŸΡ€ΠΎ git workflow ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь: habrahabr.ru/post/60030. Π’ΠΎΠΎΠ±Ρ‰Π΅, всС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ структуры VCS ΠΏΡ€Π΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΠ΄Π½Ρƒ Ρ†Π΅Π»ΡŒ: ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ситуации, ΠΊΠΎΠ³Π΄Π° Π²Π΅Ρ‚ΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°, Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ быстро Β«ΠΏΠΎΡ„ΠΈΠΊΡΠΈΡ‚ΡŒΒ» ΠΈΠ»ΠΈ Β«Π΄ΠΎΠΏΠΈΠ»ΠΈΡ‚ΡŒΒ» ΠΈ Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒΡΡ. ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ своСй структуры Π·Π°Π΄Π°ΠΉΡ‚Π΅ сСбС вопрос «смогу Π»ΠΈ я Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ дня ΠΈ Π½Π΅ ΠΏΠΎΠ»ΠΎΠΌΠ°Ρ‚ΡŒ всС. Если ΠΎΡ‚Π²Π΅Ρ‚ Β«Π΄Π°Β», Ρ‚ΠΎ структура Π²Π°ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ошибки Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, слСдуСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ тСстовоС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠ΅, Π½Π° сколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, главная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ это Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ сторонних Π²Π΅Π±-сСрвисов ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, связанныС с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ финансовыми транзакциями.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ступор ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ трансформаций Web.config’а Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…: Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ App.config’ов ΠΎΠ½ΠΈ хранятся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния, Π° Π½Π΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ bin, поэтому ΠΏΡ€ΠΈ локальной сборкС трансформации Π½Π΅ происходит. Врансформации ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Если Π²Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Web.template.config ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° PostBuild прилоТСния. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ таск трансформации ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈΠ½Π°Ρ‡Π΅ трансформация Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π΄Π²Π°ΠΆΠ΄Ρ‹.
Если Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, всС-Ρ€Π°Π²Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ основной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΎΠ±Ρ‰ΠΈΠΌΠΈ настройками ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для измСнСния эталонного ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°. Π­Ρ‚ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ вас ΠΎΡ‚ копипаста ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… настроСк.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΊ Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ΅

ВСрсионированиС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹

ВсС соврСмСнныС CI-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²ΠΎ врСмя сборки. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π», Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ msbuild-таски ΠΈΠ· msbuildtasks.tigris.org ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

ВСрсионированиС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

SSDT-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ msdn.microsoft.com/ru-ru/data/tools.aspx

ΠŸΠ»ΡŽΡΡ‹: процСсс создания ΠΈ рСдактирования Π‘Π” Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹ Π²Ρ‹ это Π΄Π΅Π»Π°Π»ΠΈ с Management Studio.
ΠœΠΈΠ½ΡƒΡΡ‹: ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ написания ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… скриптов. Π’.ΠΊ. ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ измСнСния строит сам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… обСспСчиваСтся Π·Π° счСт pre-deploy ΠΈ post-deploy-скриптов. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅/отсутствиС ΠΏΠΎΠ»Π΅ΠΉ Π² Π‘Π” ΠΈΠ»ΠΈ Β«ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒΒ» Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ schema version, ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠ°Ρ….

ECM7 Migrator code.google.com/p/ecm7migrator

Π”Π²ΠΈΠΆΠΎΠΊ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ…Π°Π±Ρ€Π°ΡŽΠ·Π΅Ρ€ dima117.
ΠŸΠ»ΡŽΡΡ‹: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ Π‘Π£Π‘Π”, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ вас Π½Π΅ устраиваСт, ΠΊΠΎΠ΄ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚. ΠœΠΈΠ³Ρ€Π°Ρ‚ΠΎΡ€ поддСрТиваСтся ΠΈ обрастаСт Π½ΠΎΠ²Ρ‹ΠΌΠΈ функциями. И, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, самоС Π²Π°ΠΆΠ½ΠΎΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π‘Π”
ΠœΠΈΠ½ΡƒΡΡ‹: Π½Π΅Ρ‚ плюшСк Entity Framework Migrations.

Entity Framework Migrations blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

Автоматизация ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ прилоТСния

Π’ 2012 студии систСма ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ web-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π±Ρ‹Π»Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π°. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ это касаСтся ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Если Π²Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² azure, Ρ‚ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с ΠΏΠΎΡ€Ρ‚Π°Π»Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ.
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π°Ρ…, Π² послСднСй вСрсии WebDeploy ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ EF-ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всСго ΠΎΠ΄Π½ΠΎΠΉ Π³Π°Π»ΠΎΡ‡ΠΊΠΈ. ΠšΡ€ΠΎΠΌΠ΅ этого публикация ΠΈΠ· студии ΡƒΠΌΠ΅Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ строку ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±Π΅Π· использования трансформации.
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ трансформации ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ написано Ρƒ Вроя Π₯Π°Π½Ρ‚Π° Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅: www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity.html. БСйчас нас интСрСсуСт пятый шаг Π΅Π³ΠΎ Π³Π°ΠΉΠ΄Π»Π°ΠΉΠ½Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, автоматичСская публикация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ»Π΄-сСрвСра: www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity_26.html. Π― большой Ρ„Π°Π½Π°Ρ‚ TeamCity, поэтому рассмотрим ΠΈΠΌΠ΅Π½Π½ΠΎ эту CI.

Автоматизация ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Windows-слуТб

Для автоматичСского создания windows-слуТб ΠΏΡ€ΠΎΡ‰Π΅ всСго Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ sc:

TeamCity

ИспользованиС срСдств, описанных Π²Ρ‹ΡˆΠ΅, сэкономит вашС врСмя. ПойдСм дальшС ΠΈ установим Π±ΠΈΠ»Π΄-сСрвСр. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ TeamCity: www.jetbrains.com/teamcity ΠΈ запускаСм инсталятор, ΠΆΠΌΠ΅ΠΌ Π²Π΅Π·Π΄Π΅ «Ок».
Π”Π²Π° основных понятия TeamCity – Β«ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Β» ΠΈ Β«Π±ΠΈΠ»Π΄Β». Β«ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Β» соотвСтствуСт Π²Π°ΡˆΠ΅ΠΌΡƒ ΡΠΎΠ»ΡŽΡˆΠ½Ρƒ, Π° ΠΏΠΎΠ΄ Π±ΠΈΠ»Π΄ΠΎΠΌ понимаСтся любая осмыслСнная ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ дСйствий Π½Π°Π΄ вашим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ: Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ сборка, запуск тСстов, Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ° Π½Π° сСрвСр, созданиС Π±Π΅ΠΊΠ°ΠΏΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Автоматизированная Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом, Π΄Π°Π΄ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ‚Π΅ΠΌΡƒ Ρƒ ΠΊΠΎΠ³ΠΎ Visual Studio Π½Π΅ устновлСна.
Основная идСя, это Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ msbuild-шаг с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, создайтС Π½ΠΎΠ²Ρ‹ΠΉ Build Definition ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг Msbuild. Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ:

Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡƒΠΊΠ°ΠΆΡƒΡ‚, ΠΊΡƒΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ.
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ потрСбуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ шаг Command Line:

БохраняСтС Π±ΠΈΠ»Π΄. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΡ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΈΠ· VCS. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Π΅Π²-стСнд ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ дня. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ максимально быстро.

Rolling builds

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° – Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ Π½Π° Π·Π°ΠΏΡƒΠΊ Π±ΠΈΠ»Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сборку вашСго солюшна послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСнСния Π² Ρ€Π΅ΠΏΠΎ ΠΈΠ»ΠΈ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 ΠΌΠΈΠ½ΡƒΡ‚), Ссли Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². К этому Π±ΠΈΠ»Π΄Ρƒ слСдуСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. TeamCity ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅, jabber, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π³ΠΈΠ½Π° для VisualStudio ΠΈ Tray-прилоТСния. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎ вкусу. МнС ΠΏΠΎ Π΄ΡƒΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ‚Ρ€Π΅Π΅. Если Π±ΠΈΠ»Π΄ сломался – Π½Π°Π΄ΠΎ срочно Ρ‡ΠΈΠ½ΠΈΡ‚ΡŒ.

Как Π½Π΅ Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π±ΠΈΠ»Π΄

КакиС Π±Ρ‹ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π²Ρ‹ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄Π΅Π»Π°Π»ΠΈ, Π½Π΅ сущСствуСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа Π΄Π°Ρ‚ΡŒ 100% Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² VCS ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°ΠΆΠ΅ Π½Π΅ собираСтся. Π­Ρ‚ΠΎΡ‚ вопрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ административных ΠΌΠ΅Ρ€: Π½Π΅ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ с Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ², Ρ‡Ρ‚ΠΎ Π±ΠΈΠ»Π΄ послС Ρ‚Π²ΠΎΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ собрался, ΠΊΡ‚ΠΎ сломал, Ρ‚ΠΎΡ‚ ΠΈ Ρ‡ΠΈΠ½ΠΈΡ‚. Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π³Π΄Π΅ я Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° со слишком часто сломанным Π±ΠΈΠ»Π΄ΠΎΠΌ Π±Ρ‹Π»Π° Ρ€Π΅ΡˆΠ΅Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ: сломал Π±ΠΈΠ»Π΄ – принСси Ρ‚ΠΎΡ€Ρ‚ΠΈΠΊ. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ‚ΠΎΡ€Ρ‚Ρ‹ Π΅Π»ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь, ΠΏΠΎΡ‚ΠΎΠΌ пСрСстали.

АвтоматичСский запуск тСстов

Π­Ρ‚ΠΎΡ‚ шаг слСдуСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° 2: ΡŽΠ½ΠΈΡ‚-тСсты ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹Π΅ тСсты. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡŽΠ½ΠΈΡ‚-тСсты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° любом ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ. ВсС внСшниС зависимости Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ„Π΅ΠΉΠΊΠ°ΠΌΠΈ.

Запуск ΡŽΠ½ΠΈΡ‚-тСстов

Запуск ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹Ρ… тСстов

Π­Ρ‚ΠΈ тСсты ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΈΡ… запуск ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ Π½Π°ΠΊΠ°Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π±Π΅ΠΊΠ°ΠΏΠΎΠ² ΠΈΠ»ΠΈ скриптов ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎ запускС Ρ‚Π°ΠΊΠΈΡ… тСстов. Π›ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π·Π°Ρ…Π»Π°ΠΌΠ»ΡΡ‚ΡŒ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠΎΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для Π½ΠΈΡ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±ΠΈΠ»Π΄. TeamCity позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π±ΠΈΠ»Π΄ΠΎΠ². Π’ Build triggers Π±ΠΈΠ»Π΄Π° с ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΌΠΈ/ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ тСстами Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€, ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π±ΠΈΠ»Π΄Π° с Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠΎΠΉ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π±ΠΈΠ»Π΄Π° для запуска ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹Ρ… тСстов я описал Π² Ρ‚ΠΎΠΏΠΈΠΊΠ΅: habrahabr.ru/post/182032.

Π‘Π΅ΠΊΠ°ΠΏΡ‹

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π΅ΠΊΠ°ΠΏΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ. Для Π±Π΅ΠΊΠ°ΠΏΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π»ΠΈΡ‡Π½ΠΎ я Π½Π΅ нашСл Π½ΠΈΡ‡Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ nnbackup: www.nncron.ru/index_ru.shtml.

Команда создаСт Π°Ρ€ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Π² zip ΠΏΠ°ΠΏΠΊΡƒ source ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π°Ρ€Ρ…ΠΈΠ² Π² destination. Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ nnbackup Π½Π° Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ с Π±ΠΈΠ»Π΄-сСрвСра: вопрос Π²Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ, располоТСния Π±ΠΈΠ»Π΄ сСрвСра, сСтСвых ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΈ бСзопасности.

Π‘Π΅ΠΊΠ°ΠΏΠΈΡ‚ΡŒ sql-сСрвСр ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ T-SQL

Π’.Π΅. для автоматичСского Π±Π΅ΠΊΠ°ΠΏΠ°, Π²Π°ΠΌ потрСбуСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Command Line-шаг. Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ msbuild-тасками ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ-ΠΆΠ΅ самого community-ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π° для nnbackup Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой msbuild-таск.
МоТно ΠΏΠΎΠΉΡ‚ΠΈ дальшС ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ Π½Π° запуск автоматичСского ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈΠ· Π±Π΅ΠΊΠ°ΠΏΠ°, Ссли ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹Π΅ тСсты Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ. Π’ΠΎΠ³Π΄Π° Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π±ΠΈΠ»Π΄ΠΎΠ²: Π’Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ° Β» ΠŸΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹Π΅ тСсты Β» ΠžΡ‚ΠΊΠ°Ρ‚ ΠΈΠ· Π±Π΅ΠΊΠ°ΠΏΠ°.

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с систСмой Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π±Π°Π³-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ΠΎΠΌ

Π”ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΌΡ‹ ΡƒΠΆΠ΅ сдСлали ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ. ΠžΡΡ‚Π°Π»Π°ΡΡŒ ΠΎΠ΄Π½Π° нСприятная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Π‘ΠΈΠ»Π΄-сСрвСр всС-Π΅Ρ‰Π΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ связан с нашим процСссом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Он Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Π·Π°Π΄Π°Ρ‡Π°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
TeamCity ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с YouTrack, Jira ΠΈ Bugzilla. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ выполняСтся Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π² 2 ΠΊΠ»ΠΈΠΊΠ°. ПослС этого, указывая Π½ΠΎΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ΠΊΠΎΠΌΠΈΡ‚Ρƒ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ссылки Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π±ΠΈΠ»Π΄Π΅.
YouTrack ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ. ОсновноС прСимущСство: YouTrack Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Π±ΠΈΠ»Π΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Π°Π³ ΠΈΠ»ΠΈ Ρ„ΠΈΡ‡Π° Π±Ρ‹Π»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹.

АртСфакты Π±ΠΈΠ»Π΄Π°

Если вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½ΠΎΠ΅, Ρ‚ΠΎ Π²Π°ΠΌ, навСрняка Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ созданиСм инсталляторов ΠΈΠ»ΠΈ deploy packages для ΠΎΡ‚Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ инсталляторов – ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅ΠΌΠ°, я Π½Π΅ Π±ΡƒΠ΄Ρƒ Π΅Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этого Ρ‚ΠΎΠΏΠΈΠΊΠ°. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, инсталлятор ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ – это самая ваТная Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·Π°. Как Ρ€Π°Π· для этого ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Ρ‹ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ Π±ΠΈΠ»Π΄Π°.

АртСфакт – это любой Ρ„Π°ΠΉΠ», ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния Π±ΠΈΠ»Π΄Π°. Для Π±ΠΈΠ»Π΄ΠΎΠ² с инсталляторами Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ my-installer.exe ΠΈΠ»ΠΈ my-package.zip, ΠΊΠ°ΠΊ маску для Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² Π±ΠΈΠ»Π΄Π° ΠΈ TeamCity ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ ΠΈΡ… Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅.
Π’ΠΎΡ‚ здСсь ΠΈ пригодится интСграция с Issue Tracker’ом. ВСстировщик ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкС с Π±ΠΈΠ»Π΄ΠΎΠΌ ΠΈ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с исправлСниями ΠΈΠ· Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² Π±ΠΈΠ»Π΄Π°.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ…ΠΎΡ‡Ρƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сугубо ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π΅Π½ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π°Π·ΠΎΠΉ. Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ инструмСнтария Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ вмСстС с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. ΠœΡ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ софт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Тизнь Π΄Ρ€ΡƒΠ³ΠΈΡ… людСй Π»ΡƒΡ‡ΡˆΠ΅. Π Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ софт ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΌ самим Π±Ρ‹Π»ΠΎ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ CI/CD? РазбираСмся с Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставкой

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ continuous integration

Π’ ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта курса Β«CI/CD Π½Π° AWS, Azure ΠΈ GitlabΒ» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ для вас ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

НСпрСрывная интСграция (Continuous Integration, CI) ΠΈ нСпрСрывная поставка (Continuous Delivery, CD) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ, Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ‡Π°Ρ‰Π΅ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ измСнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

CI/CD β€” это ΠΎΠ΄Π½Π° ΠΈΠ· DevOps-ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ. Она Ρ‚Π°ΠΊΠΆΠ΅ относится ΠΈ ΠΊ agile-ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ: автоматизация развСртывания позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ бизнСс-Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π½Π° качСствС ΠΊΠΎΠ΄Π° ΠΈ бСзопасности.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ CI/CD

НСпрСрывная интСграция β€” это мСтодология Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² ΠΊΠΎΠ΄ вносятся нСбольшиС измСнСния с частыми ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ. И ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ инструмСнтов, Ρ‚ΠΎ появляСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ тСстировании вносимых ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π‘ тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Ρ†Π΅Π»ΡŒ CI β€” ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ способ сборки, ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ тСстирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈ Π½Π°Π»Π°ΠΆΠ΅Π½Π½ΠΎΠΌ процСссС Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ с большСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ частыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ качСства ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

НСпрСрывная поставка начинаСтся Ρ‚Π°ΠΌ, Π³Π΄Π΅ заканчиваСтся нСпрСрывная интСграция. Она Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ окруТСния: Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ с ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚Π°ΠΊ ΠΈ со срСдами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ тСстирования.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ CI/CD ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ спСцифичСскиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ окруТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ. А Ρ‚Π°ΠΊΠΆΠ΅ CI/CD-автоматизация выполняСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ запросы ΠΊ Π²Π΅Π±-сСрвСрам, Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сСрвисам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² пСрСзапускС ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ прилоТСния.

НСпрСрывная интСграция ΠΈ нСпрСрывная поставка Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌ тСстировании, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ конСчная Ρ†Π΅Π»ΡŒ β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° качСствСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. НСпрСрывноС тСстированиС часто рСализуСтся Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… тСстов (рСгрСссионных, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π΅.

ЗрСлая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° CI/CD позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅: ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, сборки автоматичСски Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ поставку, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ СТСчасноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅. Π₯отя здСсь стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ нСпрСрывная поставка ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ для всСх бизнСс-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

НСпрСрывная интСграция ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ качСство

НСпрСрывная интСграция β€” это мСтодология Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, основанная Π½Π° Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… процСссах ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½Π½ΠΎΠΉ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто коммитят свой ΠΊΠΎΠ΄ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ исходного ΠΊΠΎΠ΄Π°. И Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ придСрТиваСтся ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² дСнь. ΠŸΡ€ΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… измСнСниях ΠΏΡ€ΠΎΡ‰Π΅ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ Π΄Π΅Ρ„Π΅ΠΊΡ‚Ρ‹ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… измСнСниях, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ измСнСния ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ части ΠΊΠΎΠ΄Π° нСсколькими Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ ΠΏΡ€ΠΈ слиянии.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Π½Π΅Π΄Ρ€ΡΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ, часто Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ с настройки систСмы контроля вСрсий ΠΈ опрСдСлСния порядка Ρ€Π°Π±ΠΎΡ‚Ρ‹. НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ часто, рСализация Ρ„ΠΈΡ‡ ΠΈ исправлСниС Π±Π°Π³ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ довольно Π΄ΠΎΠ»Π³ΠΎ. Для контроля Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΠΈΡ‡ΠΈ ΠΈ ΠΊΠΎΠ΄ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ сущСствуСт нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ².

МногиС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„ΠΈΡ‡Π°-Ρ„Π»Π°Π³ΠΈ (feature flag) β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ находится Π² стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, оборачиваСтся Ρ„ΠΈΡ‡Π°-Ρ„Π»Π°Π³Π°ΠΌΠΈ ΠΈ развСртываСтся ΠΈΠ· master-Π²Π΅Ρ‚ΠΊΠΈ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию. По Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ исслСдования 63 ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΈΡ‡Π°-Ρ„Π»Π°Π³ΠΈ, говорят ΠΎΠ± ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ тСстируСмости ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ качСства ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΈΡ‡Π°-Ρ„Π»Π°Π³Π°ΠΌΠΈ Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ CloudBees Rollout, Optimizely Rollouts ΠΈ LaunchDarkly, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² CI/CD ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„ΠΈΡ‡.

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΈΡ‡Π°ΠΌΠΈ β€” использованиС Π²Π΅Ρ‚ΠΎΠΊ Π² систСмС контроля вСрсий. Π’ этом случаС Π½Π°Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ модСль вСтвлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ Gitflow) ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Π²Π΅Ρ‚ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, тСстирования ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°. Для Ρ„ΠΈΡ‡ с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΡ‡Π°-Π²Π΅Ρ‚ΠΊΠΈ. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Ρ„ΠΈΡ‡Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΠ»ΠΈΠ²Π°ΡŽΡ‚ измСнСния ΠΈΠ· Ρ„ΠΈΡ‡Π°-Π²Π΅Ρ‚ΠΊΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π΅Π½, Ссли ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ разрабатываСтся ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΠΈΡ‡.

Π­Ρ‚Π°ΠΏ сборки Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. НапримСр, Ссли Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ CI ΡƒΠΏΠ°ΠΊΡƒΠ΅Ρ‚ всС статичСскиС Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ HTML, CSS ΠΈ JavaScript, вмСстС с Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ скриптами Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

CI Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΏΠ°ΠΊΡƒΠ΅Ρ‚ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ автоматичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ тСстирования. Π’Π°ΠΊΠΎΠ΅ тСстированиС позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сдСланныС измСнСния Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сломали.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ CI/CD-инструмСнтов позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сборку Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΏΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ ΠΈΠ»ΠΈ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ. Командам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ расписаниС сборки, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½ΠΈΡ… Π² зависимости ΠΎΡ‚ числСнности ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ количСства Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π². Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ сборка Π±Ρ‹Π»ΠΈ быстрыми, ΠΈΠ½Π°Ρ‡Π΅ долгая сборка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ прСпятствиСм для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΡ…ΡΡ быстро ΠΈ часто ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ.

НСпрСрывноС тСстированиС β€” это большС, Ρ‡Π΅ΠΌ автоматизация тСстирования

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ QA-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ тСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΡŒ сборки. ВСстированиС Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ спринта ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡ‹Π΅ Π² рСгрСссионныС тСсты для всСго прилоТСния. РСгрСссионныС тСсты ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: Π½Π΅ сломали Π»ΠΈ ΠΈΡ… измСнСния Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ части прилоТСния.

Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ всС ΠΈΠ»ΠΈ Ρ‡Π°ΡΡ‚ΡŒ рСгрСссионных тСстов Π² своих Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… окруТСниях. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

РСгрСссионныС тСсты β€” это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ. ВСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, тСстированиС API, статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°, тСстированиС бСзопасности β€” эти ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ тСстирования Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска этих тСстов ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-Ρ…ΡƒΠΊ (webhook) ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-сСрвис ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния: ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π±Ρ‹Π» тСст ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

НСпрСрывноС тСстированиС ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ автоматичСского тСстирования Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ CI/CD. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ CI ΠΈ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΄ΠΎ ΠΈΠ»ΠΈ Π²ΠΎ врСмя запуска CI-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°. ВСсты, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ развСртывания ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ окруТСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ тСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ бСзопасности, часто ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ CD ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ послС разворачивания сборок Π² Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… срСдах.

CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ поставку ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ окруТСния

НСпрСрывная поставка β€” это автоматичСскоС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ прилоТСния Π² Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ нСсколькими окруТСниями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ тСстирования, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ развСртываСтся для тСстирования ΠΈ Ρ€Π΅Π²ΡŒΡŽ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ CI/CD-инструмСнты ΠΊΠ°ΠΊ Jenkins, CircleCI, AWS CodeBuild, Azure DevOps, Atlassian Bamboo, Travis CI.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ состоит ΠΈΠ· этапов сборки, тСстирования ΠΈ развСртывания. Π‘ΠΎΠ»Π΅Π΅ слоТныС ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ этапы:

Π’ Π±ΠΎΠ»Π΅Π΅ слоТном CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ этапы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ синхронизация Π΄Π°Π½Π½Ρ‹Ρ…, Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… рСсурсов, установка ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ. CI/CD-инструмСнты ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹. НапримСр, Ρƒ Jenkins Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 1500 ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ со сторонними ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, администрирования, управлСния исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ сборкой.

ΠŸΡ€ΠΈ использовании CI/CD-инструмСнта Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сконфигурированы Π²Π½Π΅ прилоТСния Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния. CI/CD-инструмСнты ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ значСния этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²ΠΎ врСмя развСртывания для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ окруТСния.
Π’Π°ΠΊΠΆΠ΅ Π² CD-инструмСнтах ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹ ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ. Π’ случаС сбоя сборки ΠΈΠ»ΠΈ поставки ΠΎΠ½ΠΈ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°ΡŽΡ‚ ΠΎΠ± этом. ΠŸΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ CD с систСмой контроля вСрсий ΠΈ agile-инструмСнтами облСгчаСтся поиск ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… историй, Π²ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… Π² сборку.

РСализация CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ² с Kubernetes ΠΈ бСссСрвСрными Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌΠΈ

МногиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Docker, ΠΈ систСмы оркСстрации, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Kubernetes. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ, поставку ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ с нСпостоянной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

Π•ΡΡ‚ΡŒ мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² совмСстного использования ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², инфраструктуры ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΈ CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ². ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ это Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΡΡ… Kubernetes with Jenkins ΠΈ Kubernetes with Azure DevOps.

АрхитСктура бСссСрвСрных вычислСний прСдставляСт собой Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ развСртывания ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ бСссСрвСрном ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ инфраструктурой ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ управляСт поставщик ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… услуг, Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ потрСбляСт рСсурсы ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости Π² соотвСтствии с Π΅Π³ΠΎ настройками. НапримСр, Π² AWS бСссСрвСрныС прилоТСния Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ AWS Lambda, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Jenkins с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π³ΠΈΠ½Π°.

CI/CD обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ частоС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡ‚ΠΎΠ³ΠΈ. CI ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚, тСстируСт сборки ΠΈ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ. CD автоматичСски Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ прилоТСния ΠΈ выполняСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ тСсты.

CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ часто Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² прилоТСния с Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ процСссом поставки. Помимо стандартизации сборки, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСстов ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ цСлостный производствСнный процСсс ΠΏΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π°. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ CI/CD позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ силы Π½Π° Π΅Π³ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅.

CI/CD являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· DevOps-ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° Π±ΠΎΡ€ΡŒΠ±Ρƒ с противорСчиями ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят часто Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния, ΠΈ эксплуатациСй, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Благодаря Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Ρ‡Π°Ρ‰Π΅, Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ эксплуатации, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ конфигурация ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ стандартизирована ΠΈ Π² процСссС поставки осущСствляСтся Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ тСстированиС. Π’Π°ΠΊΠΆΠ΅ настройка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ прилоТСния ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΡ‚ΠΊΠ°Ρ‚Π°.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ ΠΎΡ‚ внСдрСния CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ эффСктивности (KPI) DevOps. Π’Π°ΠΊΠΈΠ΅ KPI ΠΊΠ°ΠΊ частота поставки (deployment frequency), врСмя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (change lead time) ΠΈ срСднСС врСмя восстановлСния послС ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π° (mean time to recovery) часто ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ CI/CD с Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΌ тСстированиСм. Однако CI/CD β€” это лишь ΠΎΠ΄ΠΈΠ½ ΠΈΠ· процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ этим ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌ. Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ условия для увСличСния частоты поставки.

Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с CI/CD ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ эксплуатации Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ совмСстно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с тСхнологиями, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ консСнсус Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ своСму бизнСсу ΠΈ тСхнологиям, Ρ‡Ρ‚ΠΎΠ±Ρ‹ послС внСдрСния CI/CD ΠΊΠΎΠΌΠ°Π½Π΄Π° постоянно ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π°ΡΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *