2008-10-22 23 views
7

Actualmente estoy trabajando en la automatización/mejora del proceso de lanzamiento para empacar el producto completo de mi tienda. Actualmente el producto es una combinación de:¿Mejores prácticas para obtener información sobre la versión?

  • -lado del servidor Java código base
  • archivos de configuración y aplicación
  • XML
  • Los scripts de shell y de lote para los administradores
  • estáticamente servían páginas HTML
  • y algunas otras cosas , pero eso es la mayor parte

Todos o la mayoría de los cuales tienen varias versiones de información contenidas en ellos, nosotros ed para diferentes propósitos. Parte del proceso de empaquetado de lanzamiento implica hacer muchos hallazgos, grep'ing y sed'ing (en scripts) para actualizar la información. Este pegamento que empaqueta el producto parece haber sido improvisado de una manera orgánica, justo a tiempo, y es bastante horrible de mantener. Por ejemplo, algunos métodos Java crean objetos Date para el momento de la publicación, cuyos argumentos se actualizan mediante un reemplazo textual, sin validación del compilador ... just, urgh.

Estoy tratando de evitar dar ejemplos del software real utilizado (es decir, CVS, SVN, hormiga, etc.) porque me gustaría evitar el "uso de la función xyz para hacer esto" y concentrarme más en las prácticas generales. Me gustaría echarle la culpa al diseño de mala calidad por el problema, pero si tuviera que volver a empezar, aún utilizando tecnologías diferentes, no estaría seguro de cómo manejarlo mejor, más allá de establecer convenciones.

Mi pregunta es, ¿existen mejores prácticas o consejos para mantener y actualizar la información de versiones en diferentes tecnologías, tipos de archivos, plataformas y sistemas de control de versiones?

Respuesta

2

De hecho, para completar la respuesta de Craig Angus, la regla de oro aquí debe ser a no incluye ninguna metainformación en sus archivos de entrega normal, pero para informar esos metadatos (número de versión, fecha de publicación, etc.) en un archivo especial - incluido en el comunicado -.

Eso ayuda cuando se utiliza una herramienta VCS (Sistema de control de versiones) desde el desarrollo hasta la homologación a la preproducción.
Eso significa que siempre que cargue un área de trabajo (ya sea para desarrollar, o para probar o para preparar una versión en producción), es la herramienta de versión que le brinda todos los detalles.

Cuando prepara una entrega (un conjunto de archivos empaquetados), debe preguntar a esa herramienta VCS sobre cada metainformación que desea conservar y escribirla en un archivo especial incluido en dicho conjunto de archivos.

tal entrega debe ser envasado en un directorio externo (fuera de cualquier espacio de trabajo) y:

  • copiado en un directorio compartido (o un repositorio Maven) si se trata de un no-oficial liberación (pero solo un paquete rápido para ayudar al equipo de al lado que está esperando su entrega). De esa manera puede hacer 10 o 20 entregas por día, no importa: son fácilmente desechables.

  • importados en el VCS para servir como entregas oficiales, y para ser desplegados fácilmente ya que todo lo que necesita es pedirle a la herramienta de versiones la versión correcta de la entrega correcta, y puede comenzar a implementarlo .

Nota: Acabo de describir un proceso de gestión de versiones utilizado principalmente para muchos proyectos interdependientes. Para un único proyecto pequeño, puede omitir la importación en la herramienta VCS y almacenar sus entregas en otro lugar.

3

Crear un archivo de propiedades que contiene el número de versión y tener todos los diferentes componentes referencia a las propiedades de archivos

  • archivos Java puede hacer referencia a las propiedades a través de
  • XML se puede utilizar incluye?
  • HTML puede usar un JavaScript para escribir el número de versión de las propiedades en el código HTML
  • guiones
  • Shell pueden leer en el archivo
0

Además de los de Craig Angus, incluye la versión de las herramientas utilizadas.

Cuestiones relacionadas