2008-11-14 9 views
5

Plusieurs fois dans ma carrière, je travaille dans un groupe de logiciels qui a déterminé que

a) Nous avions besoin d'un système de construction/test
b) Nous devrions écrire notre propre
c) Nous peut avoir un développeur passer une semaine, le faire et ils ne devraient pas avoir à le toucher à nouveauLangue Agnostique système de gestion Créer

Chaque fois, cela a abouti à un système qui ne semble fonctionner que pour la personne qui l'a écrit et nécessite leur attention constante . J'ai passé du temps à plusieurs reprises à la recherche d'un outil que je pourrais saisir et qui répondrait à nos besoins, mais je suis venu les mains vides. Généralement, des outils comme ce serveur constituent un marché très étroit. Je suis à nouveau sur le point d'avoir besoin de quelque chose comme ça. Y at-il quelque chose là-bas, ou est-ce qu'on l'écrit à nouveau?

Voici mes besoins par ordre de priorité (les quelques dernières sont tout simplement agréable d'avoir):

  1. Capacité à gérer une construction multi-projets. Nous avons plusieurs composants qui fournissent tous deux des choses que d'autres composants utilisent et utilisent des choses d'autres composants. Un développeur devrait être en mesure de vérifier 1 composant et faire des changements sans avoir à construire le monde. Les dépendances en dehors du projet doivent être intégrées automatiquement. Il est donc essentiel de pouvoir pousser et tirer les objets construits sur un serveur. Un autre aspect de ceci est la capacité d'être capable de ramener toutes les dépendances à un répertoire local pour le développement sur la route.

  2. Ne vous inquiétez pas de savoir exactement comment les choses seront construites. Cela peut sembler bizarre, mais je ne veux pas que le système de construction s'inquiète de compiler mon code. Il y a déjà de très bons outils pour toutes les langues - Ant, CMake, etc. Je veux juste lui dire ce qu'il faut appeler pour que les choses se construisent, et quelle sortie cela devrait prendre en compte. De cette façon, le projet A peut être en Java, le projet B peut être en C++, vous avez l'idée.

  3. d'avoir un moyen d'exécuter des tests sur la sortie

  4. Afficher les résultats build/tests en cours sur une page web

  5. Email les résultats

  6. Intégration avec RCS (nous utilisons svn)

+0

Je pense que vous allez devoir expliquer pourquoi des choses comme des scripts et/ou Ant, msbuild, etc. ne répondent pas. Vous semblez également indiquer que vous souhaitez stocker les binaires dans le contrôle de version ou au moins sur un serveur de construction. Pourquoi ne pas simplement exposer les résultats de la machine de construction sur un site FTP - sans étiquette/révision. – Tim

Répondre

1

Adam,

Je remarqué la réponse Anthill, et comme Anthiller, je dois dire qu'il avait raison. L'une des choses que fait vraiment Anthill est de vous permettre de définir les dépendances entre les projets. La version open source est orientée Java, tandis que l'outil commercial est agnostique malgré le nom. Il vous permet de définir des dépendances entre projets (ou parties de projets) en fonction de critères tels que le statut (dernière génération réussie, ou dernière version approuvée par QA ou ...) et/ou numéro de build ou branche. C'est quelque chose dont nous sommes très fiers. Au moment de la construction, les artefacts de construction sont transférés entre les serveurs, les caches sont conservés pour l'aide à la performance, et toutes ces bonnes choses. Pour les autres critères:
2) Anthill (comme la plupart des outils d'automatisation de build) exécutera vos scripts de construction existants, généralement sans modification.
3) Les tests (encore une fois vos technologies existantes) peuvent être exécutés au moment de la construction, ou par rapport à une version existante.
4) Les résultats sont présentés sur le web (encore une fois typique d'outils d'automatisation de construction)
5) Email est facile
6) Nous avons plus d'une douzaine d'intégrations SCM, et d'utiliser en interne SVN afin que l'intégration est naturellement l'un de nos meilleurs .

acclamations,

eric

+0

Merci Eric - Je vais vérifier cela – AdamC

+0

J'ai juste essayé de regarder autour de votre site, mais il semble être en panne ... Je vais essayer de vérifier plus tard. – AdamC

+0

Notre ISP a été attaqué pendant quelques heures hier, je pense que tout va bien à ce stade. – EricMinick

1

Apache Continuum et Atlassian de Bamboo rencontrera # 2-6.

Faire le # 1 d'une manière agnostique est un peu plus difficile.

Maven et Ivy tous deux fonctionnent pour les dépendances Java.

1

J'ai utilisé Visual Build, que j'ai trouvé être un moyen très utile de lier tous ces compilateurs disparates, coureurs de test, et d'autres choses ensemble dans un système flexible. Pensez Windows Scheduler sur les principales périodes. C'est essentiellement un grand moteur d'exécution de tâches, avec des tâches toutes faites incluses pour tous les principaux systèmes de contrôle de source commerciale, les compilateurs, et ainsi de suite. Il peut créer des dossiers, envoyer des courriels, et un tas d'autres choses avec une interface utilisateur assez simple.

1

J'ai recherché, mais jamais utilisé, AntHill. Il y a une version open source et une commercial version.Je pense qu'il fera ce que vous voulez, mais il serait utile que vous donniez plus d'exigences, comme par exemple les builds automatisés, ce que vous utilisez pour le contrôle des sources, etc.

Dans ma société actuelle, j'ai écrit le mien. La façon dont le mien fonctionne est exactement ce que vous dites; il n'a aucune idée de la façon de construire le logiciel. Vous lui donnez un tas de lignes de commandes à exécuter (stockées dans une base de données), il capture la valeur de sortie et stdout et stderr, et si la valeur de sortie est différente de zéro, elle marque la construction comme étant brisée. Nous avons environ 8 projets qui peuvent construire et exécuter des tests unitaires. Tout d'abord, effacez le répertoire et rafraîchissez la source de subversion.

0

Voici une courte liste d'outils qui fonctionnent avec les langages .NET et autres: Automated Build Tools

0

Je recommande que si vous allez écrire un système de test que vous envisagez d'utiliser le Test Anything Protocol. TAP a été utilisé pendant plus de 20 ans, et largement utilisé, en particulier pour les modules CPAN.

TAP format général de est:

1..N 
ok 1 Description # Directive 
# Diagnostic 
.... 
ok 47 Description 
ok 48 Description 
more tests.... 

Par exemple, la sortie d'un fichier de test pourrait ressembler à:

1..4 
ok 1 - Input file opened 
not ok 2 - First line of the input valid 
ok 3 - Read the rest of the file 
not ok 4 - Summarized correctly # TODO Not written yet 

Aller à testanything.org pour plus d'informations.

Les exemples sont copiés à partir http://en.wikipedia.org/wiki/Test_Anything_Protocol