Mon collègue s'engage et pousse sans tester


113

Lorsque mon collègue pense qu’il n’est pas nécessaire de faire un test sur son PC, il apporte des modifications, des validations puis des poussées. Ensuite, il teste sur le serveur de production et réalise qu'il a commis une erreur. Cela arrive une fois par semaine. Maintenant, je vois qu’il a effectué 3 commits et pousse avec le déploiement sur le serveur de production en moins de 5 minutes.

Je lui ai dit à quelques reprises que ce n’était pas la façon de faire du bon travail. Je ne veux plus être impoli avec lui et il a le même statut que moi dans l'entreprise et il a travaillé plus que moi ici.

Je veux que ce comportement soit puni d'une manière ou d'une autre ou le rende désagréable autant que possible.

Avant de commencer, la société utilisait des méthodes antiques, telles que FTP, sans contrôle de version.

Je les ai / obligés à utiliser Git, Bitbucket, Dploy.io et HipChat. Le déploiement n'est pas automatique, il faut que quelqu'un se connecte à dply.io et appuie sur le bouton de déploiement.

Maintenant, comment puis-je les forcer à ne pas tester sur le serveur de production? Quelque chose comme HipChat bot peut sentir qu'il y a des modifications répétées sur la même ligne et envoyer un avis au programmeur.


1
Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
Ingénieur mondial

5
Puisque vous êtes sur Git, utilisez les demandes d'extraction pour imposer les révisions de code avant la fusion dans master et le déploiement en production. En outre, supprimez ses informations d'identification pour se connecter au serveur de déploiement. Centralisez cette autorité dans un non-développeur. Soit dit en passant, la conformité à la norme PCI imposée par le secteur des cartes de crédit l'exige.
Barett

3
Du point de vue du lieu de travail, si vous êtes un collègue de travail avec cette personne et en aucun cas son superviseur, vous ne gagnerez probablement rien en "punissant" cette personne. Concentrez-vous sur le maintien de la qualité du code, pas sur le respect des normes laxistes de votre collègue.
Zibbobz

2
Est-ce qu'une poussée vers le référentiel "central" déclenche toujours un déploiement en production? Cela ne devrait certainement pas.
jpmc26

3
J'ai lu la question et je me suis dit que le type devait être turc et c'est parti :) regardez ceci bro: nvie.com/posts/a-successful-git-branching-model . Vous devez avoir au moins deux branches: master et dev où les développeurs ne poussent que vers dev et après avoir testé, vous fusionnez pour maîtriser et déployer.
Cemre

Réponses:


92

Vous avez besoin d'un processus d'assurance qualité (QA) approprié.

Dans une équipe de développement logiciel professionnelle, vous ne passez pas du développement à la production. Vous avez au moins trois environnements distincts: le développement, la mise en scène et la production.

Lorsque vous pensez que quelque chose fonctionne dans votre environnement de développement, vous passez d'abord à la mise en scène. Chaque validation est testée par l'équipe d'assurance qualité et, si ce test réussit, il est poussé en production. Idéalement, le développement, les tests et la mise en production sont effectués par des personnes distinctes. Cela peut être assuré en configurant votre système d'automatisation de génération de manière à ce que les développeurs ne puissent déployer que du développement à la mise en scène et que l'équipe d'assurance qualité ne puisse déployer que de la mise en production à la production.

Lorsque vous ne pouvez pas persuader la direction d'engager quelqu'un pour effectuer votre assurance qualité, alors l'un de vous peut jouer ce rôle pour l'autre. Je n'ai jamais travaillé avec diploy.io, mais certains systèmes d'automatisation de génération peuvent être configurés de manière à ce qu'un utilisateur puisse déployer à la fois du développement à la mise en scène et de la production à la production. requis (mais assurez-vous d’avoir des remplaçants pour les cas où l’un de vous est absent).

Une autre option consiste à demander à votre personnel d'assistance d'effectuer l'AQ. Cela peut sembler être un travail supplémentaire pour eux, mais cela leur permet également d'être au courant des modifications apportées à l'application qui pourraient les protéger du travail à long terme.


L’idée que l’assistance effectue l’assurance qualité lorsqu’elle implique le passage en production semble convenable, mais ne vole pas pour des raisons de séparation des fonctions. Le support étant responsable du support après la fin des "tests des programmeurs" devrait leur faire prendre conscience des changements. C'est vraiment difficile avec quatre développeurs et personne d'autre :-) Si vous modifiez votre réponse pour l'appliquer directement à la configuration du PO, alors c'est ne sera d'aucune utilité pour qui que ce soit ...
Bill Woodger

