Атласскі бамбук супраць Jetbrains Teamcity - відавочны пераможца

Я выкарыстоўваю серверы бесперапыннай інтэграцыі больш за дзесяць гадоў. Я выкарыстаў Jenkins, Bamboo, Travis, паспрабаваў Circle, Jenkins, GOCD, Semaphore і BuildBot. Я вельмі сур'ёзна ўспрымаю тэставанне і бесперапыннае разгортванне і прад'яўляю вялікія патрабаванні да майго сервера зборкі. Я кіраваў бамбукам самастойна больш за 4 гады, інтэграваўся з Jira і Bitbucket серверам і застаўся задаволены, не задаволены.

Калі Atlassian падняў цэны на Bamboo, я вырашыў ацаніць новае CI-рашэнне. Я не быў задаволены распрацоўкай функцый на бамбуку. Я выкарыстаў шлях да шматлікіх задач убудаванага сцэнарыя, таму што ў маіх выпадках было недастаткова плагінаў. Я не мог сабе дазволіць іншы будаўнічы агент, я не мог сабе дазволіць бамбук, бо я толькі адна распрацоўшчык.

Я нанёс удары на ўсіх. Я пачаў з адкрытым зыходным кодам, але Джэнкінс і GOCD для мяне сур'ёзны кашмар. Джэнкінс з-за інтэрфейсу (нават з блакітным акіянам), GOCD з-за адсутнічаюць інтэграцый і нягнуткасці. Я быў так расчараваны ...

Я пачаў ацэньваць такія вядомыя SaaS, як Circle і Semaphore і што яшчэ. Але ўсе яны адчувалі, быццам мне не хапае цэлага кавалка працэсу, які ў мяне быў з бамбукам.

Бясплатна для невялікага выкарыстання

У рэшце рэшт я паглядзеў на ліцэнзаванне для Jetbrains Teamcity і здзівіўся, што ёсць бясплатны ўзровень для малога бізнесу. Усталяванне было лёгка зрабіць з Docker, і ўсё пачало адчувацца вельмі натуральна. Карыстацкі інтэрфейс трохі школьны, але ён упакаваны з рэчамі. Я быў крыху скептычны, але потым прадаў велізарную колькасць варыянтаў для ўсяго. Адзін тыдзень у інтэрфейсе проста вецер. Вы можаце наладзіць усё, і я мог бы не толькі перанесці ўсе свае праекты з бамбука ў Teamcity, але і палепшыць усе мае налады.

Я заўсёды думаў, што Teamcity - недалёкая школа ў КІ і занадта старая школа, але гэта не было.

Вось спіс функцый, якія размаўляюць бамбук для майго выкарыстання:

Аўтаматычнае завяршэнне параметраў зменных і канфігурацый

У кожным CI-серверы ёсць столькі зменных, якія хочуць выкарыстоўваць. Але іх заўсёды так складана запомніць. У дакументацыі бамбука пералічаны ўсе зменныя, але ідэя ТС значна лепш:

ён будзе аўтаматычна запоўніць зменныя, як толькі вы ўвядзеце%. Гэта працуе для простых варыянтаў налады (напрыклад, лічыльнік зборкі тут), а таксама ўбудаваных сцэнарыяў. Так проста, так карысна!

Прамая навігацыя

Адна з прычын, з якой вы павінны прывыкнуць да карыстацкага інтэрфейсу, заключаецца ў тым, што галоўныя дзеючыя асобы прыстаўляюць да іх невялікую стрэлку.

Маленькія стрэлкі ўсюды ў карыстацкім інтэрфейсе ад таварыства - пазначаныя чырвоным колам

Але яны так ручныя. Пры націску на іх вы атрымліваеце кантэкстныя навігацыйныя спасылкі на гэты элемент. Напрыклад, калі вы націскаеце на вынік зборкі, вы можаце даследаваць часопіс, бачыць вынікі тэставання, рэдагаваць канфігурацыю і г. д. Заўсёды ёсць маршрут па змаўчанні, які, як правіла, куды трэба ісці ў першую чаргу, але Часта вы можаце пазбавіць двух і больш клікаў. Даведаўшыся, гэта такі велізарны бяспечны час.

Кантэкстныя меню бяспечныя тоны часу падчас навігацыі

Стварайце і разгортвайце шаблоны

Teamcity мае так шмат добра прадуманых удасканаленняў, калі справа даходзіць да паўторнага выкарыстання агульных частак у вашай канфігурацыі. Гэта рэчы, з якіх вырабляюцца мары. Вы можаце стварыць шаблон з зборкі або пачаць з нуля і стварыць новыя канфігурацыі зборкі на аснове гэтага шаблона. Пасля таго, як шаблон зменены, канфігурацыя зборкі ўспадкоўвае змены. Гэта так добра зроблена, бо яны адзначылі ўсё крышталёва чыстым: гэта налада паходзіць ад шаблону? Няўжо я адмяніў гэта ў гэтай канфігурацыі?

Праекты і іерархія праектаў

У Teamcity першым грамадзянінам з'яўляецца канфігурацыя зборкі. Ёсць і канфігурацыі разгортвання. Яны жывуць у рамках праекта. Але сам праект можа быць часткай большай іерархіі праектаў, напрыклад: "Праекты для заказчыка A" альбо "Праекты з рэзервовай сістэмай Symfony". Гэта так добра арганізоўвае вашы Projects-Dashboard. Можна таксама ўспадкаваць налады і зменныя з бацькоўскіх праектаў - асаблівасць забойства.

Meta Runners (падарву розум)

Ці ёсць у вас шмат канфігурацый зборкі? Яны будуюць па-рознаму, але вы заўсёды выконваеце свае тэсты аднолькава? (напрыклад: тэсты запуску пражы). Teamcity мае для вас асаблівасць: яна называецца мета-бягунамі. Вы можаце здабыць іх з адной з вашых канфігурацый зборкі і выкарыстоўваць яе ў якасці набору этапаў зборкі, якія будуць у камплекце для іншых канфігурацый зборкі. Мета-бягун прадастаўляецца ў выглядзе XML, які вы можаце наладзіць. Прымяніце мета-бягун да іншых канфігурацый зборкі і ўсе тыя ж этапы будуць выклікацца кожны раз пры запуску зборкі. Можна задаць параметры мета-бегуну.

XML Вызначэнне мета-бягуна

Гэта мяне збіла з ног. Калі б я гэта ведаў некалькі гадоў таму: выратаваў бы мяне ад вялікага напружання! Я выкарыстоўваю мета бягуны, каб сабраць этапы зборкі, каб запусціць увесь тэставы набор. Напр. запусціце тэсты на праробку phpunit, прааналізуйце пратаколы выпрабаванняў і ачыстку.

Загрузіце ключы 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!