Атласийски бамбук срещу Jetbrains Teamcity - има ясен победител

Използвам сървъри за непрекъсната интеграция повече от десетилетие. Използвах Jenkins, Bamboo, Travis, пробвах Circle, Jenkins, GOCD, Semaphore и BuildBot. Приемам тестване и непрекъснато внедряване много сериозно и имам сериозни изисквания към моя сървър за изграждане. Пуснах самостоятелно хостван бамбук повече от 4 години, интегрирах се с Jira и Bitbucket сървър и бях доволен, не доволен.

Когато Atlassian също повиши цените си за Bamboo, реших да оценя ново CI-решение. Не бях доволен от развитието на функции на бамбук. Използвах начин за много задачи с вграден скрипт, защото нямаше достатъчно приставки за моите случаи на използване. Не бих могъл да си позволя друг агент за изграждане, не бих могъл да си позволя бамбук на първо място, защото съм само екип от разработчици на един човек.

Намушках на всички тях. Започнах с отворен код, но Дженкинс и GOCD сме сериозен кошмар за мен. Дженкинс заради интерфейса (дори със син океан), GOCD заради липсващи интеграции и гъвкавост. Бях толкова разочарован ...

Започнах да оценявам известните SaaS като кръг и семафор и какво ли още не. Но всички се почувстваха така, като че ли ми липсват цяло парче работен процес с бамбук.

Безплатно за малка употреба

В крайна сметка разгледах лицензирането за Jetbrains Teamcity и се изненадах, че има безплатен слой за малкия бизнес. Инсталацията беше лесна за правене с докер и всичко започна да се чувства много естествено. Потребителският интерфейс е малко oldschool, но е ПАКЕТЕН с неща. Бях малко скептичен, но след това се продаде на огромния брой опции за всичко. Една седмица в потребителския интерфейс е само полъх. Можете да персонализирате всичко и аз можех не само да преместя всичките си проекти от бамбук към Teamcity, но и да подобря цялата си настройка.

Винаги съм смятал, че Teamcity е недоумението в CI и твърде oldschool, но не беше.

Ето списъка с функции, които разбиват бамбука за моя случай на употреба:

Автоматично завършване на променливи и конфигурационни параметри

Във всеки CI-сървър има толкова много променливи, които искат да бъдат използвани. Но те винаги са толкова трудни за запомняне. В документацията на Bamboo са изброени всички променливи, но идеята на TC е много по-добра:

тя автоматично ще допълва променливите веднага щом въведете%. Това работи за прости конфигурационни опции (като брояча за изграждане тук), но също така и за вградени скриптове. Толкова просто, толкова полезно!

Директна навигация

Една от причините, които трябва да свикнете с потребителския интерфейс, е, че основните участници имат малка стрелка, прикрепена към тях.

Малките стрелки навсякъде в потребителския интерфейс от teamcity - маркирани с червен кръг

Но те са ТО РЪЧНИ. Когато щракнете върху тях, получавате контекстни навигационни връзки за елемента. Например, когато щракнете върху резултата за изграждане, можете да проучите дневника, да видите резултатите от тестовете, да редактирате конфигурацията и т.н. Винаги има маршрут по подразбиране, който обикновено е там, където искате да отидете на първо място, но често можете да спестите два или повече кликвания. След като научите, това е толкова по-безопасно време.

Контекстните менюта осигуряват време, докато навигирате

Създаване и внедряване на шаблони

Teamcity има толкова много добре обмислени подобрения, когато става дума за повторна употреба на общи части във вашите конфигурации. Това е нещото, от което са направени мечтите. Можете да създадете шаблон от компилация или да започнете от нулата и да създадете нови конфигурации за изграждане, базирани на този шаблон. След като шаблонът бъде променен, конфигурацията на изграждане наследява промените. Това е толкова добре направено, защото те маркираха всичко кристално ясно: тази настройка идва от шаблона? Замених ли го в тази конфигурация?

Проекти и проекти-йерархия

В Teamcity първият гражданин е конфигурация за изграждане. Има и конфигурации за разполагане. Те живеят в рамките на проект. Но самият проект може да бъде част от по-голяма йерархия на проекти, като: „Проекти за клиент A“ или „Проекти с бекенд на Symfony“. Това така добре организира вашите Проекти-табло. Възможно е да се наследят настройки и променливи и от родителски проекти - функция убиец.

