Поглед към разликите, които вие и вашият екип ще искате да знаете
Обзалагам се, че всеки разработчик на софтуер знае какво е Jenkins или поне е чувал за него. Това е инструмент с отворен код, написан главно на Java и само преди няколко години беше най-популярният инструмент за CI/CD.
От друга страна, CircleCI е сравнително нов инструмент SaaS, който започна да набира популярност през 2017 г. През 2022 г. все повече и повече разработчици, които познавам, преминават към CircleCI и аз бях един от тях, въпреки че не беше само мой избор.
CircleCI е в тежка разработка
Когато започнах да използвам CircleCI, нямаше възможност да стартирам Pipeline от потребителския интерфейс и го намерих за голям минус в сравнение с Jenkins, но след няколко месеца видях, че са добавили тази функция:
Все пак няма опция за избор на параметри от предварително дефиниран падащ списък. Този пример обаче показва, че CircleCI все още е в процес на активно развитие и се опитва да изгради много неща, които Дженкинс вече има.
Планирам да пиша за други липсващи функции в CircleCI, с които свикнах в Jenkins и как ги преодолявам, така че може да искате да останете на линия.
CircleCI SLA
Въпреки че CircleCI може да се хоства самостоятелно, най-значимият му плюс е, че е инструмент за софтуер като услуга (SaaS), който поема цялата тежка работа за настройка, управление и мащабиране. С Jenkins вие сте отговорни за времето на работа на вашата услуга, но с CircleCI можете да седнете и да разчитате на Споразумението за слой на услугата (SLA).
Дори след една година опит с CircleCI не изпитах пълен престой. Често виждам този малък маркер в долния ляв ъгъл на потребителския им интерфейс.
Понякога това означава, че компилациите ми са по-бавни от обикновено, а понякога не виждам никаква разлика. Трябва да призная, че ми харесва, че CircleCI винаги ясно показва статуса си и не се опитва да се преструва, че нищо не се случва, както някои други облачни доставчици.
Потребителски интерфейс
Jenkins има много по-функционален интерфейс от CircleCI. Понякога дори е прекалено. Можете да настроите целия тръбопровод с декларативен скрипт синтаксис на Groovy или без един ред код, като просто щракнете върху множество съветници за потребителски интерфейс. Намирам, че има удобни функции, особено за начинаещи.
CircleCI има по-прост, добре изглеждащ интерфейс (лични предпочитания) и не можете да правите толкова много тук. Настройката на декларативния тръбопровод се извършва в .circleci/config.yml
файлове с помощта на Yaml синтаксис. Първоначално бях раздразнен от липсата на функционалност на потребителския интерфейс, но осъзнах, че е направено нарочно, за да се наложи принципът „Инфраструктура като код“.
Сравнение рамо до рамо
Както Jenkins, така и CircleCI могат да се използват като CI/CD инструменти, но:
Дженинс
- е сървър за автоматизация, който може да се използва за непрекъсната интеграция и непрекъсната доставка
- е самостоятелно хоствано решение, което означава повече караница, но и повече контрол за проекти, свързани със сигурността
- има отворен код и лиценз на MIT, което означава, че е безплатен, но все пак трябва да платите за хостинг доставчик
- има много добавки и може да бъде значително персонализиран
- поддържа както тръбопроводни скриптове, така и настройка на работен поток на потребителския интерфейс
- може лесно да се използва локално безплатно както на Windows, така и на macOS
CircleCI
- е платформа за непрекъсната интеграция и непрекъсната доставка
- може да се използва като самостоятелно хоствано решение, но по-популярно като SasS инструмент
- има безплатно ниво и няколко абонаментни плана, така че да мащабирате с времето
- не поддържа плъгини, следователно има минимално персонализиране. Вместо това има „кълба“, които не са повече от разширения на тръбопроводни скриптове
- поддържа само тръбопроводни скриптове и ограничения върху принципа „инфраструктура като код“.
- може лесно да се използва както на Windows, така и на macOS в уеб браузър и с безплатно ниво
- е по-ясен от Дженкинс, следователно по-лесен за започване на работа
Резюме
Може би това не е задоволителен отговор, но ако ме попитате дали Jenkins е по-добър от CircleCI, бих казал, че зависи, тъй като те наистина са различни.
Въпреки че виждам някои недостатъци във функционалността на CircleCI в сравнение с Jenkins, не беше трудно да направя превключване. Настоящият ми екип няма специализирани DevOps, които да се грижат за цялата инфраструктура, и сме добре да запазим колкото е възможно повече в облака, за да мащабираме и да се движим бързо.
Като се има предвид горното, CircleCI е идеалното решение за нас. Преди това работих върху по-корпоративни, дълготрайни проекти със строги изисквания за сигурност и персонализиране, където Jenkins беше почти единственият ни вариант.
Нямах възможност да работя много с други популярни инструменти на пазара, така че не мога да кажа дали CircleCI или Jenkins са по-добри или по-лоши от TravisCI, TeamCity или GitLab. Ще съм благодарен, ако някой с практически опит добави нещо за това в коментарите.