2010-11-15 80 views
0

J'ai un serveur dédié qui a l'ensemble Lamp-Stack, SVN et Hudson installé. Je voudrais créer un job freestyle Hudson, qui récupère le dernier code source de mon référentiel SVN et le place dans mon dossier/var/www/myWebApp.Hudson Shellscript pour exporter Sourcecode du référentiel SVN dans le dossier de production

A quoi le script shell doit-il ressembler?

EDIT

Lorsque je viens d'utiliser

svn export myRepoURL myWebAppFolder 

je reçois un Erro, indiquant:

Started by user anonymous 
Reverting http://myIpAdress/repos 
Updating http://myIpAdress/repos 
At revision 2 
no change for http://myIpAdress/repos since the previous build 
[workspace] $ /bin/sh -xe /tmp/hudson7864414135197533508.sh 
+ svn export http://myIpAdress/repos/myRepo 
/var/www/myWebApp 
Authentication realm: <http://myIpAdress> Subversion Repository 
Password for 'hudson': Authentication realm: <http://myIpAdress> Subversion Repository 
Username: svn: PROPFIND request failed on '/repos/myRepo' 
svn: PROPFIND of '/repos/myRepo': authorization failed (http://myIpAdress) 
Finished: FAILURE 

Répondre

3

Il devrait ressembler à quelque chose comme ci-dessous

svn export [votre URL svn]/var/www/myWebApp

Do me faire savoir si je suis absent quelque chose ici?

+0

+1 pour l'utilisation de la commande svn export –

+0

Merci beaucoup, les upvots indiquent que c'est la bonne solution. Mais quand j'utilise votre code, j'ai une erreur. répondez s'il vous plaît à mon édition. –

+0

L'erreur est essentiellement parce que lors de l'exécution de la commande d'exportation, svn recherche un nom d'utilisateur et un mot de passe. Subversion a la capacité de stocker le mot de passe localement lors de sa première opération. Donc, pour échapper à cela, vous pouvez faire un checkout factice (ou une opération similaire) qui fera stocker subversion les informations d'identification localement. –

0

écrire un script pour copier (en utilisant la commande 'cp') tout des fichiers de l'espace de travail du travail à l'emplacement que vous voulez. Vous devez utiliser la variable d'environnement 'WORKSPACE' fournie par Hudson, qui vous fournit le chemin d'accès à l'espace de travail du travail. Le script sera probablement capable de fonctionner dans n'importe quel shell que vous utilisez.

1

Je voudrais juste courir une copie. Assurez-vous de ne pas copier les dossiers .svn et d'autres fichiers qui ne devraient pas être accessibles du monde extérieur.

J'ai également recherché la commande svn export et il semble encore mieux. Si votre travail est configuré pour la vérification à partir de svn, vous pouvez également exécuter svn export ${WORKSPACE}/* /var/www/myWebApp. Cela ne copiera que les fichiers qui sont sous le contrôle de la source. Cependant, il vous donnera la possibilité de modifier certaines configurations (qui sont importantes pour l'environnement que vous déployez également) avant de le déployer sur votre cible.

Très important dans tous les cas, trouver un moyen pour vérifier si elle a réussi. Donc, vérifiez au moins le code d'erreur de toutes les commandes que vous exécutez.

0

Je pense que le svn export précédemment mentionné est la bonne solution, mais si vous allez faire une copie, je recommande quelque chose comme rsync ou tar sur un cp nu. Les deux vous permettront d'exclure certains fichiers ou répertoires, reportez-vous à l'option de ligne de commande --exclude. (Google pour tar exclude svn vous pointera dans la bonne direction.) Rsync's advantage est que cela va seulement copier les changements, de sorte que le déploiement est beaucoup plus rapide lorsque seulement un petit nombre de fichiers ont changé.

Autres choses à considérer:

  • Vous devriez avoir un plan pour la suppression de fichiers qui ne font plus partie du dépôt.
  • Vous devriez considérer comment vous allez gérer la configuration de votre application Web. Je ne recommande pas de vérifier dans une configuration de déploiement à subversion, surtout si d'autres développeurs doivent apporter des modifications à cette configuration afin de tester localement. Il est trop facile pour un changement de configuration accidentel de subversion de casser votre système de production.