¿Mejores prácticas para administrar la implementación de código desde el desarrollador hasta los servidores de producción?

8

Espero encontrar una herramienta o método fácil, que permita administrar nuestro despliegue de código.

Estas son las características que espero que tenga esta solución:

  1. Ya sea un archivo basado en web o por lotes, que proporciona una lista de archivos, se comunicará con nuestro servidor de producción para hacer una copia de seguridad de esos archivos en diferentes carpetas, comprimirlos y guardarlos en una carpeta de código de respaldo.

  2. Luego registra el nombre, la fecha / hora y el propósito de la implementación.

  3. Luego envía los archivos a su lugar adecuado en el servidor de producción.

No quiero una interfaz demasiado compleja para hacer la implementación, porque entonces es posible que nunca la usen.

¿O es lo que estoy pidiendo demasiado poco realista?

Solo sé que mi autodisciplina no es perfecta, y prefiero tener una herramienta en la que pueda confiar para hacer lo que se debe hacer, luego mi propia memoria de los pasos exactos que tengo que tomar cada vez.

¿Cómo, chicos, se aseguran de que todo se implemente correctamente y tengan una reversión fácil en caso de errores?

crosenblum
fuente
Subversion y un enlace post commit? Haga que el servidor tenga una copia de trabajo, comprométase con el repositorio, haga que el post commit se enganche para actualizar la copia de trabajo del servidor.
Vitor Py
No estamos usando subversión, algo llamado QVCS por Qumasoft.
crosenblum
¿Pueden sugerir algo que no se base en que cambiemos el control de fuente que usamos?
crosenblum
Con Capistrano puede escribir su propio controlador QVCS.
Htbaa
Y pido disculpas, si no dejé esto claro, necesito una solución en Windows OS.
crosenblum

Respuestas:

2

Todo esto puede hacerse mediante un archivo por lotes. Los siguientes son los pasos básicos que deben realizarse en el archivo por lotes:

  1. Obtener la fecha y hora actual en una variable.
  2. Haga copias del directorio de producción en carpetas con la fecha y hora actual. Comprime la carpeta si quieres.
  3. Replicar la carpeta desplegable de compilación en los directorios de producción. También puede omitir algunos archivos que no desea sobrescribir (como web.config). Tanto xcopy como robocopy permiten omitir archivos.

Excepto el primer paso, los otros dos pasos son operaciones de línea de comando muy básicas. Con respecto al primero, el siguiente código muestra cómo obtener un directorio con fecha y hora:

for /f "tokens=1-3 delims=/ " %%A in ("%DATE%") DO (
  set DATESTR=%%C%%A%%B
)

for /f "tokens=1-3 delims=:." %%F in ("%TIME%") DO (
  set TIMESTR=%%F%%G%%H
)

set CURRENTDT=%DATESTR%T%TIMESTR%

:: now you can use the date time in a folder name:
xcopy /e \\production1\site1 \\backup\site1\backup-%CURRENTDT%\
Codismo
fuente
1

Suena como un trabajo para Capistrano con el complemento Railsless-Deploy .

Htbaa
fuente
Yo también iba a decir Capistrano. Por lo menos, mirar lo que Capistrano le ofrece es una excelente manera de tener una idea de lo que está disponible para usted.
glenatron
¿Capistrano es solo para Linux?
crosenblum
Ruby se ejecuta en Windows, pero hace 1,5 años no pude hacerlo funcionar en Windows. Entonces, en su lugar, descargué la edición gratuita del servidor VMWare e instalé un servidor virtual Ubuntu y lo configuré para Capistrano. Quizás el soporte de Windows ha mejorado ahora.
Htbaa
0

Estoy bastante seguro de que podría hacer esto con TFS, si está trabajando con la pila de desarrollo de MS

Muad'Dib
fuente
¿Qué es el TFS? Cualquier enlace, descripciones?
crosenblum
@crosenblum TFS es Microsoft Team Foundation Server --su reemplazo mejorado para Source Safe
Muad'Dib