1
@ BillWoodger pourquoi? Pour eux, il s'agit d'un système de «modifications et annulations à venir». Non seulement ils ont l'avantage de voir ce qui va se passer avant que tout ne devienne réel, mais c'est aussi un moyen de revenir facilement à la dernière version si les choses tournent mal. N'oubliez pas que l'environnement de transfert est le test de fin de programme.
gbjbaanb

1
@gbjbaanb car il met le support dans la même position et reformule le problème initial. Le soutien aurait généralement un accès d'urgence à la production. S'ils ont également un autre accès, vous avez des problèmes d'audit (si cela est important). Si quelqu'un peut changer quelque chose, il y a un problème. Bien entendu, le support devrait tout savoir , il ne devrait pas pouvoir tout faire . C’est ce que tous les auditeurs auxquels j’ai eu affaire me disent, et ils m’en ont convaincu depuis longtemps.
Bill Woodger

@ BillWoodger Je ne suis pas sûr de ce que vous dites. Les équipes de production que je connais ont généralement leurs propres processus de déploiement qui incluent un environnement de test (juste pour vérifier d’abord les erreurs stupides). Dans une petite équipe, il n'y a aucune raison pour que ce système de test ne puisse pas être partagé par dev et support. De toute façon, aucun changement n’est autorisé - il est peuplé par dev via une automatisation et consommé par le support. Pas différent de leur donner un zip du même code. Les auditeurs s'intéressent aux processus et non à leur mise en œuvre (sauf qu'ils sont bien entendu suivis)
gbjbaanb

1
Les auditeurs de @gbjbaanb s'intéressent aux personnes ayant accès à tout. Si un membre du support peut modifier un programme en développement et le faire entrer en production sans intervention de personne, le système est exposé. Bien sûr, avec les quatre personnes d'OP, il n'y a pas de "soutien" séparé de toute façon, et une division satisfaisante des fonctions va être délicate.
Bill Woodger

54

Vous voudrez probablement vous procurer un serveur de développement et, de préférence, un environnement intermédiaire. Personne ne devrait jamais pousser de la production locale à la production, à l'exception de son site Web personnel. Votre processus de déploiement doit uniquement prendre en charge dev-> staging-> prod. Vous voulez probablement une personne responsable de la signature des nouvelles versions - selon l’organisation, il peut s’agir d’un responsable de projet, d’un responsable de l’assurance qualité ou d’un devoir qui tourne toutes les semaines (avec un rappel tangible, par exemple, seule la personne avec le jouet moelleux qui arrive cette semaine) pousser). Cependant, discutez-en d'abord avec votre équipe pour obtenir son adhésion (voir ci-dessous).

Je veux que ce comportement soit puni d'une manière ou d'une autre ou le rende désagréable autant que possible.

Vous pourriez avoir votre suite de tests (vous en avez une, n'est-ce pas?) Inclure un contrôle qui détermine si vous êtes sur un serveur de production et, le cas échéant, envoie un courrier électronique à chaque employé du bureau Looks like $username is testing on prod, watch out. Peut-être que faire honte à votre collègue serait désagréable. Ou bien, vous pourriez créer des restrictions techniques, telles que l'IP-interdire à votre équipe de regarder les prod (que vous pouvez lever mais que vous devez justifier).

Je ne le recommande pas, cependant, vous ressembleriez au problème, pas à la personne qui teste avec prod et vous pourriez vous rendre très impopulaire auprès des membres de l'équipe qui ne s'en soucient pas.

Ce que vous voulez vraiment, c’est sûrement pas que ce comportement soit puni mais qu’il s’arrête ?

Je les ai forcés / nous à utiliser [...]

C'est bien que vous préconisiez des améliorations du flux de travail, mais il semble que vous ne pensez pas beaucoup à vos collègues et / ou que vous ne bénéficiez pas de leur soutien total. Il est probable que les collègues interagiront à moitié avec le flux de travail, en faisant le minimum nécessaire pour que le code passe en production et en ne suivant pas vraiment l'esprit du flux de travail, ce qui signifiera plus de temps passé à nettoyer. Et lorsque vous passerez de plus en plus de temps à éliminer les résultats d'une interaction inadéquate avec le flux de travail (personne ne s'en soucie, n'est-ce pas?), Tout le monde remettra en question le flux de travail lui-même.

Commencez donc par une conversation.

Découvrez pourquoi cela se produit (la machine de votre collègue est-elle moins performante pour les tests? Votre collègue est-il incertain des branches de ses fonctionnalités ou est-il coincé dans un état d'esprit où les commandes commit et push sont identiques?), Expliquez-nous pourquoi le code non testé laisse tomber sur dev / staging / prod et voyez si vous pouvez faire quelque chose pour changer la raison (votre collègue fera probablement ce que vous voulez si vous venez de rendre plus agréable le test local que si vous venez de le réprimander).

Si vous ne parvenez pas à résoudre le problème et qu'il en résulte véritablement une divergence d'opinion, planifiez une discussion à l'échelle de l'équipe lors de votre prochaine réunion rétrospective, voyez ce que vos collègues font et pensent. Présentez vos arguments, mais écoutez le consensus. Peut-être que votre équipe dit qu'il est acceptable de ne pas tester les correctifs textuels localement, et que vous avez simplement pour règle de ne pas tester de grandes fonctionnalités. Ecrivez dans la réunion et lisez ce que vous décidez collectivement de ce qui est autorisé sur chacun des environnements. Fixez une date dans quelques mois pour l’examiner, peut-être lors d’une rétrospective.


10
+1 pour la conversation. Il faut que tous s'entendent pour dire que c'est un problème et pourquoi c'est un problème. Ce n’est qu’alors que la solution technique peut être un succès.
Patrick

9
+1 pour obtenir des environnements de serveur de développement / intermédiaire. Tant qu'il n'y a pas de véritable endroit en dehors de sa propre machine pour pousser les choses, ce comportement n'est pas entièrement la faute de son collègue. Une personne ne peut faire que beaucoup de choses sur sa propre machine et, si rien d'autre ne le permet, l'environnement supplémentaire aide souvent à modifier le processus de pensée / l'attitude à l'examen.
Joel Coehoorn

20

Au travail, nous évitons cela en utilisant Gerrit . Gerrit est un système de révision de code qui agit comme une porte d'accès à votre branche Git principale / de production, appelée conventionnellement "maître". Vous avez des critiques de code, non? On dirait que vous les faites personnellement exceptionnellement. Avec Gerrit, vous passez à une sorte de branche intermédiaire qui, une fois que vous et votre collègue avez exécuté le processus de révision de code de manière satisfaisante, Gerrit est ensuite fusionnée avec votre branche principale. Vous pouvez même connecter Gerrit à un serveur de CI pour exécuter des tests unitaires avant que quiconque ne reçoive un courrier électronique pour passer en revue une modification. Si vous n’avez pas de serveur sur lequel vous pouvez configurer un outil de CI, Codeship a un joli plan gratuit à utiliser comme preuve de concept.

Enfin, bien sûr, il faut automatiser les déploiements de production uniquement à partir de produits de construction approuvés ayant survécu à la révision du code et aux tests unitaires. Il existe des technologies intéressantes pour cela, que je ne mentionnerai pas de peur que ce soit un appât à la flamme.

Allez chez votre patron avec une solution. Celui-ci s'applique même à vous et est un moyen d'améliorer la qualité du code de chacun, pas seulement de punir votre collègue.


17

Je considère cela comme un problème essentiellement humain - le processus est en place et les outils sont en place, mais le processus n'est tout simplement pas suivi.

Je suis d' accord avec ce que les autres ont dit ici, au sujet de la possibilité qu'il est tout à fait possible , le développeur en question est tout simplement coincé dans un SVN état d' esprit, et peut bien penser qu'il est suit le processus.

Je trouve que la meilleure façon de traiter ce type de problème, en particulier lorsqu'il n'y a pas de supérieur hiérarchique évident, ne tourne pas autour de la punition ou de la suppression de l'accès - cela crée simplement du ressentiment et donne l'impression que vous êtes le grand partisan de ce qui suit. En ce qui concerne le processus (il y en a toujours un, et j'ai déjà été "ce gars-là"), vous êtes le plus susceptible de faire la plus forte pression. Il s’agit avant tout de faire en sorte que les gens s’entendent sur le processus.

C'est ici que des réunions structurées, telles que des réunions de type "leçons apprises" après un incident majeur dans la production, peuvent être très utiles. Essayez de convaincre tout le monde, y compris le développeur en question, que la révision du code, les tests unitaires, les tests complets, etc. Cela ne devrait pas être difficile, et c'est très raisonnable. Ensuite, demandez à l’équipe de définir ensemble des règles solides sur la manière de procéder. Plus le développeur à l'origine du problème contribue au processus, plus il se sentira conforme aux règles et commencera à comprendre pourquoi son comportement pose problème.

Le dernier point est de ne jamais tomber dans le "bon, c'est mieux que ce qu'il était avant!" piège. Il y a toujours moyen de s'améliorer. D'après mon expérience, il est courant que les gens de l'industrie informatique commencent à se contenter de ce qu'ils ont après quelques améliorations. Le règlement se poursuit ensuite, jusqu'à ce que vous vous trouviez soudain à nouveau en crise.


1
Je ne vois vraiment pas comment "valider / pousser, déployer immédiatement en production et tester vos modifications ici et nulle part ailleurs" est un état d'esprit SVN ... La seule partie de ce processus qui impliquerait SVN est le commit. Même avec un modèle de branche ou un contrôle de source unique, un commit n'implique pas nécessairement un déploiement en production. Ou du moins, ça ne devrait pas.
jpmc26

@ jpmc26: Au risque d'une guerre de flammes entre Git et SVN: nous avons hérité d'un système SVN pour une grande partie de notre code "hérité", mais nous utilisons Git pour notre nouveau travail. Je peux presque garantir que nous n'avions pas correctement configuré SVN et / ou que nous ne l'utilisions pas correctement, mais le traitement des branches par Git semble beaucoup plus facile à utiliser. Je suis sûr à 100% que SVN est plus que capable de gérer un déploiement correct, mais je peux aussi voir (de mon expérience imparfaite) comment SVN pourrait "vous dissuader moins" de faire le bon choix. En tout état de cause, il ne s'agirait que d'un facteur contributif et l'éducation de l'utilisateur est plus importante.
TripeHound

1
@TripeHound Aucun argument sur le fait que le système git soit globalement meilleur pour gérer vos modifications de code. (Mes objections avec git concernent généralement la courbe d’apprentissage élevée.) Mon point est qu’alors que git peut offrir davantage de fonctionnalités pour vous aider à gérer votre processus de publication, la manière dont vous configurez votre infrastructure de construction reste le facteur principal de votre gestion. choix du contrôle de source. L’automatisation de la création et de la publication dans SVN a connu un assez bon succès pendant assez longtemps. Je ne suis donc pas vraiment au courant de ce qu’est un «état d’esprit SVN» ou de son impact négatif sur votre publication.
jpmc26

2
Ce n’est pas parce que vous vous engagez à maîtriser que vous devez déployer en production. Même si votre repo d'origine / svn repo est hébergé sur le serveur de production, cela n'implique pas une telle chose.
vonPetrushev

12

Ce n'est pas rare , en particulier dans les petites équipes. N'en faites pas un problème, mais établissez une règle informelle:

Casser la construction, apporter des beignets.

Soit 1) vous aurez des beignets deux fois par semaine ou 2) ils respecteront la norme.

Amenez-le en réunion. Sans accuser de cause, ne nommez personne par son nom, mais quelque chose de similaire à, "Depuis que nous avons introduit les normes de contrôle de version et de déploiement, les choses sont devenues beaucoup plus simples et le serveur est plus opérationnel que jamais. C’est génial! Cependant, il est toujours tentant de prendre un raccourci et de le soumettre sans les soumettre à un test correct. C'est un pari cependant, et notre serveur est en ligne. Je suggère qu'à partir de maintenant si l'un de nous soumet du code qui casse le serveur, la personne responsable apporte des beignets pour l'équipe le lendemain. "

Si vous le souhaitez, remplacez les beignets par quelque chose de nouveau et ne payez pas trop cher - un déjeuner pour toute l'équipe serait trop, mais une boîte de beignets ou un plateau de fruits / légumes de 5 $, des chips et une trempette, etc., seraient probablement ennuyeux. suffisamment pour leur faire peser le risque en comparant les avantages de sauter des tests sans en faire un fardeau qui les éloignerait de l’équipe ou de la société.


2
Cela ne fonctionne qu'avec un bureau. Quel est le concept équivalent lorsque vous avez une équipe distribuée de développeurs distants qui travaillent tous à domicile?
aroth

2
@aroth Pour certaines équipes, un simple courriel de la part de la personne qui a cassé la construction suffit. Planifiez-le comme un "objectif d'amélioration continue du processus" et demandez à l'e-mail de contenir suffisamment d'informations pour que les autres puissent voir ce qui ne va pas, ce qui va mal, ce que cette personne va changer dans son processus ou ce qu'elle suggère à l'équipe de changer. le processus, pour l'empêcher de se reproduire. La plupart des gens détestent les rapports et les rapports, et encore une fois, il est assez contrariant de faire plus attention à ne pas casser la construction à l'avenir.
Adam Davis

8

Maintenant, comment puis-je les forcer ...

Au lieu de forcer vos collègues, essayez de leur faire voir les choses de votre point de vue. Cela facilitera les choses pour tout le monde. Ce qui me mène dans ...

Je veux que ce comportement soit puni d'une manière ou d'une autre ou le rende désagréable autant que possible.

Pourquoi est-ce une douleur pour vous avec des problèmes sur le serveur live, mais pas pour ce gars? Savez-vous quelque chose qu'il ne sait pas? Que pouvez-vous faire pour lui faire voir les choses comme vous le faites?

Si vous y parvenez, vous en tirerez le meilleur et il trouvera des solutions au problème auquel vous n'aviez jamais pensé.

En général, essayez de travailler avec les gens pour résoudre les problèmes plutôt que de les forcer à participer à des processus incompréhensibles.


6

Quel est le pire qui pourrait arriver? Avez-vous des sauvegardes suffisamment bonnes pour qu'un bogue modifiant des enregistrements aléatoires de votre base de données puisse être corrigé en restaurant une ancienne version?

Imaginons que vous utilisiez un identifiant d'enregistrement et que, par erreur, le montant d'une facture en cents est stocké dans une variable utilisée pour l'identifiant d'enregistrement. Donc, si je paie 12,34 $, l'enregistrement avec l'identifiant 1234 sera modifié. Pouvez-vous vous en remettre si le logiciel fonctionne pendant quelques heures jusqu'à ce que le bogue soit détecté? (Si à la fois l'enregistrement correct et l'enregistrement 1234 sont mis à jour, vous ne le détecterez que lorsque l'enregistrement 1234 est utilisé, de sorte que cela risque de ne pas être détecté pendant un certain temps).

Maintenant, demandez à votre développeur très motivé ce qu’il en pense. De toute évidence, il ne peut pas prétendre qu'il ne fait jamais d'erreur, car il l'a déjà fait par le passé.


"Avez-vous des sauvegardes suffisantes?" Et même dans ce cas, votre collègue souhaite-t-il être le muggins qui doit restaurer la sauvegarde parce qu'il a cassé le serveur? Peut-être souhaiterait -il en principe tester avant de déployer, mais comme il n'y a pas d'environnement de test, il choisit l'option la plus simple actuellement disponible. Il devrait être facile de faire valoir son point de vue pour un serveur de test. Btw, les bugs qui ne sont pas détectés "pendant un bon moment" passeront de test en déploiement, car le problème de tels bogues est la qualité du test, pas l'endroit où les tests sont effectués.
Steve Jessop

Vous disposez non seulement des sauvegardes, mais votre entreprise peut-elle également se permettre de perdre du temps pendant les restaurations? Et peut-il se permettre de perdre des minutes, des heures ou même des jours d’informations car une restauration de la base de données a dû être effectuée? Je dirais que dans presque tous les cas non triviaux, la réponse est un «non» retentissant. Et même dans des cas triviaux, vous ne voulez pas que «restaurer une sauvegarde» soit la manière dont vous gérez un code non testé. Il doit exister quelque chose qui garantit que le test a lieu entre le moment où le code est archivé et celui où il entre en production.
aroth

Entièrement d'accord, c'est pourquoi j'ai dit "demandez à votre développeur ce qu'il en pense". Soit il est totalement trompé et croit que son code est sans bug, soit il ne se rend pas compte des dégâts qu’il peut causer. Ou troisième possibilité, il sait et s'en fiche.
gnasher729

3

Vous comprenez clairement les différents processus et solutions techniques possibles. La question est de savoir comment gérer le collègue.

Il s’agit essentiellement d’un exercice de gestion du changement.

Tout d’abord, j’aurais un mot discret à dire au fondateur pour s’assurer qu’il / elle adhère à votre point de vue. S'il y avait une panne de production, je m'attendrais à ce que le fondateur soit très préoccupé par cela et souhaite un changement.

Deuxièmement, vous travaillez dans une petite équipe et il vaut probablement la peine d'essayer d'impliquer toute l'équipe dans l'amélioration des processus.

Configurez des rétrospectives de processus régulières (par exemple hebdomadaires). Demandez à toute l'équipe:

  • Identifier les problèmes
  • Idées de volontaires pour améliorer les pratiques de travail
  • S'engager dans la mise en œuvre de ces pratiques

Naturellement, l’ensemble de l’équipe contribue également à assurer le respect des pratiques améliorées.


Une rétrospective est un excellent moyen d'aborder et, espérons-le, de modifier un tel comportement de manière constructive!
greenSocksRock

1

Je pense que vous avez identifié quelques problèmes:

  1. Il semble que tout code qui est vérifié peut être poussé de manière triviale vers la production par quiconque dispose des droits nécessaires à son contrôle.

Franchement, je pense que cette configuration est simplement folle. Au minimum, les personnes pouvant déclencher manuellement un transfert en production doivent être limitées à l'ensemble des personnes en qui on peut entièrement faire confiance pour examiner et tester en profondeur tous les changements sortants (quel que soit le créateur de ceux-ci) avant de déclencher le transfert. Donner à quiconque ayant la permission d’archiver le code le pouvoir de déclencher arbitrairement une poussée en production, c’est tout simplement demander des problèmes. Non seulement des développeurs négligents et / ou incompétents, mais aussi des développeurs mécontents ou des tiers malveillants qui compromettent l'un de vos comptes.

Et si vous souhaitez déployer chaque modification enregistrée dans un processus à l'aide d'un bouton-poussoir, vous devez disposer d'une suite complète de tests automatisés. Vous devez également appuyer sur le bouton pour les exécuter (et interrompre le déploiement si nécessaire. tous les tests échouent!). Votre processus ne doit pas permettre au code qui n'a même pas été testé superficiellement d'atteindre le point de déploiement initial sur le système de production.

Votre collègue a commis une grosse erreur en enregistrant le code sans le tester au préalable. Votre organisation a commis une erreur bien plus grave en adoptant un processus de déploiement qui permet au code non testé d’atteindre la production, quelles que soient les circonstances.

La première tâche à accomplir consiste donc à réparer le processus de déploiement. Limitez le nombre de personnes pouvant déclencher une incitation à la production ou incorporez une quantité raisonnable de tests dans votre processus de déploiement automatisé, ou les deux.

  1. Il semble que vous n’ayez peut-être pas défini de normes / principes de développement clairement définis.

En particulier, il semble qu'il vous manque une " définition de fait " claire et / ou l'utilisation d'une définition n'incluant pas "le code a été testé" en tant que facteur de déclenchement pour la vérification du code / le déploiement du code en production. Si vous aviez cela, au lieu de simplement indiquer que "le bon code n'est pas produit de cette façon", vous pouvez dire: "ce code ne respecte pas les normes minimales sur lesquelles nous nous sommes tous mis d'accord et il doit être amélioré dans les règles de l'art. futur".

Vous devriez essayer d'établir une culture qui communique clairement ce que l'on attend des développeurs, ainsi que les normes et le niveau de qualité qu'ils sont censés respecter. Configurer une définition de done incluant au moins des tests manuels (ou de préférence des cas de tests automatisés pouvant être exécutés dans le cadre du processus de création / déploiement) vous aidera à cela. Comme peut avoir des conséquences pour briser la construction. Ou des conséquences plus graves pour briser le système de production. Notez que ces deux éléments doivent être réellement indépendants et qu’il devrait être absolument impossible de décomposer simultanément le système de production et le système de production (car les modèles endommagés ne devraient jamais être déployables).


0

Vous devez intégrer un processus d’intégration continue et d’évaluation par les pairs dans l’entreprise. Bitbucket facilite les choses.

Et +1 au serveur de dev suggéré par d'autres utilisateurs.

Ne soyez pas impoli avec lui, cela ne fera que nuire à votre relation de travail.

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.