2009-07-30 18 views
5

frecuencia estoy sshing en un servidor, el cambio a un directorio específico y ejecutar svn-actualizaciónAutomatización de actualización de SVN

estoy pensando que es probable que haya una manera muy fácil de automatizar este, por lo que puedo específica sencilla una subdirectorio cuando ejecuto el script y se iniciará sesión a través de SSH, cd en el directorio correcto y ejecutar svn-update.

¿Es este un trabajo para capistrano o podría un simple script bash hacer el trabajo?

+3

Es un trabajo para hacer. ssh user @ remote 'cd/path/to/project && svn update' – LiraNuna

+0

Gracias, he modificado un poco este script y se actualizará cuando ejecute ./update-devsite :) – Tom

Respuesta

5

Suena como un trabajo para cron. Ejecutar crontab, y añadir una entrada de este modo:

 
#min hour date month day command 
0 * * *  * ssh [email protected] '(cd path/to/working/copy; svn update)' 

Es posible que tenga que configurar ssh passwordless authentication with ssh-agent para que no le pedirá.

EDITAR (por comentarios a continuación):

Asumiendo que tiene privilegios suficientes para ello, ejecute

 
ssh [email protected] crontab -e 

A continuación, añadir una entrada de este modo:

 
#min hour date month day command 
0 * * *  * (cd path/to/working/copy; svn update) 

puede ignorar el parte arriba de la edición, a menos que su servidor no le permita usar cron.

+0

¿Por qué no tener el cron-job correr en la máquina de destino? – innaM

+0

Esa es una muy buena pregunta ... Estaba en una situación similar donde tenía suficientes privilegios en el servidor para ejecutar "svn update", pero privilegios insuficientes para crear mis propios trabajos cron, y simplemente asumí que Tom estaba en una situación similar . Sin embargo, ahora que lo mencionas, es una suposición tonta ... definitivamente sería mejor ejecutar el trabajo cron en la computadora del servidor. –

2

Quizás debería preguntarse por qué está realizando esta acción?

¿Podría un servidor de compilación como CruiseControl o Hudson resolver el caso más general (saber cuándo se ha realizado una confirmación de svn)?

Si es necesario el seguimiento en el servidor SVN específica, y usted tiene acceso a la administración a ella, puede activar un post-commit gancho para el servidor, por ejemplo, que le envíe un correo electrónico en cada confirmación (o sólo en algunas específicas tipos de compromisos).

Ayudaría, si pudiera aclarar el uso de su situación.

0

simple bash script lo hará, agregue el comando svn update a su archivo/etc/profile.

Consulte here for bash login procesamiento de scripts.

Si desea ejecutarlo desde un cuadro diferente (es decir, no iniciar sesión) solo recuerde que ssh no saldrá si hay un proceso en ejecución, por lo que es posible que desee ejecutar la actualización en segundo plano, con todos redirigidos a/dev/null.

Cuestiones relacionadas