Je connais quelques façons de déployer des sites Web:
Je peux voir des avantages et des inconvénients de chacun. Existe-t-il un consensus sur le moyen le plus efficace de déployer de nouveaux sites OR modifications de site?
Ce qui a le mieux fonctionné pour nous sur Stack Overflow (et répond point 2 du test de Joel ) est une solution intégration continue , permettant de construire en un seul clic nos sites de production, comme ainsi que des versions automatisées de notre niveau développeur lors de l’enregistrement du nouveau code.
Nous utilisons la version .NET de CruiseControl , avec le nom passionnant .. CruiseControl.NET :)
Certains des caractéristiques principales incluent:
- Intégration avec une variété de systèmes de contrôle de source
- Intégration avec d'autres outils externes, tels que NAnt et Visual Studio
- Peut construire plusieurs projets sur un serveur
- Gestion et reporting à distance
Nous sommes extrêmement satisfaits de ce logiciel open source et le recommandons à toute équipe souhaitant rationaliser leur processus de construction.
Je préfère les déploiements automatisés et reproductibles. Vous voudrez certainement commencer avec une balise de contrôle de source afin de savoir exactement ce que vous avez déployé et de pouvoir le redéployer à tout moment. Ensuite, utilisez des scripts pour envoyer cela au serveur, quelque chose comme Capistrano, ou juste un script bash fait maison ou quelque chose du genre.
Pour les sites qui utilisent du code compilé, si les serveurs de test correspondent aux serveurs de production, il est probablement préférable de compiler le code une fois et de transférer cette même version compilée en production une fois qu'elle a été testée.
J'utilise des scripts personnalisés. Pour les sites Web statiques (basés sur HTML), j'utilise des répertoires doubles avec les versions nouvelles et installées, puis le script exécute un diff
récursif sur les versions nouvelles et installées et télécharge uniquement les fichiers qui ont été modifiés.
J'utilise Git avec quelques crochets personnalisés pour le déploiement. Cela a même l’avantage de pouvoir exécuter plusieurs succursales pour les sites dev/test/beta/production et de réaliser quelques CI. Pour les patchs urgents, git permet toujours de sélectionner des commits spécifiques d’une branche à l’autre.