Cuál es la mejor forma de publicar de forma segura un puesto de sitio en construcción?

StackOverflow https://stackoverflow.com/questions/18224

Pregunta

Así, en su experiencia, ¿cuál es la mejor manera?¿Hay una forma segura de que también secuencias de comandos/triggerable en construir una herramienta de automatización?

Editar:Debo mencionar que esta es windows/.net y voy a implementar en iis6

¿Fue útil?

Solución

Para algunos proyectos en los que el uso de Capistrano para empujar a vivir.Está construido en la parte superior de ruby y hace que implementar la escritura de guiones super fácil y utiliza ssh.

En otros proyectos que tengo una pequeña implementar la aplicación que utiliza bash para hacer un svn exportar a un directorio temporal y, a continuación, rsync sobre el servidor en vivo.Usted puede hacer rsync uso de ssh.

Mucho me prefiere el Capistrano método, incluso si el proyecto no está en ruby/rails.

Otros consejos

Este parece ser el tipo de cosa que podría hacerse fácilmente con SFTP.Echa un vistazo a La masilla (psftp y pscp) o WinSCP para Windows, o rsync y OpenSSH para los sistemas Unix.

@"Neall, me gustaría añadir un set -e en la segunda línea, porque no quiero que el sitio en vivo de ser reemplazado si el rsync falla por cualquier razón. set -e causas de la secuencia de comandos para salir si cualquiera de sus comandos fallar.

Editar:El set -e debe ser la primera cosa en la secuencia de comandos, haga después #!/bin/bash.

Hacer una copia de tu sitio en el directorio, utilice rsync para actualizar una copia con su última versión, a continuación, cambie el nombre de los vivos y actualizados los directorios de modo que la versión actualizada está ahora en vivo.

En bash:

#!/bin/bash

set -e
cp -R /var/livesite /var/newversion
rsync user@devserver:/var/readytogolive /var/newversion
mv /var/livesite /var/oldlivesite
mv /var/newversion /var/livesite

La Viola!

Editar:@Ted Percival - Esa es una buena idea.Yo ni siquiera sabía acerca de "set-e".Actualizado el script.Editar:actualizado de nuevo en Ted sugerencia (aunque yo creo que todavía funciona si de alguna manera el comando cp fallado, y si cp falla probablemente tiene problemas más serios.)

Voy a segundo de la recomendación para Capistrano, aunque si usted está buscando para una interfaz gráfica de usuario basada en la solución de usted podría tratar de la Webistrano front-end.Limpia, basada en ssh, sano, la implementación y la semántica de reversión y fácil de secuencias de comandos y extensibilidad a través de rubí.

Siempre se puede escribir una pequeña aplicación de cliente/servidor que cifra en la fuente, empuja a los archivos y, a continuación, se descifra en el lugar de destino.Eso es un poco de trabajo, pero probablemente una mínima cantidad.Y es codificable tan largo como su herramienta de automatización apoya la ejecución de algo en el sistema de archivos (que creo que todos lo hacemos).

La única desventaja es que usted no puede ser capaz de obtener significativos mensajes de error en caso de error en su entorno de integración sin un poco de más trabajo de su parte (aunque dependiendo de su configuración, esto puede ser tan simple como el envío de mensajes de error a stdout).

hm, por aquí usamos una puesta en escena de "servidor" para propósitos de prueba en el entorno real (en realidad, se trata de un host virtual en apache en el servidor de producción) y araxis merge (una muy inteligente línea-por-línea herramienta de comparación de archivos) para sincronizar el desarrollo y la puesta en escena.

una vez probado, simplemente;reemplace los archivos en la producción de webroot :)

/mp

En un trabajo freelance que hice, hemos creado tres separar los ambientes.

  • Un Dev server, que corrió continúa construye utilizando CruiseControl.Cualquier check-in se pudiese construir.Pruebas de control de calidad que se hizo aquí.
  • Un Servidor de Prueba, que las pruebas de aceptación del usuario fue hecho en.
  • De producción.

El flujo de trabajo fue la siguiente:

  1. Desarrollador de cheques en los cambios a SourceControl.
  2. CruiseControl construye y despliega en el Dev.
  3. Dev es QA ed
  4. Después de pasar el control de calidad de un robocopy script es ejecutado que implementa el Dev construir a Prueba.
  5. La prueba es UAT ed
  6. Después de la Prueba pasa, un robocopy secuencia de comandos que se corrió en que se despliega la Prueba para el PRD.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top