Quels sont les avantages des outils d'intégration continue sur un projet solo?


18

Si vous faites un projet solo - utiliseriez-vous des outils CI pour construire à partir d'un référentiel? J'ai utilisé Hudson et Cruise Control dans un environnement d'équipe, où il est essentiel de construire dès que quelqu'un enregistre quoi que ce soit.

Je pense que la valeur du contrôle de version est toujours évidente, mais dois-je construire après chaque commit, vu que j'aurais juste construit sur ma machine locale, et que personne d'autre ne s'engage?

Réponses:


12

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

  1. L'un des objectifs est de la rendre multiplateforme, et avoir un outil d'intégration vous aide à vérifier implicitement (de base) votre application sur plusieurs plates-formes une fois que vous avez poussé vos modifications dans le référentiel d'intégration (ou central, ou tout ce qui est celui qui sera utilisé comme faisant autorité).
  2. Le projet est construit sur le long terme, je devrai donc travailler avec une équipe plus tard. Je ne prévois de recruter personne avant 2012, donc l'intégration continue peut attendre jusqu'à ce que 1. devienne la priorité.

Outre la préparation multiplateforme et le travail en équipe, je ne vois pas le besoin. L'essentiel est d'avoir une sorte de logiciel de contrôle de source et plusieurs référentiels pour conserver les sauvegardes. Cela vous aidera à configurer des outils de construction autour de lui en cas de besoin.

À propos du calendrier de construction, j'utilise Mercurial et je configure un référentiel d'intégration qui n'est pas le référentiel de travail d'équipe. Donc, poussez les changements dans le référentiel de travail d'équipe jusqu'à ce que je pense qu'il est temps de faire construire le système d'intégration. Ensuite, je passe du référentiel de travail d'équipe au référentiel d'intégration et cela déclenchera la génération. Ensuite, j'ajoute également un script qui tirera le référentiel de travail d'équipe dans le référentiel d'intégration 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 un calendrier de génération qui dépend de la fréquence à laquelle vous avez besoin de générations. Dans une société de jeux dans laquelle je travaillais auparavant, nous avons utilisé CruiseControle et il a construit une version complète chaque heure. Nous pourrions également forcer une construction quand nous le voulions si nécessaire.

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


20

Après une brève réflexion, je dirais que cela pourrait même être plus important pour un développeur solo que pour une équipe.

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

Étant donné que l'une des choses que j'essaie de faire est de m'assurer que ma build comprend un package déployable, vous savez également que vous pouvez obtenir quelque chose à déployer (propre et à partir d'un état / d'une version connue).

En fait, maintenant, lorsque vous faites Fichier | Nouveau projet, vous devez probablement inclure la création ou l'ajout à votre référentiel et la configuration de votre script de construction CI et de la configuration du déploiement (même si cela ne fait que compresser une pile de choses pour le déploiement xcopy)


Addendum (2016) - de nos jours, mon système CI fera également partie intégrante de mon processus de déploiement, donc sa valeur a augmenté et je n'exécuterai absolument aucun projet livrable sans lui. Le déploiement automatisé des boutons-poussoirs supprime beaucoup de stress du processus et, d'une certaine manière, la forme ou la forme d'un serveur de build en fait partie intégrante.


10
+1 en tant que développeur solo, vous êtes plus à risque de problèmes de «travaux sur ma machine»
jk.

Les votes descendants sans raison ne sont pas utiles - qu'est-ce qui ne va pas avec ce qui précède?
Murph

+1, je suis confronté à une situation très similaire ici - beaucoup de projets qui sont assez petits pour être maintenus chacun par un seul développeur et un grand projet maintenu par une équipe. Pour les petits projets, nous sommes souvent confrontés au problème de quelqu'un qui oublie d'archiver un fichier de code source particulier. Pour le grand projet, cela n'est jamais devenu un problème, car si l'une des équipes oublie d'ajouter un nouveau fichier au contrôle de code source, les autres s'en plaindront immédiatement. Je dois ajouter que nous allons installer un serveur CI le mois prochain - à commencer par les petits projets!
Doc Brown

7

Quand je suis le seul à m'engager, je construis et teste juste avant de m'engager. J'utilise généralement une cible de makefile comme:

make sense

Cela configure, construit, exécute tous les tests (valgrind au courant), exécute les lints, etc. Comme je sais que je serai le seul à pousser, je n'ai pas vraiment besoin de la puissance de quelque chose comme Hudson.

De plus, dans un environnement où vous avez plusieurs branches alimentant un référentiel principal, si tout le monde suit toujours le pull avant de valider ou de pousser, le serveur CI peut être un peu trop fatigant. Une règle bien écrite selon laquelle l'auteur de tout ce qui a cassé la dernière version achète de la pizza le vendredi permet généralement de bien fonctionner :)

S'il entre dans une situation où un projet est clairement divisé en sous-systèmes qui ont leurs propres dirigeants, vous devez vraiment envisager d'utiliser quelque chose comme Hudson. Quelqu'un pourrait tester localement, perdre une course avec un autre sous-système et finir par pousser quelque chose de toxique.

De plus, si vous maintenez une fourchette d'un projet en évolution rapide (par exemple, votre propre ensemble de correctifs pour le noyau Linux), vous devriez vraiment envisager d'utiliser quelque chose comme Hudson, même si vous êtes `` solo '' sur ce projet. Cela est particulièrement vrai si vous branchez / rebase directement à partir de la ligne principale.


11
N'oubliez pas de coder votre cible «sens», sinon vous pourriez l'obtenir make: don't know how to make sense. Stop. Argh!
Alan Pearce

@Alan - Ils sont allés gâcher tout notre plaisir dans les versions ultérieures (au moins GNU make).
Tim Post

1
Je vous suggère alors de passer à FreeBSD. :)
Alan Pearce

1

Je ne dirais pas que c'est juste un bon bonus, je dirais que c'est vital pour l'ingénierie logicielle de haute qualité pour nous, artistes solo. La plupart d'entre nous laisseront leurs normes de qualité glisser un peu s'ils sont pressés s'ils pensent que c'est assez facile à corriger plus tard. Si vous validez un logiciel dans cet état, vous avez essentiellement une base de code sans valeur stockée dans votre contrôle de code source.

S'il est respecté correctement (c'est-à-dire que vous ne sautez pas les tests et que vous vous assurez qu'il se construit à chaque fois que vous vous engagez), CI vous oblige à adhérer à un standard de qualité plus élevé que si vous le faisiez de toute façon.


Je parviens à exécuter une application de base de données réussie sans aucun des frais généraux d'un serveur CI. Il faut un peu de discipline dans certains domaines, mais moins que les frais généraux liés à la mise en place de tout cela.
wobbily_col

0

C'est important si vous voulez réduire votre temps d'attente pour voir si tout va bien. Bien que vous puissiez demander à votre IDE de compiler des éléments pour vous dès que vous enregistrez, il n'exécute pas automatiquement les tests unitaires, donc mon serveur CI exécute les tests unitaires et les rapports de couverture de cas de test et autres analyses de qualité de mon code dès que Je le pousse.

Le seul déclencheur que je dois faire est de pousser mes modifications actuelles au contrôle de version et je peux revenir au codage. Et pendant que je pense au codage, le système CI est occupé à faire des rapports de qualité à long terme que j'examinerai de temps en temps lorsque mon cerveau s'endormira.

J'ai une machine VMWare distincte sur le même ordinateur portable qui fait les builds pour le code que j'introduis. Pour ce faire, j'obtiens simplement une image VMWare Linux clé en main et installe les jenkins en utilisant apt-get et fais quelques changements de configuration mineurs.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.