Atlassian Bamboo vs Jetbrains Teamcity: hi ha un clar guanyador

Faig més de deu anys que utilitzo servidors d’integració contínua. Vaig utilitzar Jenkins, Bamboo, Travis, vaig provar Circle, Jenkins, GOCD, Semaphore i BuildBot. Em prenc les proves i el desplegament continu molt seriosament i tinc demandes fortes al meu servidor de creació. Vaig administrar un bambú allotjat durant més de 4 anys, integrat amb el servidor Jira i Bitbucket i estava satisfet, no content.

Quan Atlassian va augmentar els seus preus per al bambú, vaig decidir avaluar una nova solució CI. No estava satisfet amb el desenvolupament de funcions en bambú. He utilitzat la manera de realitzar moltes tasques de script en línia, perquè no hi havia prou plugins per als casos d'ús. No podia permetre'm cap altre agent de construcció, no em podia permetre el bambú en primer lloc, perquè només sóc un equip de desenvolupadors.

Els vaig apunyalar a tots. Vaig començar amb codi obert, però Jenkins i GOCD som una gran malson per a mi. Jenkins a causa de la interfície (fins i tot amb blau oceà), GOCD a causa de les integracions que faltaven i la inflexibilitat. Vaig quedar tan decebut ...

Vaig començar a valorar els SaaS coneguts com Circle i Semàfor i no. Però tots sentien que em faltava un flux de treball complet amb el bambú.

Gratuït per a ús petit

Al final vaig mirar les llicències de Jetbrains Teamcity i em va sorprendre que hi hagi un nivell gratuït per a petites empreses. La instal·lació era fàcil de fer amb docker i tot va començar a sentir-se molt natural. La interfície d'usuari és una mica oldschool, però està plena de coses. Vaig ser una mica escèptic però després vaig vendre la gran quantitat d’opcions per a tot. Una setmana a la interfície d'usuari només és una brisa. Podeu personalitzar-ho tot, i no només vaig poder traslladar tots els meus projectes de bambú a Teamcity, sinó millorar tota la meva configuració.

Sempre he pensat que Teamcity és un estudiant que no és membre de la CI i que és massa antic, però no ho era.

A continuació, es mostra la llista de funcions que trituren el bambú per al meu cas:

Finalització automàtica de variables i paràmetres de configuració

Hi ha tantes variables en cada servidor de CI que es volen utilitzar. Però sempre són tan difícils de recordar. La documentació de bambú enumerava totes les variables, però la idea de TC és molt millor:

completarà les variables tan aviat com escriviu%. Això funciona per a opcions de configuració senzilles (com ara el comptador de creació aquí), però també en scripts en línia. Tan senzill, tan útil!

Navegació directa

Un dels motius pels quals us heu d’acostumar a la interfície d’interès és que els actors principals tenen una petita fletxa a ells.

Les petites fletxes de tot tipus de interfície d'interès de la interfície d'usuari, marcades amb un cercle vermell

Però són tan fantàstics. Quan feu clic a ells, obteniu enllaços de navegació de context per a l'element. Per exemple, quan feu clic al resultat de creació, podeu investigar el registre, veure els resultats de la prova, editar la configuració, etc. Sempre hi ha una ruta per defecte, que normalment és on voleu anar primer, però sovint podeu estalviar dos o més clics. Un cop après, aquest és un temps tan segur.

Els menús contextuals protegeixen un munt de temps durant la navegació

Construir i desplegar plantilles

Teamcity té tantes millores molt ben pensades quan es tracta de reutilitzar parts comunes de les configuracions. Aquest és el que els somnis estan fets. Podeu crear una plantilla a partir d'una creació, o començar per zero i crear noves configuracions de creació basades en aquesta plantilla. Un cop canviat la plantilla, la configuració de creació hereta els canvis. Això està tan ben fet, perquè van marcar-ho tot de forma clara: aquesta configuració prové de la plantilla? Ho he substituït en aquesta configuració?

Projectes i Projectes-Jerarquia

