He leído muchas de las preguntas aquí relacionadas con este tema, pero realmente no puedo encontrar ningún buen consejo que se adapte a nuestra situación. Heredé este flujo de trabajo, y estoy tratando de hacerlo mejor.Flujo de trabajo de desarrollo web SVN
Nuestra configuración
- base de código PHP (Kohana en particular)
- potencias de base código de ~ 60 sitios, cada uno con plantillas únicas (es decir, 60 QA [garantía de calidad] dominios también)
- cada sitio tiene registros A para diferentes activos y recursos (es decir, 8 registros A para cada dominio)
- 3 desarrolladores
- 3 diseñadores
- los desarrolladores tienen la imagen de VMware del servidor de producción para el desarrollo local
- diseñadores no
- servidor de desarrollo físico compartido utiliza para control de calidad, actualizar un post-commit mantiene este servidor a la cabeza actual del tronco en todo momento
- producción servidor, actualizado a una mezcla y combinación de diferentes revisiones, dependiendo de qué características son en vivo
fluya Nuestro trabajo
- Los desarrolladores trabajan de forma local hasta que se complete una determinada función y luego comprometen toda la función con el tronco para el control de calidad interno.
- Los diseñadores solo realizan pequeños cambios en CSS/images/templates. Se comprometen directamente con el tronco, controlan sus propios cambios y actualizan los archivos correspondientes en el servidor de producción, en términos generales, inmediatamente después de su control de calidad.
- Cuando las funciones están listas para su activación, el servidor de producción se actualiza manualmente con los números de revisión adecuados para cada archivo relacionado con la función. A veces esto es simple, otras veces es bastante peludo (muchas llamadas a
svn log
para buscar dependencias ascendentes).
Nuestros problemas
- Con tres diferentes desarrolladores que trabajan en diferentes funciones que necesitan diferentes cantidades de control de calidad, nos encontramos corriendo en problemas de dependencia aguas arriba sobre una base regular.
- En un momento dado, no tenemos una forma de determinar programáticamente qué características están en el servidor de producción y cuáles no.
svn status -u
nos mostrará qué archivos no están actualizados, pero generalmente no es una imagen clara de las características.
Lo que sé
- Algunos de nuestros problemas podrían ser aliviados por tener una rama de producción. Al menos podríamos monitorear qué características se estaban agregando a la producción y cuándo, aunque esto no resolvería los problemas de dependencia de la cadena ascendente.
- Las ramas de funciones son una opción, y lo hemos intentado en el pasado.Debido a que nuestro software requiere 60 dominios de control de calidad por sucursal, aquí encontramos problemas de administración de procesos. Por ejemplo, la creación de 480 (60 dominios x 8 registros por dominio) registros A para cada rama de entidad.
- Las ramas de desarrollador también son una opción, pero los tiempos de control de calidad de nuestra característica varían. Definitivamente no puedo decir que una característica previa estará fuera del control de calidad antes de que tenga que cometer algo más.
Upstream Dependencia Ejemplo
- desarrollador A agrega una nueva función de presentación tanto en la administración y de extremo frontal.
- El desarrollador B agrega una nueva función de comentarios tanto en el administrador como en el front-end.
- Ambas características se entrelazan con la lógica de modelo/controlador de ubicación, por lo que se realizan cambios en esos archivos asociados para dar cuenta de ambas características nuevas.
- La función de pase de diapositivas ingresa a QA, pero se mantiene por alguna supervisión del desarrollo o desplazamiento del alcance.
- La función de comentarios ingresa al QA y se aprueba sin problemas.
- Queremos seguir la línea de tiempo y enviar la función de comentarios a la producción, pero no podemos hacerlo directamente porque ambas características requieren cambios en el modelo/controlador de ubicación. Es decir, no podemos simplemente hacer un
svn update file1 file2 file3
. - Nota:Este es un ejemplo simple, y se puede solucionar haciendo una fusión inversa. A menudo, nuestros problemas son complejos.
multi-sitio de información de la estructura
- Tenemos una serie de temas estructurales predefinidos, que consta de puntos de vista, imágenes, archivos CSS, JS, etc
- Cada sitio se le asigna un tema
- Por motivos de marca y capacidad de expansión, cada sitio puede anular una vista de tema con una vista personalizada o incluir archivos CSS/JS específicos del sitio adicionales.
Estoy seguro de que hay otras personas que han tenido problemas similares, y espero obtener alguna información de ustedes, personas inteligentes, en Internet. ¡Por favor, siéntase libre de hacer preguntas si algo que dije parece claro como barro!
Solo tengo una pregunta, ¿qué significa QA? –
Parece que el problema principal es que se supone que su software es modular, pero está tratando de darse cuenta de eso en la capa de archivo en lugar de en la capa de aplicación. Debería hacer de esta personalización una parte explícita de su aplicación, controlarse a través de archivos de configuración y solo mantener una única versión de la base de código que pueda enviarse a todos los servidores a la vez. Eso debería simplificar las cosas en gran medida. – deceze
@Brad lmao, reenvío esta publicación a nuestro jefe de control de calidad, ella piensa que ninguno de los desarrolladores sabe qué es la garantía de calidad. lol. –