Qui est responsable de la mise en place d'un système de builds automatisé?

15

Je suis chef de projet dans mon entreprise. Je travaille avec quelques équipes de développeurs utilisant un système de contrôle de version standard bien connu appelé CVS. J'aimerais que l'intégration continue et les builds automatisés soient mis en œuvre pour aider à prévenir les problèmes de rupture de build et les mauvais déploiements se faufilant sur les serveurs de production.

Je suis sûr que je peux le configurer moi-même, mais je ne veux pas le faire moi-même pour deux raisons:

  1. Je n'ai pas le temps pour ça. J'ai mes propres responsabilités, qui comprennent le marketing, la communication avec les autres parties prenantes avec les membres de l'équipe ne faisant pas partie du développement, la communication avec les clients et la planification de projet.

  2. Plus important encore, je suis le chef de projet. Mon but est de fournir du leadership, pas de micro-gérer l'équipe de développement .

Quelles sont les choses que je peux faire pour trouver quelqu'un dans l'équipe de développement qui serait passionné par la mise en place de cela? Un développeur est-il la bonne personne pour cette tâche, étant donné que cela nécessite une connaissance de Java, Spring et Google App Engine? Quels sont quelques conseils pour aider à promouvoir le changement là où le changement est redouté?

jmort253
la source
7
C'est une nouvelle pour moi que le rôle du chef de projet est d'assurer le leadership.
Yuriy Zubarev
Cette liste d'exigences de connaissances à la fin, tout ce que les développeurs peuvent avoir ou non, et les non-développeurs ne le feraient certainement pas. Cela dépend du vôtre.
Orbling
5
presque -1 pour toujours utiliser CVS.
Johannes Rudolph
@Johannes - Si ça ne tenait qu'à moi, nous ne le serions pas. En fait, j'ai une configuration de référentiel SVN que j'utilise.
jmort253
1
Autant CVS est une ancienne technologie (et loin de mon préféré), il fonctionne toujours et beaucoup d'endroits l'utilisent encore. Et s'il fait le travail, vous en avez besoin pour le laisser en place peut avoir du sens. Nous l'utilisons à notre bureau et il fait le travail.
Zachary K

Réponses:

14

Je chercherais d'abord quelques possibilités. Par exemple, Hudson est un serveur d'intégration continue plutôt populaire et extrêmement flexible. Vous pouvez envoyer un e-mail à votre équipe de développement avec quelque chose comme ceci:

Je voudrais introduire un outil d'intégration continue afin que les révisions toxiques apparaissent beaucoup plus tôt que tard. J'ai regardé [hudson, acme CIS, foo] et tous semblent fonctionner. Étant donné que nous utilisons CVS avec [liste des mises en garde ici], je cherche des recommandations et je vivrai avec tout ce que l'équipe décidera.

Dave, veuillez prendre en charge l'obtention d'un consensus et sa mise en place. Équipe - veuillez avoir votre contribution à Dave d'ici la fin de la journée jeudi afin que nous puissions tester cela vendredi.

Veuillez m'envoyer mes informations d'identification une fois que nous avons établi quelque chose.

Cette approche présente les avantages suivants:

  • Vous déléguez, ne jetez pas
  • Les gens savent que vous avez fait des recherches, la qualité des choses que vous signalez aide à définir vos attentes quant à la qualité de l'outil mis en œuvre
  • Vous êtes au courant des [mises en garde], n'allons pas dérailler en discutant à moins qu'elles ne soient vraiment des rupteurs de transactions pour la tâche à accomplir
  • Vous autorisez un peu de démocratie. Bien sûr, vous vous connecterez pour voir si quelque chose s'est cassé, mais les personnes qui doivent traiter avec un CIS seront celles qui auront choisi la plate-forme.

Dans mon scénario simulé, a Daveété sélectionné car il a le moins dans son assiette et n'aurait probablement aucun problème à configurer un nouveau serveur. Selon la charge de travail, il se Davepeut que ce soit vous. C'est tellement subjectif que je le mentionne simplement. Vous ne pouvez pas toujours le dire, not my job to do thatsurtout si vous êtes le seul à avoir le temps de le faire. Si tout le monde tire déjà avec le temps, sa perception de votre volonté d'aider devient plus importante. Jauger c'est une compétence que vous développez au fil du temps.

Dans tous les cas, vous aurez soit un serveur CIS d'ici vendredi, soit des détails sur les raisons pour lesquelles cela n'est tout simplement pas possible sans un jeu de mains supplémentaire.

Tim Post
la source
2
Merci pour votre contribution et vos conseils. Je n'essayais pas de tirer la not my jobcarte pour me retirer du travail, mais parce qu'il est facile pour les chefs de projet de s'impliquer parfois trop dans ce que fait l'équipe de développement. En déléguant cela au développement, je leur donne le contrôle et règne. De plus, s'ils se chargent de la configuration, ils l'utiliseront plus probablement, alors que si je la configure, j'aurai une belle expérience d'apprentissage sur la façon de configurer l'intégration continue mais sans retour sur investissement et le coût d'opportunité de donner sur mes autres tâches. De plus, l'exemple d'e-mail est très utile :) +1
jmort253
@ jmort253 - Oui, je sais que vous n'évitez pas le travail. Je vais mettre à jour pour plus de clarté.
Tim Post
3
+1 pour impliquer l'équipe et la laisser prendre les décisions techniques. C'est la clé pour les faire accepter et utiliser le nouveau système.
Péter Török
14

