Atlassian Bamboo vs Jetbrains Teamcity - le gagnant est clair

J'utilise des serveurs d'intégration continue depuis plus de dix ans. J'ai utilisé Jenkins, Bamboo, Travis, essayé Circle, Jenkins, GOCD, Semaphore et BuildBot. Je prends les tests et le déploiement en continu très au sérieux et le serveur de build est très exigeant. J'ai couru un bambou auto-hébergé pendant plus de 4 ans, intégré à Jira et au serveur Bitbucket et j'étais satisfait, pas content.

Lorsque Atlassian a également augmenté ses prix pour le bambou, j'ai décidé d'évaluer une nouvelle solution CI. Je n’étais pas satisfait du développement des fonctionnalités sur le bambou. J’ai utilisé beaucoup de tâches de script intégrées, car il n’y avait pas assez de plugins pour mes cas d’utilisation. Je ne pouvais pas me permettre un autre agent de compilation, je ne pouvais pas me permettre le bambou, car je ne suis qu’une équipe de développeurs.

Je les ai tous poignardés. J’ai commencé avec l’open source, mais Jenkins et GOCD sont un cauchemar sérieux pour moi. Jenkins à cause de l'interface (même avec blue ocean), GOCD à cause des intégrations manquantes et de la rigidité. J'ai été tellement déçu…

J'ai commencé à évaluer le SaaS connu comme Circle and Semaphore et ainsi de suite. Mais ils ont tous eu l’impression que tout le flux de travail que j’avais avec le bambou me manquait.

Gratuit pour un petit usage

Finalement, j’ai examiné les licences de Jetbrains Teamcity et j’ai été surpris de constater qu’il existe un niveau gratuit pour les petites entreprises. L'installation était facile à faire avec docker et tout a commencé à se sentir très naturel. L’interface utilisateur est un peu oldschool, mais elle est bourrée de choses. J'étais un peu sceptique, mais ensuite vendu sur le grand nombre d'options pour tout. Une semaine dans l'interface utilisateur est un jeu d'enfant. Vous pouvez tout personnaliser et je pourrais non seulement déplacer tous mes projets du bambou vers Teamcity, mais aussi améliorer toute ma configuration.

J’ai toujours pensé que Teamcity était l’opprimé des CI et des écoles trop anciennes, mais ce n’était pas le cas.

Voici la liste des fonctionnalités qui écrasent le bambou pour mon cas d'utilisation:

Complétion automatique pour les variables et paramètres de configuration

Il y a tellement de variables dans chaque serveur CI, qui veulent être utilisées. Mais ils sont toujours si difficiles à retenir. La documentation de Bamboo énumère toutes les variables, mais l’idée de TC est bien meilleure:

il complétera automatiquement les variables dès que vous aurez entré%. Cela fonctionne pour les options de configuration simples (comme le compteur de construction ici), mais aussi dans les scripts intégrés. Si simple, si utile!

Navigation directe

Une des raisons pour lesquelles vous devez vous habituer à l'interface utilisateur est qu'une petite flèche est attachée aux principaux acteurs.

Les petites flèches partout dans l'interface utilisateur de teamcity - marquées d'un cercle rouge

Mais ils sont si maniables. Lorsque vous cliquez dessus, vous obtenez des liens de navigation contextuelle pour l'élément. Par exemple, lorsque vous cliquez sur le résultat de la construction, vous pouvez consulter le journal, voir les résultats du test, modifier la configuration, etc. Il y a toujours un itinéraire par défaut à emprunter, qui correspond généralement à l'endroit où vous souhaitez aller, mais souvent, vous pouvez épargner deux ou plusieurs clics. Une fois appris, le temps est tellement plus sûr.

Les menus contextuels vous permettent de gagner du temps en naviguant

Construire et déployer des modèles

Teamcity propose de nombreuses améliorations bien pensées en matière de réutilisation de parties communes de vos configurations. C'est ce dont sont faits les rêves. Vous pouvez créer un modèle à partir d'une construction ou commencer par zéro et créer de nouvelles configurations de construction basées sur ce modèle. Une fois le modèle modifié, la configuration de construction hérite des modifications. C'est tellement bien fait, car ils ont tout indiqué: ce paramètre provient-il du modèle? Ai-je le remplacer dans cette config?

Projets et projets-Hiérarchie

