для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ИВ Π‘Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ

ПолСзно

β€” Онлайн Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ устойчивых ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ

β€” Онлайн ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ подсСтСй

β€” Руководство администратора FreePBX Π½Π° русском языкС

β€” Руководство администратора Cisco UCM/CME Π½Π° русском языкС

β€” Руководство администратора ΠΏΠΎ Linux/Unix

Навигация

Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

ВСлСфония

FreePBX ΠΈ Asterisk

Настройка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²

ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ сСти

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈ стандарты

РазбираСмся с Jenkins. Π§Ρ‚ΠΎ это?

Π΄Π²ΠΎΡ€Π΅Ρ†ΠΊΠΈΠΉ для вашСй Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

БСгодня (Π΄Π° прямо сСйчас) создаСтся ΠΈ производится мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΈ Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚, ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π±Π΅Π· Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. И Ρ‚ΡƒΡ‚ понСслась 🀯

Онлайн курс ΠΏΠΎ Linux

ΠœΡ‹ собрали ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ‚ самых вострСбованных Π·Π½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Ρ‚Π΅Π±Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ администратора Linux, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ знания ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ шаг ΠΊ DevOps

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎ порядку

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС (ПО) это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ список ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ устройств. Π’ΠΎ ΠΊΠ°ΠΊ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ всС Π½ΠΎΠ²Ρ‹Π΅ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠ³Ρ€Ρ‹, дополнСния, обновлСния. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь производятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ устройства ΠΈ Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹, дисководы, ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹, ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅. РазумССтся, Π΄Π°Π½Π½Ρ‹Π΅ устройства Π½Π΅ смогут Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ устарСваСт ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ обновлСния.

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

Jenkins систСма с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ доступСн для просмотра, изучСния ΠΈ измСнСния. ΠšΡΡ‚Π°Ρ‚ΠΈ создан Π½Π° Π±Π°Π·Π΅ Java. ДТСнкинс позволяСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π±Π΅Π· участия Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Данная систСма ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для обСспСчСния процСсса Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π’ΠΎΡƒ Π²ΠΎΡƒ.

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

