2 votes

Déploiement d'une application web dans un environnement de production avec subversion.

Nous construisons une application web et sommes presque prêts à commencer le déploiement sur un serveur de production. Nous utilisons Subversion pour le contrôle de version et je me demande maintenant quelle serait la meilleure façon de déployer vers le stade de développement et plus tard vers la production.

Actuellement, nous développons et testons avec 2 personnes localement sur nos propres machines et commit à notre serveur staging qui est notre serveur SVN.

Je sais qu'il existe un crochet post-commit.tmpl qui peut exécuter un commit ? Est-ce que quelqu'un connaît une bonne ressource pour ce genre de commit.

Tous les conseils sont les bienvenus ! Nous recherchons un moyen facile de déployer et éventuellement de revenir à une version antérieure de notre code.

4voto

Bell Points 5881

Subversion est un système de contrôle de version et non un système de déploiement. Ne l'utilisez pas. Puisque vous faites tout manuellement en ce moment (construction et test), je déploierais également manuellement, cela peut également signifier que vous écrivez quelques scripts qui vérifient la bonne version à partir de Subversion et la déploient dans l'environnement que vous voulez.

Si vous voulez automatiser davantage, je vous recommande un serveur CI ou une sorte de solution de déploiement pour cela. Nous commençons à utiliser Hudson pour les tests et le déploiement (au moins pour l'environnement sandbox). Nous n'avons pas l'intention de l'utiliser pour la production. Parce que nous n'avons pas encore vérifié le plugin de promotion. Lors de mes recherches sur les serveurs CI, j'ai remarqué que les systèmes commerciaux offrent généralement un meilleur support pour la gestion des versions.

2voto

dpavlin Points 609

Il existe plusieurs façons de procéder :

Utiliser un serveur de construction

J'ai entendu parler d'équipes utilisant CCNET.net ou FinalBuilder Server pour cela. En gros, ce qui se passe, c'est que le build script a du code pour pousser le dernier build, chaque fois que quelqu'un fait un check in. Je ne recommanderais pas cela pour la production cependant. Cela devrait fonctionner correctement pour un environnement de staging cependant.

Je ne suis pas très familier avec les serveurs de construction sous Linux, mais je sais qu'il en existe quelques-uns. Il y a aussi Ant, et même Make scripts qui pourraient être utilisés pour cela.

Mettez une copie de travail sur le serveur d'essai

Il suffit de faire un check out, et d'affecter le bon dossier à la racine de l'application web. Un membre de l'équipe devra mettre à jour manuellement cette copie de travail, mais cela vous donne la possibilité de revenir à une version antérieure si nécessaire.

Avertissements

Vous devez vous assurer que vous excluez les dossiers .svn lorsque vous pointez le site web vers la copie de travail.

Je ne recommanderais pas d'utiliser un hook Subversion script pour cela. Vous pouvez à peu près utiliser n'importe quel moteur de script disponible sous Linux pour faire des <script script post. J'ai tapé "post-script hook script linux" dans Google, et j'ai eu quelques bons résultats.

2voto

Alex Holst Points 2180

Cette question est en fait une question sur les procédures (et les outils) de libération, plutôt que sur l'administration du système, mais voici ma meilleure réponse :

Toute version récente de Subversion prend parfaitement en charge vos besoins de gestion de configuration, mais, comme Peter l'a dit, ce n'est pas un outil de déploiement. Une option serait d'intégrer le déploiement dans votre infrastructure de construction régulière (par exemple 'make deploy') et de gérer vos règles de déploiement avec votre code.

Du point de vue de la gestion de la configuration, vous devez garder la trace de tout ce dont votre application a besoin pour fonctionner, y compris le code, les bibliothèques externes (dans des versions spécifiques), le serveur web, les versions du système d'exploitation, etc. make deploy doit s'assurer que tous ces éléments existent avant de tenter de déployer une nouvelle version.

Des outils comme Hudson peuvent également gérer le déploiement pour vous, mais vous devrez toujours lui dire ce qu'il doit faire et je préfère simplement garder mes procédures de gestion de la configuration aussi simples que possible. Un exemple serait de laisser Hudson invoquer "make deploy" mais de ne stocker aucune autre information dans Hudson que vous auriez besoin de récupérer pour la recréer sur d'autres machines.

À quelle fréquence allez-vous faire des versions qui doivent être déployées ? J'envisagerais quelque chose du type taguer votre application web dans tags/ et avoir un mécanisme post-commit qui sait que tags/webapp-1.0.4 doit être exporté vers votre webroot. Si votre application web est grande, considérez que le hook dépose un fichier spécial dans /tmp qu'un cronjob vérifie toutes les minutes et prend les mesures appropriées.

Si vous souhaitez une réponse plus détaillée, veuillez préciser votre calendrier de publication, la taille de votre base de code, le choix du langage, l'environnement du système d'exploitation et les dépendances.

0voto

wallyqs Points 1056

Nous utilisons également Subversion pour contrôler nos sources, mais nous utilisons Webistrano pour déployer depuis Subversion vers nos serveurs.

Webistrano est une interface web pour Capistrano un outil de déploiement et d'automatisation populaire dans la communauté Ruby. Il vous permet de décrire votre processus de déploiement en scripts Ruby (la plupart des fonctionnalités sont intégrées). Il est assez flexible et facile à comprendre. Le déploiement et le retour en arrière des déploiements sont faciles, ainsi que l'accrochage d'autres tâches qui doivent être effectuées, comme le vidage des caches ou la migration des bases de données.

0voto

Aneesh Points 101

J'ai pu le faire en créant une nouvelle post-commit avec les deux lignes suivantes :

#!/bin/bash
ssh -i /path/to/key-file  -pSSH-PORT user@hostname svn update /path/to/project/folder/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X