subversion - tags en svn
Empujando desde la subversión al servidor web (7)
¿Has intentado utilizar nuestro despliegue FTP en Beanstalk? También tenemos enlaces disponibles, lo que significa que puedes hacer ping a una URL en cada commit para codificar tus propias cosas.
http://help.beanstalkapp.com/articles/17-deployment-and-releases
Hace mucho tiempo traté de resolver mi sistema entre local, servidor web y subversión. Tengo una buena explicación sobre esta pregunta .
Desafortunadamente llegué a un bloqueo de ruta en general empujando desde SVN a una parte del servidor web y nunca volví a visitar. Todos mis proyectos son solo, así que soy el único que los desarrolla y, a menudo, soy el único usuario. Así que he podido salirse con la suya escribiendo directamente en el servidor en vivo la mayor parte del tiempo.
Para 2009 quiero romper ese mal hábito y hacer las cosas de la manera correcta. Tengo acceso SSH a mi servidor web (puedo iniciar sesión y explorar los archivos) pero realmente no sé qué hacer para poder sacar los últimos archivos de SVN al servidor.
He buscado en Google mis dedos hasta el hueso, pero todo lo que encuentro requiere un conjunto de conocimientos que aún no tengo.
Realmente, realmente agradecería las instrucciones paso a paso de cómo impulsar automáticamente la versión más reciente de mi código desde un repositorio SVN a un servidor web en vivo. FYI Actualmente estoy usando Beanstalk para el alojamiento de Subversion, pero estoy totalmente dispuesto a cambiar eso si alguien tiene una mejor sugerencia.
Gracias
A menos que su compañía de hosting le haya dado acceso a cron(1)
o shell, será difícil ya que svn, un VCS centralizado, no tiene una manera de enviar cosas a un directorio de trabajo, se supone que usted debe svn update
.
Varias formas de hacer lo que quiera, según los recursos mencionados anteriormente disponibles:
- definir una entrada
crontab(5)
que hagacd $WEBSITE && svn update
- use ssh para conectarse a su sitio web y haga el mismo comando. El
ssh
puede automatizarse mediante una entrada decrontab
en su lado. - tenga un cgi especial en su sitio web, con la esperanza de que esté protegido por una contraseña, que pueda ejecutarse periódicamente (desde
cron
de su lado) que haga el mismo comando.
La mejor forma de hacerlo será mudarme a un VCS descentralizado (como Mercurial o git), pero ese es un proyecto mucho más grande.
Gestión de la liberación
puede crear un trabajo / lote que exporta el svn a una carpeta local. después de la exportación, puede cargarlo con rsync.
el trabajo puede ejecutarse automáticamente por los ganchos svn.
También puede usar métodos de mtod, pero tenga en cuenta que usar un checkout en el servidor es un riesgo de seguridad si alguien puede acceder a las carpetas .svn. pueden acceder al código php y ver contraseñas o errores.
Hace algún tiempo tuve una question similar, sin embargo, no tenía acceso SSH a mi servidor, así que estaba bastante limitado en mis opciones.
Dependiendo del tamaño de su proyecto, puede considerar no hacer una exportación. ¡En mi caso, el proyecto tuvo más de un montón de datos! No es práctico porque con una exportación necesita exportar todos los archivos una y otra vez. Si solo tiene una mano llena de archivos, podría ser diferente. Además, hacer una exportación en su máquina local significa que la exportación necesita descargar primero el archivo y luego subirlo a su servidor, lo que es como un desperdicio de ancho de banda.
También tenga en cuenta que hacer una exportación SVN no actualiza las bases de datos. Por ejemplo, mientras desarrolla su sitio, su base de datos probablemente cambiará algunas veces. Con solo una exportación SVN, aún necesita volver a importar manualmente la base de datos en el servidor.
Lo que sugiero es que escriba un script que coloque en el servidor. Puede hacer que este script sea tan elaborado como desee, pero el script barebone haría una ''actualización'' en una versión desprotegida de su sitio, realiza una exportación de su base de datos en una carpeta temporal (su base de datos también está ubicada, por supuesto) bajo control de versión) y reimporta la base de datos (o la combina, lo que sea que necesite hacer). Con un solo comando, puede implementar su sitio. Una y otra y otra vez.
Existen herramientas que pueden ayudarlo con este tipo de automatización, como CruiseControl y Capistrano .
Si tiene acceso a SSH, puede hacer:
svn export [url a repo] [directorio web]
Exportar significará que no obtendrá el equipaje .svn que viene con una copia de trabajo.
Usted dice ''empujar automáticamente''. Esto se puede lograr con un gancho post-commit. He sido un equipo de desarrollo de un solo hombre y uso una configuración similar para el desarrollo de PHP:
Pila de VPS LAMP con mod_dav_svn de Apache que maneja deberes de SVN que hospedan una versión de ''ensayo'' del sitio. La versión ''staging'' del sitio era en realidad una copia de trabajo, recién verificada localmente, en un directorio que podría servir a Apache desde
máquina local de VMware que ejecuta NetBeans y la pila LAMP, con xdebug instalado para depurar PHP
Mi flujo de trabajo fue así:
Verifique una copia de trabajo de mi VPS a mi máquina virtual VMware Obtenga un volcado de base de datos a través de PhpMyAdmin desde VPS e importe en MySQL en la máquina virtual Dev My Ass Off, todo localmente al final o día, exporte mi base de datos y cárguela a MySQL en el VPS compromete mis cambios al VPS
El quid fue el enganche post commit - todo lo que es, es un archivo de texto en SVN que se analiza después de cada evento de confirmación. Lo tiene que llamar un script de shell y ese script de shell realiza una ''svn update'' para actualizar la copia de trabajo que es su sitio de ensayo que Apache está publicando.
Supongo que podría fácilmente hacer que el script de shell hiciera una exportación SVN a su directorio de preparación, pero eso podría demorar un tiempo en ejecutarse, mientras que una actualización de una copia de trabajo solo genera cambios.
Estas notas son bastante jodidas, pero son mi hoja de trucos personal que uso al configurar algo como esto:
http://random.siliconrockstar.com/dev_ShellScriptingAndNixAdmin/SVN.txt
Si lo desea, también tengo una copia de la máquina virtual con NetBeans configurados que uso para el desarrollo, solía entregarlos a los desarrolladores junior. Si quieres una copia solo PM.
simplemente - ingrese a su máquina servidor y revise el contenido del repositorio. Esto debe hacerse solo una vez.
$ svn checkout [http|svn|whatever_you_got_there]://{your_svn_repo} {checkout_directory}
Cada vez que necesite actualizar su copia de trabajo con la más reciente, realice la update
:
$ cd {checkout_directory}
$ svn update