.net - para - manual de programacion android pdf
¿Cuál es la mejor manera de publicar de forma segura una compilación de publicación de sitio? (8)
Esto parece ser el tipo de cosa que se puede hacer fácilmente con SFTP. Eche un vistazo a PuTTY (psftp y pscp) o WinSCP para Windows, o rsync y OpenSSH para Unixes.
Entonces, en tu experiencia, ¿cuál es la mejor manera? ¿Existe una forma segura que también sea programable / activable en una herramienta de automatización de compilación?
Editar: Debo mencionar que esto es windows / .net y voy a implementarlo en iis6
Haga una copia de su directorio de sitio en vivo, use rsync para actualizar esa copia con su última versión, luego cambie el nombre de los directorios activos y actualizados para 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
¡Viola!
Editar: @Ted Percival - Esa es una buena idea. Ni siquiera sabía sobre "set -e". Script actualizado Editar: actualizado de nuevo a sugerencia de Ted (aunque creo que todavía funcionaría si de alguna manera fallara el comando cp, y si cp falla probablemente tengas problemas más serios).
Para algunos proyectos utilizo Capistrano para enviar a vivir. Está construido sobre ruby y hace que implementar script sea muy fácil y usa ssh.
En otros proyectos, tengo una pequeña aplicación de implementación que usa bash para hacer una exportación de svn a un directorio temporal y luego sincronizarla al servidor en vivo. Puede hacer que rsync use ssh.
Yo prefiero mucho el método de Capistrano, incluso si su proyecto no está en ruby / rails.
Siempre puede escribir una pequeña aplicación cliente / servidor que cifra en la fuente, empuja los archivos y luego descifra en el destino. Eso es un poco de trabajo, pero probablemente una cantidad trivial. Y es programable siempre que su herramienta de automatización sea compatible con la ejecución de algo en el sistema de archivos (lo que creo que todos hacen).
El único inconveniente es que es posible que no pueda obtener mensajes de error significativos sobre fallas en su entorno de integración sin un poco más de trabajo por su parte (aunque dependiendo de su configuración, esto podría ser tan simple como enviar mensajes de error a stdout).
hm, por aquí usamos un "servidor" de prueba con fines de prueba en el entorno en vivo (en realidad, es un host virtual apache en el servidor de producción) y araxis merge (una herramienta de comparación de archivos línea por línea muy inteligente) para sincronizar el desarrollo y puesta en escena.
una vez que se prueba, simplemente; reemplace los archivos en la webroot de producción :)
/ mp
@Neall, agregaría un set -e
en la segunda línea, porque no desea que el sitio en vivo sea reemplazado si falla la rsync
por algún motivo. set -e
hace que el script salga si alguno de sus comandos falla.
Editar: El set -e
debería ser lo primero en el guión, justo después de #!/bin/bash
.
En un trabajo independiente que hice, establecimos tres entornos separados.
- Un servidor Dev, que ejecutó construcciones continúa utilizando CruiseControl. Cualquier check-in desencadenaría una compilación. La prueba de QA se hizo aquí.
- Un servidor de prueba, en el que se realizaron las pruebas de aceptación del usuario.
- Producción.
El flujo de trabajo fue el siguiente:
- El desarrollador verifica los cambios en SourceControl.
- CruiseControl construye y despliega la construcción en Dev.
- Dev es QA''ed
- Después de pasar QA, se ejecuta un script robocopy que implementa Dev build para Test.
- La prueba es UAT''ed
- Después de que pasa la prueba, se ejecuta una secuencia de comandos robocopy que implementa Prueba en PRD.
Voy a secundar la recomendación para Capistrano , aunque si estás buscando una solución basada en GUI, puedes probar la interfaz de Webistrano . Semántica limpia, basada en ssh, sana de implementación y retrotracción, y fácil creación de scripts y extensibilidad a través de ruby.