A Teamcity, el primer ciutadà és una configuració de creació. També hi ha configuracions de desplegament. Viuen dins d’un projecte. Però el projecte en si podria formar part d'una jerarquia de projectes més gran, com ara: "Projectes per al client A" o "Projectes amb Symfony backend". Això organitza tan bé el vostre Tauler de Projectes. És possible heretar també configuracions i variables dels projectes pares: una funció d'assassí.

Meta Runners (us bufa la ment)

Teniu un munt de configuracions de creació? Es construeixen de manera diferent, però sempre executeu les proves de la mateixa manera? (per exemple: proves d’execució de filats). Teamcity té la característica per a vosaltres: s'anomena meta runners. Podeu extreure'ls d'una de les vostres configuracions de creació i utilitzar-la com a col·lecció de passos de creació que s'agruparan per a altres configuracions de creació. El meta runner es proporciona en format xml, que podeu ajustar. Apliqueu el meta runner a altres configuracions de creació i es diran els mateixos passos cada vegada que s'execute la creació. És possible proporcionar paràmetres al meta-runner.

XML Definició d’un meta runner

Això em va fer fora dels peus. Si només ho sabés això fa uns anys: m’hauria estalviat molt d’estrès! Utilitzo meta runner per agrupar els passos de creació per executar tot el meu conjunt de proves. Per exemple. executeu proves de filats de correcció phpunit, analitzeu els informes de prova i neteja.

Carregueu les tecles ssh

És tan difícil utilitzar credencials ssh en bambú. És tan fàcil fer-ho a Teamcity. Podeu carregar les tecles mitjançant la interfície d'usuari o simplement copiar-les en una carpeta, que pugueu a la imatge del docker. A continuació, utilitzeu les tecles a tot arreu per a tasques ssh, scp o rsync. Tan fàcil, tan ben pensat, només voldria que els proporcionessin una volta.

Gestioneu un agent ssh directament per a les vostres compilacions

Alguna vegada ha tingut problemes per accedir al vostre repositori privat en instal·lar-lo amb el compositor? Alguna vegada ha tingut la necessitat de publicar ordres ssh en les seves versions? Tot el temps? Dret!
Una funció de creació de Teamcity us permet afegir credencials ssh a la vostra creació. Aleshores crea un agent ssh, que us permet utilitzar ssh en scripts en línia. Això és tan fàcil d’utilitzar i netejar. Per què ningú no ho va pensar en primer lloc?

Dialogs "Selecciona un fitxer"

No puc enumerar totes les coses de la interfície d'interès que us faran sentir: "Oh! Això és útil ”. Aquí en som només un exemple. Quan feu referència als fitxers de configuració dels complements de bambú, sempre heu de recordar la ruta relativa i quin era el directori de treball actual de nou? A Teamcity, feu clic a la icona minúscula que hi ha al costat de la configuració de configuració i al boom: us mostra el darrer arbre de fonts verificat del vostre dipòsit.

Mira les teves proves, en directe i directe!

Un enorme dolor al bambú és el report de proves i la investigació de registres. Quan tot funciona malament, heu de desplaçar-vos cap a un registre de creació no formatat, no ressaltat, per trobar el cas de prova que fallava. Falta integracions d’eines com phpunit o altres corredors de proves habituals t’obliguen a fer-ho de tant en tant en bambú.

El progrés de les proves es mostra en directe mentre es construeix

A Teamcity, les proves es mostren a la interfície d'usuari en els resultats de creació. Extreu la prova de funcionament actual, el progrés i els resultats de la prova directament de la sortida de la línia de comandaments. Si utilitzeu phpunit, tot el que heu de fer és afegir --log-teamcity a la vostra trucada de phpunit i Teamcity recollirà els resultats de les proves en directe dels registres. Aquest és el millor indicador de progrés que he tingut.

Mai vaig pensar ...

... que estaria enamorat amb un servidor d'integració continuada. Jetbrains, feu alguna cosa per la vostra imatge. Mereixes ser seriosament el rei dels CI-Servers.

Renúncia: Jetbrains no em va pagar ni em va animar a escriure aquesta obra.

Volia que això fos un elogi sobre Teamcity, no un regal sobre bambú. Si us interessa una obra sobre "què passa amb el bambú", aviseu-me! Estaré encantat d’elaborar.

Si us plau, seguiu-me a Twitter!