Je vois que cela va de trois manières possibles:

  1. Demandez à quelqu'un dans l'équipe de développement de faire une évaluation rapide des outils possibles et de lui faire concocter quelque chose rapidement. Si vos projets individuels ont des scripts de construction appropriés en place (c'est-à-dire que vous pouvez créer les projets en dehors de l'EDI), il devrait être assez rapide de les raccorder au CI.

  2. Traitez l'infrastructure de construction comme un projet interne au sein de votre équipe et gérez-la en tant que telle. Un peu plus impliqué que le premier point, mais s'il est bien fait, vous obtiendrez un meilleur système. La diffusion des connaissances au sein de l'équipe réduira également le risque de sur-spécialisation mentionné ci-dessous. Vous bénéficiez également des avantages de l'examen par les pairs. Cependant, certains programmeurs peuvent percevoir cette tâche comme dégradante et, en tant que telle, ne pas y consacrer autant d'argent qu'ils le devraient.

  3. Embauchez un développeur en tant que maître de la construction et demandez-lui de configurer tous les outils. Ensuite, continuez à l'utiliser pour améliorer le système, ajoutez des métriques, la génération automatisée de documents, les tests automatisés, etc. C'est plus coûteux, mais s'il est bien fait, les investissements dans cette personne seront très rapidement rentabilisés en augmentant l'efficacité de votre équipe de développement. Cette personne doit maîtriser les langages et les frameworks utilisés par votre équipe et avoir le désir de les coller dans un système. D'un autre côté (à partir des commentaires), cela peut ne pas être dans votre budget et la création d'un poste spécialisé pourrait conduire à une solution sous-documentée qui peut rendre les transitions difficiles.

Cela dit, avant de commencer quoi que ce soit, assurez-vous de ce que vous en voulez vraiment. Votre question manque un peu de détails pour vous orienter dans la bonne direction technique. Vous devez savoir quels gains vous souhaitez réaliser en utilisant de tels outils, vous avez besoin d'une vision générale du système souhaité. On peut faire un long chemin dans la création d'un environnement qui lie tout cela, mais sans plan directeur pour construire contre vous, vous pouvez également exécuter des cercles et rendre les choses plus compliquées que ce qu'elles sont déjà.

Un manager que j'avais dit un jour que les outils sont bons mais sans processus ils sont inutiles. Je souhaite seulement qu'il ait suivi ce qu'il a dit quand le moment serait venu de les mettre en place ...

Donc, si vous décidez d'embaucher quelqu'un, il y a des avantages certains à obtenir un programmeur plutôt que quelqu'un avec une formation plus ITish. Le point principal est que cette personne peut passer du temps et de l'énergie à créer le code de la colle et les plugins qui intégreront les différents systèmes ensemble dans un système cohérent.

J'espère que cela a aidé

Newtopian
la source
2
@Newtopian - Cela aide. Surtout la partie d'avoir un plan avant d'essayer aveuglément de mettre en œuvre quelque chose. Je vous remercie. +1
jmort253
1
+1 Des conseils assez judicieux. Un ajout, quelle que soit la plate-forme sur laquelle vous travaillez, si l'un des membres de votre équipe est un chef de file majeur de Linux ou l'un des autres systèmes d'exploitation qui ont souvent des utilisateurs développeurs utilisant des scripts de construction, ils peuvent être enthousiasmés par le projet.
Garet Claborn
1
+1 pour 3) chaque équipe logicielle devrait avoir un gestionnaire de build dédié ces jours-ci
Sean Patrick Floyd
1
Une entreprise éminente dont je me souviens avoir lu (37signals? GitHub? I dunno) attribue la responsabilité d'être le maître de la construction à la dernière personne qui a cassé la construction. Cela garantit que (1) les gens prennent soin de ne pas interrompre la construction et que (2) plusieurs membres de l'équipe (idéalement) acquièrent une expérience d'apprentissage sur le système de génération.
Michelle Tilley
1
@jmort, tôt ou tard, cela arrive au point où personne ne peut faire l'effort de ne pas avoir un poste aussi dédié
Sean Patrick Floyd
3

Si vous avez un rôle de leadership, il vous incombe d'identifier les composants / pratiques manquants et votre responsabilité de les voir correctement mis en œuvre. La tâche de mise en œuvre peut être déléguée ou non, mais en fin de compte, c'est la responsabilité des dirigeants.

La clé de l'acceptation est de comprendre, ou du moins de vous faire bénéficier du doute. Vous pouvez parler de ce que vous voulez faire et évoquer les coûts et les avantages. Si la discussion n'amène pas à la compréhension, vous pouvez compter sur leur confiance dans vos décisions, mais seulement si vous avez construit ce type de repoire.

