Je suis choqué - et même consterné - par le nombre de réponses ici disant "ne mettez pas à jour à moins que vous ne deviez". Je l'ai fait, et même si c'est plus facile à court terme, ça brûle comme un enfer à long terme. Les mises à jour plus fréquentes et plus petites sont beaucoup, beaucoup plus faciles à gérer que les grandes mises à jour occasionnelles, et vous bénéficiez plus tôt de nouvelles fonctionnalités, de corrections de bogues, etc.
Je n'achète pas cette idée que les changements de bibliothèque sont en quelque sorte plus difficiles à tester que les changements de code. C'est la même chose - vous modifiez la base de code, et vous devez la valider avant de vous engager, et plus profondément avant de publier. Mais vous devez déjà avoir des processus pour ce faire, puisque vous faites des changements de code!
Si vous travaillez dans des itérations, d'une durée de deux à quatre semaines, je suggère de faire de la mise à jour des bibliothèques une fois par tâche d'itération, à faire dès que possible après le début, lorsque les choses sont un peu plus détendues qu'avant une itération délai, et le projet a plus de capacité à absorber le changement. Demandez à quelqu'un (ou à une paire si vous faites de la programmation par paire) de s'asseoir, regardez quelles bibliothèques ont été mises à jour et essayez de les intégrer et d'exécuter une reconstruction et un test. Prévoyez une demi-journée à une journée pour chaque itération, peut-être. Si les choses fonctionnent, vérifiez les modifications (je suppose que vous gardez les bibliothèques sous contrôle de code source, comme nous le faisons; je ne sais pas comment vous propageriez le changement de manière contrôlée sinon). Ce sera évidemment beaucoup plus facile si vous avez des tests automatisés que si les tests sont entièrement manuels.
Maintenant, la question est de savoir ce que vous faites si une mise à jour casse des choses - passez-vous du temps à la réparer ou à la laisser de côté? Je suggère de pencher vers ce dernier; si elle peut être corrigée en une heure, faites-le, mais si une mise à jour nécessite un travail important à intégrer, alors augmentez-la comme sa propre tâche de développement, à estimer, prioriser et planifier comme n'importe quelle autre. Les chances sont qu'à moins que cela n'apporte une correction ou une amélioration très cruciale, la priorité sera faible et vous n'y arriverez jamais. Mais vous ne savez jamais, au moment où le prochain jour de mise à jour itérative se déroulera, le problème pourrait s'être résolu; même si ce n'est pas le cas, au moins vous savez maintenant qu'il y a un barrage routier sur le chemin de mise à jour, et il ne vous surprendra pas.
Si vous ne faites pas d'itérations de cette longueur, je mettrais en place une sorte de calendrier autonome pour les mises à jour - pas plus d'une fois par mois. Y a-t-il un autre rythme de projet auquel vous pourriez le lier, comme un examen mensuel de l'état d'avancement ou une réunion du conseil d'architecture? Payday? Soirée pizza? Pleine lune? Quoi qu'il en soit, vous devez trouver quelque chose de beaucoup plus court qu'un cycle de publication traditionnel, car essayer de tout mettre à jour en une fois tous les 6 à 18 mois va être douloureux et démoralisant.
Inutile de dire que si vous effectuez des branches de stabilisation avant les versions, vous ne leur appliquerez pas cette stratégie. Là, vous ne mettriez à jour les bibliothèques que pour obtenir des correctifs critiques.