web-dev-qa-db-fra.com

Inconvénients d'un enregistrement sécurisé dans TFS

J'ai toujours travaillé avec la construction d'intégration continue (CI) dans TFS. Cependant, dans mon dernier projet, nous avons commencé à utiliser le déclencheur d'enregistrement sécurisé.

Y a-t-il des inconvénients lors de l'utilisation d'un enregistrement sécurisé? Parce que si cela empêche l'équipe de vérifier le code cassé, à quoi sert un déclencheur CI?

25
Danilo Ruziska

L'enregistrement sécurisé est une forme de build d'intégration continue. Dans TFS, il crée un shelveset contenant le code en cours de validation, puis exécute une génération de ce code. Ce n'est que si ce code se construit correctement et que tous les tests unitaires configurés réussissent que le code est réellement validé.

L'intégration continue est différente - dans CI, le code est validé quel que soit le résultat de la génération. Si une génération de CI échoue en raison de la validation d'un mauvais code, le code est toujours là, dans le contrôle de code source, accessible à tous.

Maintenant, pour la partie basée sur l'opinion: l'enregistrement sécurisé est idéal si vous avez un grand nombre de développeurs de différents niveaux de compétence/expérience, car il empêche le code cassé d'entrer dans le contrôle de code source. L'inconvénient est qu'il augmente le temps entre la validation du code et la disponibilité du code pour les autres, et peut ainsi conduire à des situations où les gens sont assis autour de leurs pouces en attendant que la construction se termine avec succès.

Je vous recommande d'utiliser l'enregistrement sécurisé comme point d'arrêt. Si vous avez une tonne de construction d'archivage fermée qui échoue, alors il fait son travail et empêche le mauvais code d'être validé. Si, au fil du temps, l'équipe arrive à maturité et que les versions d'enregistrement bloquées échouent rarement, cela sert moins à rien et devrait être basculé vers une intégration continue et corriger les versions défaillantes au fur et à mesure, au lieu de retarder chaque validation dans le cas où il y aurait un problème. .

40
Daniel Mann

Les enregistrements bloqués rendent l'engagement plus difficile et plus lent. C'est généralement une chose mauvaise, car:

  • Dans TDD, les membres devraient pouvoir pousser les validations avec des tests qui échouent
  • Signaler des bogues comme échec des tests est super utile
  • Lors de la coopération sur une branche WIP (travaux en cours), les membres doivent être en mesure de pousser les modifications sales pour les rendre rapidement disponibles pour les autres
  • Lorsque vous travaillez sur un grand changement, il peut être utile de laisser les autres membres revoir le travail inachevé avant d'investir le temps de terminer
  • Beaucoup de gens aiment commettre régulièrement des travaux incomplets comme une forme d'instantané/sauvegarde
  • commettre un travail incomplet est excellent lorsque vous passez fréquemment d'une branche à une autre (le stockage d'une aide limitée en particulier pour les nouveaux fichiers)
  • L'assurance qualité ne devrait pas être limitée dans le temps, mais l'engagement ne devrait pas prendre longtemps
  • Le contrôle qualité du code devrait se produire dans un environnement propre de toute façon, l'environnement local donné n'est probablement pas aussi vierge qu'un serveur CI
  • De même le QA doit souvent se faire avec une matrice d'environnements (différentes versions du compilateur, différents navigateurs, différents OS, ...), les coûts de mise en place sont mieux investis dans un CI central

Donc, les scénarios où la vérification fermée est correcte:

  • Votre VCS rend la création de succursales difficile, ou votre entreprise n'autorise pas la création de succursales
  • Le projet est minuscule
  • Un seul développeur
  • Aucun CI présent
  • Seules des branches spécifiques à longue durée de vie sont protégées par les portes (mais ce n'est pas une alternative au CI)
3
tkruse