Meta Runners (ще ви взриви ума)

Имате ли много конфигурации за изграждане? Те изграждат различно, но вие винаги изпълнявате тестовете си по същия начин? (например: тестове за изпълнение на прежда). Teamcity има функцията THE за вас: нарича се мета бегачи. Можете да ги извлечете от една от вашите конфигурации за сглобяване и да ги използвате като колекция от стъпки за изграждане, които ще бъдат пакетирани за други конфигурации на сглобяване. Мета бегачът се предлага като xml, който можете да коригирате. Прилагайте meta runner към други конфигурации на сглобяване и точно същите стъпки ще бъдат извиквани всеки път, когато се изпълнява изграждането. Възможно е да се предоставят параметри на мета бегача.

XML Дефиниция на мета бягащ

Това ме събори от краката. Ако само знаех това преди няколко години: щеше да ми спести много стрес! Използвам мета бегачи, за да групирам стъпките за изграждане, за да изпълня целия ми тестов пакет. Например стартирайте тестове за phpunit run прежди, анализирайте тестовите доклади и почистване.

Качване на ssh клавиши

Толкова е трудно да се използват ssh идентификационни данни в бамбук. Това е толкова лесно да се направи това в Teamcity. Можете да качите ключове чрез потребителски интерфейс или просто да ги копирате в папка, която монтирате към изображението на докер. След това използвате клавишите навсякъде за ssh задачи, scp или rsync. Толкова лесно, толкова добре мислено - желая само те да осигурят свод за тях.

Управлявайте ssh агент директно за вашите компилации

Имали ли сте някога проблеми с достъпа до вашите лични репости при инсталиране с композитор? Имали ли сте някога нужда да издавате ssh команди във вашите компилации? През цялото време? Точно така!
Функция за изграждане на Teamcity ви позволява да добавяте ssh идентификационни данни към вашата компилация. След това създава ssh-агент, който ви позволява да използвате ssh вградени скриптове. Това е толкова лесно за използване и почистване. Защо никой не се сети за това на първо място?

„Избор на файл“ -диалози

Не мога да изброя всички неща в потребителския интерфейс, които те карат да се чувстваш така: „О! Това е удобно “. Ето само един пример. Когато препращате конфигурационни файлове в приставки в бамбук, винаги трябва да помните относителния път и каква е била текущата работна директория отново? В Teamcity щракнете върху малката икона до настройките на конфигурацията и бума: тя ви изброява последното проверено дърво на източника от вашето хранилище.

Гледайте вашите тестове, на живо и директно!

Огромна болка от бамбук е отчитането на тестове и изграждането на разследвания на журнали. Когато всичко се обърка, трябва да превъртите до неформатиран, незабелязан дневник за сглобяване, за да намерите кой тестов случай е неуспешен. Липсващите интеграции за инструменти като phpunit или други обичайни пробни бегачи ви принуждават да правите това от време на време в бамбук.

Прогресът на тестовете се показва на живо, докато се изгражда

В Teamcity тестовете са изброени в потребителския интерфейс в резултатите от изграждането ви. Той извлича текущия тест за работа, напредъка и резултатите от теста директно от изхода на командния ред. Ако използвате phpunit, всичко, което трябва да направите, е да добавите --log-teamcity към вашето phpunit обаждане и Teamcity ще вземе резултатите от тестовете на живо от регистрационните файлове. Това е най-добрият индикатор за прогрес, който някога съм имал.

Никога не съм мислил ...

... че ще бъда в ЛЮБОВ с непрекъснат сървър за интеграция отново. Jetbrains, направете нещо за вашия образ. Заслужаваш сериозно да си крал на CI сървъри.

Отказ от отговорност: Jetbrains не ми плати или ме насърчи да напиша това парче.

Исках това да е похвала за Teamcity, а не гнус за бамбука. Ако се интересувате от парче за „какво не е наред с бамбука“, уведомете ме! Ще се радвам да усъвършенствам.

Моля, следвайте ме в Twitter!