Π˜Π½Ρ‹ΠΌΠΈ словами, это созданиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€Π°Ρ„Ρ‚ΠΎΠ²Ρ‹Ρ… вСрсий (Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΎΠ²) ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΏΠΈΠΉ, Π² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Jenkins ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ практичСски Π² любой соврСмСнной ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² автоматичСском Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚Π΅ (Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π·Π°Π΄Π°Ρ‡.

Для Π½Π°Ρ‡Π°Π»Π° разбСрСмся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅. Π‘ английского «deploy» пСрСводится ΠΊΠ°ΠΊ «Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅«. И это Ρ†Π΅Π»Ρ‹ΠΉ процСсс дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ использованию:

АвтоматичСский Π΄Π΅ΠΏΠ»ΠΎΠΉ это Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

МногиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ скаТут: «Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Jenkins, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ Buildbot?». Π£ нас Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΡ‡ΠΊΠ°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹ ΠΈ отличия Jenkins Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ, рядовой программист, Π»ΠΈΠ±ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚Π° Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. И сдСлаСт ΠΎΠ½ это Π·Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ срок.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π² Buildbot, Π½ΠΎ для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π½Ρ‘ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

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

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Плагин это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ встраиваСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Π΅Π΅ возмоТности, Π° Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Jenkins ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ всСвозмоТных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², возмоТности Ρ‚Π°ΠΊΠΎΠ³ΠΎ автоматичСского дСплоя Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹.

Jenkins это стандартизированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΎΡΠΈΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ спСциалист с нСбольшим бэкграундом (ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ) Π² IT, всСго Π·Π° нСсколько часов.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ основныС прСимущСства Jenkins:

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ этот инструмСнт. Π£Π²Π΅Ρ€Π΅Π½Ρ‹, Π²Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΠΆΠ°Π»Π΅Π΅Ρ‚Π΅. Но это Π½Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ.

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

НСпрСрывная интСграция ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ (Deployment) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Jenkins

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΠ½Π΅ Π±Ρ‹Π»ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Jenkins, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ статСй ΠΏΠΎ Π΅Π³ΠΎ установкС ΠΈ настройкС устарСли. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΏΠΈΡˆΡƒ ΠΎΠ± этом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΌΠ½Π΅, устанавливая Π΅Π³ΠΎ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Jenkins?

Jenkins β€” это срСдство Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ создания, тСстирования ΠΈ развСртывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, упрощая Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

По сути, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Jenkins (ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс развСртывания ΠΈΠ»ΠΈ прСдоставлСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² вашСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ сразу послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ эти измСнСния Π³ΠΎΡ‚ΠΎΠ²Ρ‹. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ насколько ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ сайты сразу послС объСдинСния PR с master (ΠΈΠ»ΠΈ main).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Jenkins?

Π£ Π½Π΅Π³ΠΎ сильноС сообщСство, поэтому Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Jenkins ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, ΠΈ я надСюсь Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ это Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ дальшС.

Π’ этом руководствС ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ CI/CD для прилоТСния Node с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Jenkins. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с опрСдСлСния всСх шагов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠΌΠ΅ΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ объясним ΠΈΡ… Π½ΠΈΠΆΠ΅:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GitHub для прилоТСния node

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ node ΠΈ помСститС Π΅Π³ΠΎ Π½Π° GitHub

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Heroku для развСртывания

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Π΅Π±-Ρ…ΡƒΠΊ GitHub для внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Jenkins

Π‘ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Jenkins

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ GitHub Π² Jenkins

Π‘ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Jenkins для развСртывания Π½Π° Heroku послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ тСстирования

НСобходимыС условия

УчСтная запись Π½Π° GitHub. МоТно Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ здСсь.

УчСтная запись Heroku. МоТно Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ здСсь.

УчСтная запись Π½Π° GitHub. МоТно Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ здСсь.

УчСтная запись Heroku. МоТно Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ здСсь.

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ!

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ПослС создания рСпозитория, ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ repository_url Π½Π° свой.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ находится Π² Π±Π»ΠΎΠΊΠ΅ скриптов вашСго Ρ„Π°ΠΉΠ»Π° package.json, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ start ΠΈ test для запуска ΠΈ тСстирования прилоТСния:

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ express для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° прилоТСния node, поэтому инсталлируйтС Π΅Π³ΠΎ, запустив эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

Π”Π°Π»Π΅Π΅ создайтС Ρ„Π°ΠΉΠ» index.js, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° Π² нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ node, ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

ЗапуститС npm start ΠΈ Π·Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° http://localhost:4000/ Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ для просмотра прилоТСния Node, Π½Π° экранС появится Hello world.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ°Ρ€Ρƒ тСстов Π² нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, впослСдствии, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CI, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ тСсты доступны ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния.

Π˜Ρ‚Π°ΠΊ, Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ установитС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ jest ΠΈ supertest с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π”Π°Π»Π΅Π΅ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создайтС ΠΏΠ°ΠΏΠΊΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π΅ __test__ (Π΄Π²Π° Π·Π½Π°ΠΊΠ° подчСркивания, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ). Π’Π½ΡƒΡ‚Ρ€ΠΈ этой ΠΏΠ°ΠΏΠΊΠΈ __test__ создайтС Ρ„Π°ΠΉΠ» index.test.js ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ (Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свои тСсты Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ).

ЗапуститС npm test ΠΈΠ»ΠΈ npm run test Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, ΠΈ Π²Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ тСст(Ρ‹) ΠΏΡ€ΠΎΡˆΠ΅Π»(ΠΈ):

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° наш ΠΊΠΎΠ΄ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ тСсты ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ измСнСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° GitHub.

Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² свою панСль управлСния Heroku.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π² ΠΏΡ€Π°Π²Ρ‹ΠΉ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΠ³ΠΎΠ» ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° New.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Create new app (Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅).

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ App name (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния) ΠΏΠΎ своСму Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π΅Π³ΠΈΠΎΠ½ (Choose a region), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ.

НаТмитС Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Create app).

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ login (Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅) Π² Heroku с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Heroku CLI. Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ установили Heroku CLI, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ.

ПослС этого Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ remote Π² ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π—Π°Ρ‚Π΅ΠΌ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π­Ρ‚ΠΎ дСлаСтся для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ open app (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) Π½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ прилоТСния Heroku, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° свой сСрвСр ΠΏΠΎΠ΄ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ non-root.

ПослС этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ядро с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для установки java runtime:

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ΄Π½Ρƒ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ для установки Jenkins.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Jenkins ΠΈ всС зависимости инсталлированы ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΡŒ запуска Jenkins, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ:

Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ active:

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Jenkins выполняСтся Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 8080, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ufw:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ состояниС ufw с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посСтитС сайт http://ip_address:8080 для настройки Jenkins, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ экран Unlock Jenkins.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Jenkins, Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для отобраТСния пароля. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π² ΠΏΠΎΠ»Π΅ Administrator password (ΠŸΠ°Ρ€ΠΎΠ»ΡŒ администратора).

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ экранС отобраТаСтся Customize Jenkins (ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Jenkins), Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Install suggested plugins (УстановитС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹).

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ экрану Create First Admin User (Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ-администратора). Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Username (имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ), Password (ΠΏΠ°Ρ€ΠΎΠ»ΡŒ), Full name (ΠΏΠΎΠ»Π½ΠΎΠ΅ имя) ΠΈ E-mail address (адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹) для вашСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π·Π°Ρ‚Π΅ΠΌ Save and Continue (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ).

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ПослС этого Π²Π²Π΅Π΄ΠΈΡ‚Π΅ IP-адрСс сСрвСра, Ρ‚.Π΅. http://ip_address:8080, Π·Π°Ρ‚Π΅ΠΌ Save and Finish (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ).

Π£Ρ€Π°, Jenkins Π³ΠΎΡ‚ΠΎΠ²! НаТмитС Π½Π° Start using Jenkins (ΠΠ°Ρ‡Π°Ρ‚ΡŒ использованиС Jenkins).

Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitHub прилоТСния ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Settings (Настройки), Π·Π°Ρ‚Π΅ΠΌ Π½Π° Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Webhooks. НаТмитС Π½Π° Add webhooks (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Π±-Ρ…ΡƒΠΊΠΈ) ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ url Jenkins с приставкой /github-webhook/ Π² ΠΏΠΎΠ»Π΅ Payload URL.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ application/json для Content-type.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Just the push event для события, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ Π²Π΅Π±-Ρ…ΡƒΠΊ.

УстановитС Ρ„Π»Π°ΠΆΠΎΠΊ Active ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Add webhook. Π’Π΅ΠΏΠ΅Ρ€ΡŒ GitHub ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ события Π² Jenkins.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ΠΈΠ»ΠΈ ΠΎΠΊΠ½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° свой сСрвСр с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ non-root.

Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ root, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ:

ПослС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root ΠΈ инсталляции npm, Jenkins автоматичСски создаСт Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π½Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ SSH с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

НаТмитС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Enter для Π²Π²ΠΎΠ΄Π° мСстополоТСния ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΈ запросС, просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Enter.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса распСчатайтС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ non-root Π² Π½ΠΎΠ²ΠΎΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ authorized_keys ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ id_rsa ΠΈ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ настроСны ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» сСрвСра jenkins ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²ΠΎΠΉΡ‚ΠΈ Π² систСму ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ non-root, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ssh. Π’Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²ΠΎΠΉΠ΄Π΅Ρ‚Π΅ Π² систСму, Ссли Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ всСм Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΌ дСйствиям.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

На ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Jenkins ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» Manage jenkins (Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ jenkins), Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Manage plugins (Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ).

На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Available Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ github ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Github Integration plugin (Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Github).

НаТмитС Π½Π° Install without restart (Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ), ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Π±ΡƒΠ΄Π΅Ρ‚ установлСн Ρ‡Π΅Ρ€Π΅Π· нСсколько сСкунд.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° GitHub ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ Jenkins, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

На Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° New Item (Новая Ρ‚Π΅ΠΌΠ°), Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Freestyle project ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ OK.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π”Π°Π»Π΅Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π½Π° страницу ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½ΠΎ Ссли этого Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π΅, Π½Π°ΠΆΠ°Π² Configure Π½Π° Π»Π΅Π²ΠΎΠΉ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ.

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠ· Π΄ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Source Code Management (Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ исходным ΠΊΠΎΠ΄ΠΎΠΌ), Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Git ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Repository URL с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .git (Ρ‚ΠΎΡ‚ ΠΆΠ΅ url, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ использовали для клонирования рСпозитория).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ master Π²Π΅Ρ‚Π²ΡŒ Π½Π° main ΠΈΠ»ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‚Π²ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ для процСсса развСртывания.

НаТмитС Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Add repository (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Heroku.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ прилоТСния Heroku, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² App settings (настройки прилоТСния) Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Heroku ΠΈ скопируйтС ссылку.

Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΡƒΡŽ панСль Jenkins ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ эту ссылку Π² Repository URL.

Нам понадобятся Π½ΠΎΠ²Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, поэтому Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Add, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡ… для нашСго прилоТСния Heroku.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Jenkins ΠΈΠ· списка, ΠΈ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ username (имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) ΠΏΠΎ своСму Π²Ρ‹Π±ΠΎΡ€Ρƒ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π― Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ heroku Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Heroku Api key (Api-ΠΊΠ»ΡŽΡ‡) Π² ΠΏΠΎΠ»Π΅ Password

(ΠŸΠ°Ρ€ΠΎΠ»ΡŒ) ΠΈ Save (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Heroku Api key, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΡƒΡŽ панСль Heroku, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Account Settings (Настройки Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°) ΠΈ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠ·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Api key. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΠΎΠ»Π΅ Password (ΠŸΠ°Ρ€ΠΎΠ»ΡŒ).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Description (ОписаниС) для этой ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

НаТмитС Add (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ созданиС ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ спискС Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали. Если Π½Π΅Ρ‚, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΡ….

Π”Π°Π»Π΅Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° advanced ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Name, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ срСди Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰. Π­Ρ‚ΠΎ имя понадобится Π½Π°ΠΌ ΠΏΠΎΠ·ΠΆΠ΅. Π― Π½Π°Π·Π²Π°Π» своС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ jenkinsTest, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π»Π΅Π³ΠΊΠΎ ΠΈ понятно.

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠ· Π΄ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Build Triggers ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ GitHub hook trigger for GITScm polling (Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ Ρ…ΡƒΠΊΠ° GitHub для опроса GITScm).

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Build Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Add build step (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ шаг сборки) ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Execute shell (Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ). Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

НаТмитС Π½Π° Add post-build action (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ дСйствиС послС сборки), Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Git Publisher ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Push Only If Build Succeeds (Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС успСха сборки).

НаТмитС Π½Π° Add Branch (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Ρ‚Π²ΡŒ), Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя Π²Π΅Ρ‚Π²ΠΈ для развСртывания Π² ΠΏΠΎΠ»Π΅ Branch to Push ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Name, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ рСпозитория прилоТСния Heroku, Π² ΠΏΠΎΠ»Π΅ Target remote name (ΠΌΠΎΠ΅ имя Π±Ρ‹Π»ΠΎ jenkinsTest, Ссли Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, поэтому Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ сюда своС).

Π—Π°Ρ‚Π΅ΠΌ Save (сохранитС).

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΡƒΡŽ панСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Build now (ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сСйчас) Π½Π° Π»Π΅Π²ΠΎΠΉ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ Π·Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборкой вашСго ΠΊΠΎΠ΄Π°!

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

ВнСситС измСнСния Π² свой ΠΊΠΎΠ΄ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½Π° GitHub. Π—Π°Ρ‚Π΅ΠΌ посмотритС, ΠΊΠ°ΠΊ ваш ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ Π½Π° Heroku.

ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ всСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΎΠ½Π»Π°ΠΉΠ½-курсами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ Π² JavaScript-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅:

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

Π‘ΠΈΡ‚Π²Π° Jenkins ΠΈ GitLab CI/CD

Π’ послСднСС дСсятилСтиС достигнуты Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ успСхи Π² сфСрС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ инструмСнтов Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ (Continuous Integration, CI) ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ развёртывания (Continuous Delivery, CD). Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ эксплуатации ПО (Development Operations, DevOps) ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ быстрому росту спроса Π½Π° CI/CD-инструмСнты. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ постоянно ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ΡΡ, ΡΡ‚Ρ€Π΅ΠΌΡΡΡŒ ΠΈΠ΄Ρ‚ΠΈ Π² Π½ΠΎΠ³Ρƒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, выходят ΠΈΡ… Π½ΠΎΠ²Ρ‹Π΅ вСрсии, Π² ΠΌΠΈΡ€Π΅ контроля качСства ПО (Quality Assurance, QA) постоянно появляСтся мноТСство Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ богатствС Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠΎΠ΄Π±ΠΎΡ€ подходящСго инструмСнтария оказываСтся Π½Π΅Π»Ρ‘Π³ΠΊΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π‘Ρ€Π΅Π΄ΠΈ всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… CI/CD инструмСнтов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎ, стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ ΠΈΡ‰Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· этой сфСры. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Jenkins ΠΈ ΠΎΠ± инструмСнтС GitLab CI/CD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ GitLab. Π£ Jenkins имССтся Π±ΠΎΠ»Π΅Π΅ 16000 Π·Π²Ρ‘Π·Π΄ Π½Π° GitHub. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GitLab Π½Π° gitlab.com Π½Π°Π±Ρ€Π°Π» Ρ‡ΡƒΡ‚ΡŒ большС 2000 Π·Π²Ρ‘Π·Π΄. Если ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Ρ‚ΠΎ окаТСтся, Ρ‡Ρ‚ΠΎ Jenkins Π½Π°Π±Ρ€Π°Π» Π² 8 Ρ€Π°Π· большС Π·Π²Ρ‘Π·Π΄, Ρ‡Π΅ΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, Π² состав ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ GitLab CI/CD. Но ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ CI/CD-инструмСнта это β€” Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ СдинствСнный ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стоит ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π•ΡΡ‚ΡŒ ΠΈ масса Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΈ это ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… сравнСниях Jenkins ΠΈ GitLab CI/CD ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠΎ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ.

Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ G2, которая Π°ΠΊΠΊΡƒΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΎ самых Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ставят ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ. Π—Π΄Π΅ΡΡŒ срСдний Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ Jenkins, Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½Π° основС 288 ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ², составляСт 4,3 Π·Π²Π΅Π·Π΄Ρ‹. А ΠΎ GitLab Ρ‚ΡƒΡ‚ имССтся 270 ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ², срСдний Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ этого инструмСнта составляСт 4,4 Π·Π²Π΅Π·Π΄Ρ‹. ΠœΡ‹ Π½Π΅ ΠΎΡˆΠΈΠ±Ρ‘ΠΌΡΡ, заявив, Ρ‡Ρ‚ΠΎ Jenkins ΠΈ GitLab CI/CD ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π½Π° Ρ€Π°Π²Π½Ρ‹Ρ… условиях. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Jenkins появился Π² 2011 Π³ΠΎΠ΄Ρƒ ΠΈ с Ρ‚Π΅Ρ… Π²Ρ€Π΅ΠΌΡ‘Π½ ΠΎΠ½ являСтся ΠΈΠ·Π»ΡŽΠ±Π»Π΅Π½Π½Ρ‹ΠΌ инструмСнтом тСстировщиков. Но ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GitLab CI/CD, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² 2014 Π³ΠΎΠ΄Ρƒ, занял свои ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΎΡ‡Π΅Π½ΡŒ высокиС, благодаря ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΌ этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹ΠΌ возмоТностям.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ популярности Jenkins Π² сравнСнии с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π³Π΄Π΅ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π»ΠΈΡΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Travis CI ΠΈ Jenkins, устроили опрос. Π’ Π½Ρ‘ΠΌ поучаствовало 85 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. РСспондСнтам Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ CI/CD-инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нравится ΠΈΠΌ большС всСго. 79% Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Jenkins, 5% Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Travis CI, Π° 16% ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Π‘Ρ€Π΅Π΄ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… CI/CD-инструмСнтов Ρ‡Π°Ρ‰Π΅ всСго упоминался GitLab CI/CD.

Если Π²Ρ‹ Π²ΡΠ΅Ρ€ΡŒΡ‘Π· Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ΡΡŒ DevOps, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты, учитывая особСнности ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΅Π³ΠΎ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ трСбования. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€, ΠΌΡ‹ собираСмся провСсти Π°Π½Π°Π»ΠΈΠ· Jenkins ΠΈ GitLab CI/CD. Π­Ρ‚ΠΎ, хочСтся Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€.

Знакомство с Jenkins

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

Jenkins β€” это ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстный, Π³ΠΈΠ±ΠΊΠΈΠΉ CI/CD-инструмСнт, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ мноТСства Π·Π°Π΄Π°Ρ‡, связанных с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Jenkins ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ написан Π½Π° Java, ΠΎΠ½ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Он ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ возмоТностСй, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π·Π°Π΄Π°Ρ‡, связанных со сборкой, тСстированиСм, Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, выпуском ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π­Ρ‚ΠΎΡ‚ инструмСнт ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… β€” macOS, Windows ΠΈ мноТСство дистрибутивов Linux, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” OpenSUSE, Ubuntu ΠΈ Red Hat. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ установочныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Jenkins, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ОБ, этот инструмСнт ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² Docker ΠΈ Π² любой систСмС, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ JRE (Java Runtime Environment).

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Jenkins создали Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Jenkins X, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитан Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² срСдС Kubernetes. Π’ Jenkins X ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Helm, сСрвСр Jenkins CI/CD, Kubernetes ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для создания CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ DevOps. НапримСр, здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ GitOps.

Π’ ΠΊΠΎΠΏΠΈΠ»ΠΊΡƒ достоинств Jenkins ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ скрипты ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ структурированы, понятны, ΠΈΡ… Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Команда Jenkins создала ΠΎΠΊΠΎΠ»ΠΎ 1000 ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ взаимодСйствия Jenkins с самыми Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ тСхнологиями. Π’ скриптах ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ систСмами Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ систСмам.

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Jenkins ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ происходит Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΅Π³ΠΎ шагС, Π·Π° Ρ‚Π΅ΠΌ, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈΡΡŒ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ этапы Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° всСм этим ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€Π°Π²Π΄Π°, Π½Π΅ примСняя Π½Π΅ΠΊΠΈΠΉ графичСский интСрфСйс, Π° ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ возмоТностями Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Jenkins

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

▍1. Π‘Π΅ΡΠΏΠ»Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° мноТСства ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ

Jenkins ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… macOS, Windows ΠΈ Linux. Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π² срСдС Docker, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ ΠΈ быстроС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π­Ρ‚ΠΎΡ‚ инструмСнт, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ сСрвлСта Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Java, Π² Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ Apache Tomcat ΠΈ GlassFish. Установка Jenkins качСствСнно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°.

▍2. Развитая экосистСма ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²

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

▍3. ΠŸΡ€ΠΎΡΡ‚Π°Ρ установка ΠΈ настройка

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

▍4. Π”Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½ΠΎΠ΅ сообщСство

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, Jenkins β€” это опСнсорсный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, экосистСма ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². Π’ΠΎΠΊΡ€ΡƒΠ³ Jenkins слоТилось большоС сообщСство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. БообщСство β€” это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ способствуСт Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ Jenkins.

▍5. НаличиС REST API

Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Jenkins ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ REST API, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ возмоТности систСмы. API для ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ доступа ΠΊ систСмС прСдставлСн Π² Ρ‚Ρ€Ρ‘Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…: XML, JSON с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ JSONP, Python. Π’ΠΎΡ‚ страница Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ подробности ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с REST API Jenkins.

▍6. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Π·Π°Π΄Π°Ρ‡

Jenkins ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ распараллСливаниС DevOps-Π·Π°Π΄Π°Ρ‡. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ инструмСнтами ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ увСдомлСния ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… выполнСния Π·Π°Π΄Π°Ρ‡. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тСстирования ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π·Π° счёт ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин.

▍7. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² распрСдСлённых срСдах

Jenkins позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ распрСдСлённыС сборки с использованиСм Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ схСму Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сущСствуСт ΠΎΠ΄ΠΈΠ½ Π³Π»Π°Π²Π½Ρ‹ΠΉ сСрвСр Jenkins ΠΈ нСсколько ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… машин. ΠŸΠΎΠ΄Ρ‡ΠΈΠ½Ρ‘Π½Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π² ситуациях, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСстированиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах. Π­Ρ‚ΠΈ возмоТности Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ Jenkins ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Знакомство с GitLab

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дТСнкинс

GitLab CI/CD ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых Π½ΠΎΠ²Ρ‹Ρ… ΠΈ самых Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… DevOps-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌΠΈ инструмСнтов. Π­Ρ‚ΠΎΡ‚ бСсплатный опСнсорсный инструмСнт встроСн Π² систСму контроля вСрсий GitLab. Π£ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ GitLab Π΅ΡΡ‚ΡŒ community-вСрсия, ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСпозиториями, срСдства для отслСТивания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° созданиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Компании ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ GitLab локально, связывая эту систСму с Active Directory ΠΈ с LDAP-сСрвСрами для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ бСзопасной Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π’ΠΎΡ‚ видСоруководство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ с использованиСм возмоТностСй GitLab CI/CD.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ GitLab CI/CD Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π½ΠΎ Π² 2015 Π³ΠΎΠ΄Ρƒ этот Π½Π°Π±ΠΎΡ€ инструмСнтов Π±Ρ‹Π» ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ Π² GitLab 8.0. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ GitLab CI/CD-сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 25000 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. На основС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… сСрвСров ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ систСмы, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ высокой Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ.

GitLab CI/CD ΠΈ основной ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GitLab написаны Π½Π° Ruby ΠΈ Π½Π° Go. Они Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. GitLab CI/CD, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… возмоТностСй CI/CD-инструмСнтов, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности, связанныС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚.

Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ GitLab CI/CD Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‡Π΅Π½ΡŒ просто. ΠŸΡ€ΠΈ использовании GitLab CI/CD процСсс ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° дСлится Π½Π° стадии, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡, выполняСмых Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ порядкС. Π—Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройкС.

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ GitLab CI/CD ΠΈ GitLab

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

▍1. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ

GitLab CI/CD β€” это ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ инструмСнт, нашСдший ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. GitLab CI/CD постСпСнно стал Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ популярным CI/CD-инструмСнтом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования ΠΈ развёртывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π•Π³ΠΎ просто Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, бСсплатный CI/CD-инструмСнт, встроСнный Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ GitLab.

▍2. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° GitLab Pages ΠΈ Jekyll

▍3. ВозмоТности ΠΏΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²

Благодаря возмоТности ΠΏΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ этапов ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ удобство отслСТивания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ. Π­Ρ‚ΠΎ позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π΄Π°Ρ‚Ρƒ.

▍4. АвтоматичСскоС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ CI-Ρ€Π°Π½Π½Π΅Ρ€ΠΎΠ²

Благодаря автоматичСскому ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ€Π°Π½Π½Π΅Ρ€ΠΎΠ², отвСтствСнных Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π½Π° стоимости Π°Ρ€Π΅Π½Π΄Ρ‹ сСрвСрных мощностСй. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, особСнно β€” Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ срСдах, Π³Π΄Π΅ тСстированиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² выполняСтся ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это Π²Π°ΠΆΠ½ΠΎ для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², состоящих ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π².

▍5. БрСдства для отслСТивания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

ΠœΠΎΡ‰Π½Ρ‹Π΅ возмоТности GitLab ΠΏΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ эту ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ опСнсорсныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. GitLab CI/CD позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ тСстированиС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ ΠΊΠΎΠ΄Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ испытаний ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² интСрфСйсС систСмы. Π­Ρ‚ΠΎ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ GitLab CI/CD ΠΎΡ‚ Jenkins.

▍6. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ рСпозиториям

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° GitLab ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ рСпозиториям. НапримСр, Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ совмСстно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π² Π½Π΅ΠΊΠΎΠ΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ… ролям. Π­Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

▍7. Активная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сообщСства

Π’ΠΎΠΊΡ€ΡƒΠ³ GitLab слоТилось Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ сообщСство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ способствуСт Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π΅Ρ‘ инструмСнтов, Π² частности β€” GitLab CI/CD. Глубокая интСграция GitLab CI/CD ΠΈ GitLab, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° вопросы, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GitLab CI/CD.

▍8. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ систСмами контроля вСрсий

GitLab CI/CD β€” это систСма, которая способна Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠΎΠ΄ΠΎΠΌ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΌ Π² рСпозиториях GitLab. НапримСр, ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² GitHub-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π° CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π±Π°Π·Π΅ GitLab с использованиСм GitLab CI/CD.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Jenkins ΠΈ GitLab CI/CD

Π₯арактСристикаJenkinsGitLab CI/CD
ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠΎΠ΄ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠΎΠ΄ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠΎΠ΄
УстановкаВрСбуСтся.НС трСбуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это β€” встроСнная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ GitLab.
Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².Глубокая интСграция Π² систСму управлСния вСрсиями.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚.Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ.
Установка ΠΈ настройкаБлоТностСй Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚Π΅ΠΉ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚
Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ систСмыЭто β€” СдинствСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования систСмы.ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ²ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Jenkins Pipeline.ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ.
ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚.Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ.
ЭкосистСмаБущСствуСт Π±ΠΎΠ»Π΅Π΅ 1000 ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².БистСма развиваСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… GitLab.
APIΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΡƒΡŽ систСму API.ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ API для Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° JavaScriptΠ˜ΠΌΠ΅Π΅Ρ‚ΡΡ.Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ.
Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ интСграция с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ инструмСнтами ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ (Slack, GitHub).ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ срСдств для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ со сторонними систСмами, Π² частности β€” с GitHub ΠΈ Kubernetes.
ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ качСства ΠΊΠΎΠ΄Π°ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π³ΠΈΠ½Π° SonarQube ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ.

Различия ΠΌΠ΅ΠΆΠ΄Ρƒ Jenkins ΠΈ GitLab CI/CD

Описав ΠΈ сравнив Jenkins ΠΈ GitLab CI/CD, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сосрСдоточимся Π½Π° различиях этих DevOps-инструмСнтов. Π—Π½Π°Π½ΠΈΠ΅ ΠΎΠ± этих различиях ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих инструмСнтов Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

Jenkins ΠΈ GitLab CI/CD: ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ слабыС стороны

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

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны Jenkins

▍БлабыС стороны Jenkins

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны GitLab CI/CD

▍БлабыС стороны GitLab CI/CD

Π˜Ρ‚ΠΎΠ³ΠΈ

И Jenkins, ΠΈ GitLab CI/CD ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ слабыС стороны. ΠžΡ‚Π²Π΅Ρ‚ Π½Π° вопрос ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, зависит ΠΎΡ‚ Π½ΡƒΠΆΠ΄ ΠΈ особСнностСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· рассмотрСнных сСгодня CI/CD-инструмСнтов отличаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ особСнностями, хотя созданы эти инструмСнты для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΡ€ΠΈ этом Jenkins β€” это Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ инструмСнт, Π° GitLab CI/CD β€” это Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ.

Выбирая CI/CD-систСму стоит, ΠΏΠΎΠΌΠΈΠΌΠΎ Π΅Ρ‘ возмоТностСй, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Ρ‚Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ с Π½Π΅ΠΉ связаны, ΠΈ Ρ‚ΠΎ, с Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ DevOps-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

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

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

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