Question

Si vous faites un projet solo - voulez-vous utiliser des outils CI pour la construction d'un dépôt? Je l'ai utilisé Hudson et Cruise Control dans un environnement d'équipe, où il est essentiel de construire dès que quelqu'un vérifie quoi que ce soit dans.

Je pense que la valeur de contrôle de version est toujours évidente, mais dois-je construire après chaque engagement, car je voudrais juste avoir construit sur ma machine locale, et personne d'autre commet?

Était-ce utile?

La solution

Eh bien, je suis l'intention d'utiliser un outil d'intégration continue sur un projet et je suis le développeur unique. Le besoin est parce que

  1. L'un des objectifs est de faire multiplateformes, et ayant un outil d'intégration vous aide implicitelly (de base) vérifier votre application sur plusieurs plate-forme une fois que vous avez poussé vos modifications dans le référentiel d'intégration (ou celle du centre, ou tout ce qui est celui qui sera utilisé comme faisant autorité).
  2. Le projet est construit pour le long terme, donc je vais devoir travailler avec une équipe plus tard. Je ne prévois pas de recruter quelqu'un jusqu'en 2012 de sorte que la chose continue d'intégration peut attendre le moment, jusqu'à ce que 1. devient la priorité.

Autre que multi-plateforme et la préparation au travail d'équipe, je ne vois pas la nécessité. La principale chose est d'avoir une sorte de logiciel de contrôle de code source et ont plusieurs référentiel pour conserver les sauvegardes. Cela vous aidera à construire des outils de configuration autour en cas de besoin.

A propos de la construction moment, j'utilise Mercurial et la mise en place d'un référentiel d'intégration qui n'est pas le dépôt d'un travail d'équipe. Donc, pousser les changements dans la prise en pension de travail d'équipe jusqu'à ce que je pense qu'il est temps de rendre le système d'intégration essayer de construire. Ensuite, je pousse de la mise en pension de travail d'équipe à la prise en pension d'intégration et qui déclenchera la construction. Puis-je ajouter aussi un script qui va tirer la prise en pension d'équipe dans l'intégration mise en pension une fois par jour.

Ici, je suppose que je travaille presque tous les jours sur mon projet, mais ce n'est pas toujours vrai. Vous devez définir une construction qui est le moment par rapport à la fréquence que vous avez besoin construit. Dans une entreprise de jeu que je travaillais à avant, nous avons utilisé CruiseControle et construit une construction complète chaque heure. On pourrait aussi forcer une construction à chaque fois que nous voulions en cas de besoin.

Pour un projet d'accueil, une fois par jour peut-être déjà « souvent ». La principale exigence serait de permettre facilement à l'utilisateur de forcer le lancement d'une construction.

Autres conseils

Après une brève contemplation, je suggère qu'il pourrait même être plus important pour un développeur solo que pour une équipe.

Au niveau le plus élémentaire d'un serveur de CI démontre que vous pouvez construire votre application à partir de zéro de la source engagée -. Combinée à un ensemble décent de tests, il doit démontrer que vous pouvez créer et exécuter à partir de zéro

Depuis l'une des choses que j'essaie de faire est de faire en sorte que ma construction comprend un paquet déployable vous savez aussi que vous pouvez aller chercher quelque chose à déployer (propre et d'un état connu / version).

En fait maintenant, quand vous faites Fichier | Nouveau projet, vous devriez probablement inclure la création ou l'ajout à votre dépôt et la configuration de votre script de compilation de CI et la configuration du déploiement (même si c'est seulement à zip un tas de choses pour le déploiement xcopy)


Addendum (2016) - aujourd'hui mon système CI sera également partie intégrante de mon processus de déploiement, de sorte que sa valeur a augmenté et je peut absolument pas fonctionner tout projet livrable sans lui. déploiement de bouton-poussoir automatisé prend beaucoup de stress du processus et d'une certaine manière, la forme ou former un serveur de build fait partie intégrante de cela.

Quand je suis le seul commis, je viens de construire et tester avant commettre réellement. J'utilise habituellement une cible makefile comme:

make sense

qui configure, construit, exécute tous les tests (valgrind au courant), court Lints, etc. Comme je sais que je serai le seul à pousser, je ne suis pas vraiment besoin de la puissance de quelque chose comme Hudson.

En outre, dans un environnement où vous avez plusieurs branches alimentant un dépôt principal, si tout le monde suit le tirez toujours avant de vous engager ou pousser, le serveur CI pourrait être un peu plus de tuer. Une règle bien écrit que l'auteur de tout ce qui a cassé la dernière construction achète une pizza le vendredi garde généralement tout fonctionne sans souci:)

Si elle pénètre dans une situation où un projet est clairement divisé en sous-systèmes qui ont leurs propres dirigeants, vous vraiment besoin d'envisager d'utiliser quelque chose comme Hudson. Quelqu'un pourrait tester localement, perdre une course avec un autre sous-système et finissent par pousser quelque chose toxique.

En outre, si vous maintenez une fourchette d'un projet en mouvement rapide (par exemple, votre propre jeu de patches pour le noyau Linux), vous devriez vraiment envisager d'utiliser quelque chose comme Hudson, même si vous êtes « en solo » sur ce projet . Cela est particulièrement vrai si vous ramifier / re base directement à partir de la canalisation principale.

Je ne dirais pas que cela est juste un bonus agréable, je dirais qu'il est essentiel à l'ingénierie de logiciels de haute qualité pour nous les artistes en solo là-bas. La plupart d'entre nous laissent leurs normes de qualité glisser un peu si pressé de s'ils pensent que son assez facile à corriger plus tard. Si vous commettez un logiciel dans cet état, vous avez essentiellement une base de code sans valeur stockée dans votre contrôle de code source.

si elles sont respectées correctement (qui est, vous ne passez des tests et vous assurez-vous qu'il construit chaque fois que vous commettez) des forces de CI vous d'adhérer à une norme de qualité supérieure que vous le feriez si vous simplement engager toute façon .

Il est important si vous voulez réduire votre temps d'attente pour voir si tout est encore va bien. Bien que vous pouvez obtenir votre IDE pour bourrer la compilation pour vous dès que vous enregistrez, il ne les tests unitaires se lance pas automatiquement, donc j'ai mon serveur CI exécuter les tests unitaires et des rapports de couverture de cas de test et d'autres analyses de la qualité de mon code dès que Je le pousse.

Le déclencheur que je dois faire est de pousser mes changements actuels de contrôle de version et je peux revenir au codage. Et pendant que je pense sur le codage, le système de CI est occupé barattage le long de faire les longs rapports de qualité prolixes que je vais regarder de temps en temps quand mon cerveau va dans une accalmie.

J'ai une machine VMWare séparé sur le même ordinateur portable qui fait le builds pour le code que je pousse. Pour ce faire, je viens d'obtenir une image Turnkey Linux VMWare et installer les jenkins utilisant apt-get et faire quelques modifications de configuration mineures .

Licencié sous: CC-BY-SA avec attribution
scroll top