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

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

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

Π‘Ρ€Π΅Π΄ΠΈ всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… 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% ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты.

Π‘ΠΈΡ‚Π²Π° Jenkins ΠΈ GitLab CI/CD
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ опроса

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

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

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

Π‘ΠΈΡ‚Π²Π° Jenkins ΠΈ GitLab CI/CD
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

Π‘ΠΈΡ‚Π²Π° Jenkins ΠΈ GitLab CI/CD
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

Jekyll β€” это Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ статичСских сайтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… систСмы GitLab Pages для создания сайтов Π½Π° основС GitLab-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π². БистСма Π±Π΅Ρ€Ρ‘Ρ‚ исходныС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΈΡ… основС Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ статичСский сайт. Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ внСшним Π²ΠΈΠ΄ΠΎΠΌ ΠΈ возмоТностями Ρ‚Π°ΠΊΠΈΡ… сайтов ΠΌΠΎΠΆΠ½ΠΎ, рСдактируя Ρ„Π°ΠΉΠ» _config.yml, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ 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

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

Π₯арактСристика
Jenkins
GitLab 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-инструмСнтов. Π—Π½Π°Π½ΠΈΠ΅ ΠΎΠ± этих различиях ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих инструмСнтов Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

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

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

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

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

  • Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
  • ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ установкой инструмСнта.
  • ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Ρ€Π°Π½Π½Π΅Ρ€ΠΎΠ².
  • ΠŸΡ€ΠΎΡΡ‚Π°Ρ настройка ΡƒΠ·Π»ΠΎΠ².
  • ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
  • ΠžΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ систСма управлСния ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
  • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков программирования.
  • БистСма понятна Π½Π° ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

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

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

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

  • Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ интСграция с Docker.
  • ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π½Π½Π΅Ρ€ΠΎΠ².
  • ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡, входящих Π² состав стадий CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°.
  • ИспользованиС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ацикличСского Π³Ρ€Π°Ρ„Π° ΠΏΡ€ΠΈ настройкС Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Π·Π°Π΄Π°Ρ‡.
  • Высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ Π·Π° счёт возмоТности ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Ρ€Π°Π½Π½Π΅Ρ€ΠΎΠ².
  • Π›Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒ добавлСния Π·Π°Π΄Π°Ρ‡.
  • ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².
  • НадёТная систСма бСзопасности.

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

  • Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ/Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹.
  • НСльзя ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ объСдинСния Π²Π΅Ρ‚ΠΎΠΊ Π΄ΠΎ ΠΈΡ… фактичСского объСдинСния.
  • ΠŸΡ€ΠΈ описании стадий CI/CD-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π² Π½ΠΈΡ… ΠΏΠΎΠΊΠ° нСльзя Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ этапы.

Π˜Ρ‚ΠΎΠ³ΠΈ

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

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

Какими CI/CD-инструмСнтами Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ?

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

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com