2009-02-05 23 views
14

En mi empresa tenemos un grupo de 8 desarrolladores web para nuestro sitio web comercial (escrito completamente en PHP, pero eso no debería importar). Todos en el grupo están trabajando en diferentes proyectos al mismo tiempo y cada vez que terminan con su tarea, la implementan inmediatamente (porque el negocio se está moviendo rápidamente en estos días).¿Cómo despliega un sitio web en sus servidores web?

Actualmente, el desarrollo ocurre en un servidor compartido con todos los desarrolladores trabajando en la misma base de código (usando RCS para "bloquear" los archivos de otros). Cuando se debe realizar la implementación, los archivos modificados se copian en un servidor "intermedio" y luego un script de sincronización carga los archivos a nuestro servidor web principal desde donde se distribuye a los otros 9 servidores.

felizmente, el equipo de desarrollo web nos pidió ayuda con el fin de mejorar el proceso (después de nosotros quejándose por un tiempo) y ahora nuestra idea de la creación de su entorno de desarrollo es el siguiente:

  • Un servidor de dev con los directorios virtuales, de modo que cada uno tiene su propia base de código,
  • SVN (o cualquier otro VCS) para realizar un seguimiento de los cambios
  • un servidor central para las pruebas de la celebración de la última registramos código

La pregunta ahora es: ¿cómo logramos implementar los archivos modificados en el servidor sin cargar accidentalmente errores de otros proyectos? Mi primera idea fue simplemente exportar la última revisión desde el repositorio, pero eso no daría un control total sobre los archivos.

¿Cómo se maneja esta situación? ¿Qué tipo de scripts de implementación tienes en acción?

(Como un reto especial:. La página web ha crecido orgánicamente en los últimos 10 años, por lo que los proyectos no se dividen en pequeños trozos, pero los archivos para una característica específica están repartidos por todo el árbol de directorios)

Respuesta

10

Cassy: obviamente, tiene un largo camino por recorrer antes de que la gestión del código fuente esté en orden, ¡pero parece que está en camino!

Tener sandboxes individuales definitivamente ayudará en las cosas. Luego, asegúrate de que el sitio web SIEMPRE es solo una verificación limpia de una revisión, etiqueta o rama particular de subversión.

Utilizamos git, pero tenemos una configuración similar. Etiquetamos una versión en particular con un número de versión (en git también podemos agregar una descripción a la etiqueta; ¡es bueno para las notas de la versión!) Y luego tenemos una secuencia de comandos que cualquier persona con acceso a "hacer una publicación" puede ejecutar y requiere dos parámetros: qué sistema se va a actualizar (el centro de datos y si estamos actualizando la prueba o el servidor de producción) y luego el número de versión (la etiqueta).

El script usa sudo para luego ejecutar el script de lanzamiento en una cuenta compartida. Comprueba la versión relevante, minimiza javascript y CSS 1, inserta el código en los servidores correspondientes para el entorno y luego reinicia lo que debe reiniciarse. La última línea del script de lanzamiento se conecta a uno de los servidores web y conecta el registro de errores.

En ourwebsites incluimos un comentario html en la parte inferior de cada página con el nombre del servidor actual y la versión - hace que sea fácil ver "¿Qué está pasando ahora?"

1 y un montón de otras tareas de mantenimiento así ...

+0

Esta es una excelente forma de publicación. ¡Bravo! –

0

es necesario buscar en:

  • integración continua
  • Ejecución de pruebas de unidad en el registro de código para comprobar que es libre de errores
  • código potencialmente rechazar si contiene un error
  • Tener construye noche
  • Liberar sólo la última versión que estaba libre de errores

Usted no puede llegar a una solución perfecta, sobre todo, no al principio, pero cuanto más se utilice su solución elegida, la que todos sean más cómodos obtendrá y podrá hacer sugerencias para mejorarlo.

+0

Desafortunadamente no hay forma de determinar si una compilación está libre de errores. Actualmente. no existe una construcción en la forma de trabajar actual ... –

+0

Suena como si estuvieras saltando la pistola: estas son buenas cosas para trabajar, pero tienen que caminar antes de que puedan funcionar. –

0

Comprobamos la estabilidad con ant, todas las noches. Y use el script ant para implementar. Es muy fácil de configurar y usar.

1

Puede probable que el uso de Capistrano a pesar de que es más para el rubí hay algunos articles que describen cómo usarlo para PHP

pienso Phing se puede usar con CVS pero no con SVN (al menos lo que he leído por última vez)

También hay algunos proyectos que imitan a Capistrano, pero escritos en PHP.

de lo contrario existe también una solución hecha a medida: archivos

  1. etiqueta que desea implementar.
  2. archivos de pago y envío usando la etiqueta en un directorio específico
  3. enlace simbólico al directorio a la actual raíz del documento (fácil de revertir a la versión anterior)
+1

Phing puede usar SVN si instala el paquete VersionControl_SVN PEAR. –

+1

Phing funciona perfectamente con SVN como dice Wally, ¡solo lo intenté! – Jorre

2

debe considerar el uso de ramificación y la fusión de proyectos individuales (en la misma base de código), si realizan grandes cambios en la base de código compartida.

usualmente tenemos un entorno de desarrollo local para pruebas (es decir, servidor web localmente) para probar el código no comprometido (no desea confirmar el código que no funciona), pero ese entorno dev podría estar incluso en un servidor separado usando carpetas compartidas.

Sin embargo, el código de compromiso debe implementarse en un servidor de ensayo para probarlo antes de ponerlo en producción.

0

Dije similar answer ayer a otra pregunta. Básicamente, puedes trabajar en sucursales e integrarlo antes de lanzarlo.

Lo más importante que tendrá que darse cuenta es que está tratando con cambios en archivos, en lugar de archivos individuales. Una vez que tenga ramas no hay realmente una versión actual sólo hay versiones con diferentes cambios en.

1

comprobar Naturalmente cabo SVN para el repositorio, Trac para rastrear las cosas, y Apache Ant de implementar.

El proceso básico es administrar en Subversion, rastrear el repositroy y los desarrolladores en Trac y usar los scripts de implementación Ant para enviar su sitio con la configuración necesaria. Ant le permite implementar fácilmente un proyecto en una ubicación específica. (Dev/test/prod) etc.

Cuestiones relacionadas