Dans Teamcity, le premier citoyen est une configuration de construction. Il existe également des configurations de déploiement. Ils vivent à l'intérieur d'un projet. Mais le projet lui-même pourrait faire partie d'une plus grande hiérarchie de projets, telle que: «Projets pour le client A» ou «Projets avec backend Symfony». Cela organise si bien votre tableau de bord des projets. Il est également possible d’hériter des paramètres et des variables de projets parents - une fonctionnalité exceptionnelle.

Meta Runners (va vous étonner)

Avez-vous beaucoup de configurations de construction? Ils construisent différemment, mais vous exécutez toujours vos tests de la même manière? (par exemple: tests d'exécution du fil). Teamcity a LA fonctionnalité pour vous: il s’appelle méta-coureurs. Vous pouvez les extraire de l'une de vos configurations de construction et les utiliser comme un ensemble d'étapes de construction qui seront regroupées pour d'autres configurations de construction. Le méta coureur est fourni au format XML, que vous pouvez ajuster. Appliquez le méta-coureur à d'autres configurations de construction et les mêmes étapes exactes seront appelées à chaque exécution de la construction. Il est possible de fournir des paramètres au coureur méta.

Définition XML d'un coureur méta

Cela m'a fait tomber de mes pieds. Si seulement je le savais il y a quelques années: cela m'aurait évité beaucoup de stress! J'utilise des méta-coureurs pour regrouper les étapes de construction afin d'exécuter toute la suite de tests. Par exemple. lancez phpunit lancez des tests de fils, analysez les rapports de tests et nettoyages.

Télécharger des clés SSH

C’est tellement difficile d’utiliser les identifiants SSH en bambou. C’est tellement facile de faire cela dans Teamcity. Vous pouvez télécharger des clés par interface utilisateur ou simplement les copier dans un dossier que vous montez sur l'image du menu fixe. Ensuite, vous utilisez les clés partout pour les tâches ssh, scp ou rsync. Si facile, si bien pensé - je souhaite seulement qu'ils leur fournissent un coffre-fort.

Gérer un agent ssh directement pour vos builds

Avez-vous déjà eu des problèmes pour accéder à votre dépôt privé lors de l'installation avec composer? Avez-vous déjà eu le besoin d'émettre des commandes ssh dans vos builds? Tout le temps? Droite!
Une fonctionnalité de construction de Teamcity vous permet d’ajouter des informations d’identité ssh à votre construction. Il crée ensuite un agent ssh, qui vous permet d'utiliser ssh dans les scripts en ligne. C'est si facile à utiliser et à nettoyer. Pourquoi personne n'y a pensé en premier lieu?

«Choisissez un fichier» -dialogs

Je ne peux pas énumérer toutes les choses dans l'interface utilisateur qui vous font sentir comme: «Oh! C'est pratique ”. Voici juste un exemple. Lorsque vous référencez des fichiers de configuration dans des plugins en bambou, vous devez toujours vous rappeler le chemin relatif et quel était à nouveau le répertoire de travail actuel. Dans Teamcity, vous cliquez sur la petite icône en regard des paramètres de configuration et boom: il vous répertorie la dernière arborescence des sources extraites de votre référentiel.

Regardez vos tests, en direct et directement!

Une grande douleur du bambou est le compte-rendu des tests et l’enquête sur les journaux de bord Lorsque tout va mal, vous devez faire défiler jusqu'à un journal de construction non mis en forme, non mis en surbrillance pour trouver le scénario de test qui a échoué. Des intégrations manquantes pour des outils tels que phpunit ou d'autres programmes de test courants vous forcent à le faire de temps en temps en bambou.

La progression des tests est affichée en direct pendant la construction

Dans Teamcity, les tests sont répertoriés dans l'interface utilisateur dans les résultats de votre construction. Il extrait le test en cours, la progression et les résultats du test directement à partir de la sortie de la ligne de commande. Si vous utilisez phpunit, tout ce que vous avez à faire est d’ajouter --log-teamcity à votre appel phpunit et Teamcity récupérera les résultats des tests en direct à partir des journaux. C’est le meilleur indicateur de progrès que j’ai jamais eu.

Je n'ai jamais pensé…

… Que je serais de nouveau amoureux avec un serveur d'intégration continue. Jetbrains, faites quelque chose pour votre image. Vous méritez d'être le roi des serveurs CI, sérieusement.

Disclaimer: Jetbrains ne m'a pas payé ou encouragé à écrire cette pièce.

Je voulais que ce soit un éloge à propos de Teamcity, pas un discours sur le bambou. Si vous êtes intéressé par un article sur «ce qui ne va pas en bambou», faites-le moi savoir! Je serai heureux d’élaborer.

Suivez-moi s'il vous plaît sur Twitter!