Si votre délégation fait face à des contraintes de temps en matière d'expertise, évoquez-la lors d'un stand up ou d'une réunion d'équipe et demandez un volontaire. Si personne ne vient, attribuez-le simplement comme vous le feriez pour tout autre travail.

mise à jour:

Il existe une structure organisationnelle au sein de chaque entreprise. Un rôle de leadership est responsable des ressources à ce niveau. Ils ont également la responsabilité de signaler et de résoudre tout problème. Ils peuvent avoir besoin de ressources supplémentaires et / ou de suggestions à quel point vous remontez la chaîne. Si vous pouvez résoudre le problème, vous avez la possibilité de mettre en œuvre une solution vous-même ou de déléguer. Cela peut et doit impliquer directement les personnes concernées, idéalement en collaboration avec elles.

Je ne peux pas dire que le niveau de directeur et les postes supérieurs ne devraient jamais être directement responsables d'une personne ou d'un groupe particulier dans une entreprise. Cela dépend vraiment de la structure organisationnelle de l'entreprise. J'ai travaillé dans des start-ups où le CTO était directement responsable des développeurs et des testeurs. Dans une grande entreprise plus traditionnelle, la gestion à ce niveau n'aurait pas la visibilité ou la familiarité requises pour prendre les décisions appropriées à ces niveaux inférieurs.

Dietbuddha
la source
Supposons que vous soyez un leader d'autres leaders? Est-ce la responsabilité du PDG d'identifier qu'un développeur Java junior dans une équipe de projet a besoin d'une formation supplémentaire?
jmort253
@ jmort253 La réponse courte est peut-être, mais cela dépend de la structure organisationnelle de l'entreprise. Si la structure de l'entreprise est plate et petite, il peut être de la responsabilité du PDG de s'assurer que les développeurs reçoivent une formation. En effet, j'ai travaillé dans de nombreuses startups où les VP ont des subordonnés directs qui n'étaient pas des managers.
dietbuddha
1

Je suis principalement développeur, et je l'installe quand je le peux (c'est-à-dire lorsque je ne suis pas expressément interdit de le faire). En général, comme je travaille dans des boutiques .NET, je choisis CruiseControl.NET car il est open source, fonctionne avec la plupart des principaux systèmes de contrôle de source et est relativement facile à utiliser. J'ai toujours voulu créer un orbe ambiant comme l'une des sorties, mais c'est généralement hors de mon contrôle.

Abordez-le lors d'une réunion pour voir d'abord si quelqu'un a le désir de le faire - tant que cela n'a pas d'impact sur les projets sur lesquels ils travaillent actuellement.

À ma place actuelle (l'un des laboratoires nationaux), nous l'avons installé juste pour faire les builds de manière cohérente afin que les gens qui veulent voir ce que nous faisons puissent obtenir une version exécutable à tout moment . Ils ne veulent pas de tests unitaires (l'impression du chef de projet est que l'effort que nous avons mis dans les tests unitaires aurait pu être mis dans le portage du projet vers .NET).

À ma place précédente, l'intention était de rendre les versions standard et cohérentes entre les produits. Beaucoup trop de produits ne pouvaient être construits que sur un ordinateur spécial (dans le cas d'un produit, impliquant un contrôle tiers avec DRM agressif qui avait depuis longtemps cessé ses activités, nous avons dû garder une machine en vie pendant environ 5 ans après la fin du développeur. parce que le sien était le seul à pouvoir construire ce produit commercialement remplacé maintenant). De plus, les installations ne pouvaient être effectuées que par une seule personne qui était matinale - donc si vous aviez besoin d'une version après environ 15 heures, vous attendiez jusqu'au lendemain.

Un développeur est-il la bonne personne pour cette tâche, étant donné que cela nécessite une connaissance de Java, Spring et Google App Engine?

Ça dépend. Si vous avez une personne QA qui est décente pour les scripts, demandez d'abord avant de les affecter.

Le configurer pour commencer n'est pas une tâche compliquée. La configuration ne devrait pas prendre plus de quelques jours (principalement dans un environnement d'entreprise, les tracas obtiennent un compte pour exécuter les choses avec toutes les autorisations requises) et démarrer.

Tangurena
la source
0

Essayez de le configurer dans une direction différente - en cas de problème dans l'environnement de production, il incombe à l'équipe de développement de le réparer et de le résoudre rapidement. Introduisez ensuite l'idée d'une construction nocturne simple qui se compile à partir du code le plus récent, du tampon de version, etc. S'il ne parvient pas à être construit, il ne sera pas promu.

Je pense que le script de construction devrait appartenir au développement. Lorsqu'ils modifient les dépendances ou apportent des modifications, ils sont les meilleurs pour savoir comment mettre à jour les scripts. Et dites-leur que si la direction du projet en est propriétaire, vous les convoquerez simplement en réunion chaque fois qu'il y aura un problème.

jqa
la source
0

Vous pourriez simplement dire lors de votre prochaine réunion, "OK, je pense que nous devrions le faire à cause de. Qui peut le mettre en œuvre" Je vous donne mieux que les chances que quelqu'un dise "Bien sûr que je le ferai". alors vous n'avez pas à vous battre à ce sujet.

Zachary K
la source