Tengo un proyecto que necesitan ser desplegados en múltiples ambientes (prod, prueba, dev). Las principales diferencias consisten principalmente en propiedades de configuración/archivos.

Mi idea era utilizar los perfiles y las superposiciones para copiar/configure la especializada de salida. Pero estoy atascado en si tengo que generar varios artefactos especializados clasificadores (ex: «mi-app-1.0-prod.zip/jar», «mi-app-1.0-dev.zip/jar») o debo crear varios proyectos, uno de los proyectos para cada entorno ?!

Debo usar maven-asamblea-plugin para generar múltiples artefactos para cada entorno ?
De todos modos, voy a tener que generar todos ellos a la vez de modo que las costuras que los perfiles no encaja … todavía perplejo 🙁

Las sugerencias/ejemplos/enlaces serán más que bienvenidas.

Como una cuestión de lado, también me pregunto cómo lograr esto en un CI Hudson/de Bambú para generar e implementar estos artefactos generados para todos los entornos, de sus propios servidores (ejemplo: utilizando SCP Hudson plugin) ?

  • ¿Qué tipo de información tienen en eso .archivo de configuración en su dev perfil? Cosas como DB info para hibernate, etc? La creación de un «Dev» perfil de mí, sólo me preguntaba qué tipos de cosas en el futuro tendré que especificar a través de .archivo de propiedades, y cómo se diferencian entre dev y perfiles de liberación
InformationsquelleAutor user68682 | 2010-03-11

6 Comentarios

  1. 10

    Prefiero archivos de configuración de paquetes por separado de la aplicación. Esto le permite ejecutar exactamente la misma aplicación y suministro de la configuración en tiempo de ejecución. También permite generar archivos de configuración después de que el hecho de un entorno que usted no sabía que usted necesita en tiempo de compilación. por ejemplo, CERT
    Yo uso la «asamblea» de la herramienta de la cremallera de cada dominio de los ficheros de configuración en nombre de los archivos.

    • Así que sugiero a tener otros proyectos distintos para cada entorno ? Por favor, puedes venir con un ejemplo de esto ?
    • Sí. Los módulos individuales se requiere para cada salida. Alternativamente, usted podría zip de todos ellos juntos en un solo paquete y tiene el instalador de la extracción de la carpeta necesaria.
    • También me gusta esta haciendo de esta manera, aunque es un poco engorroso. Es una buena idea tener un único binario que puede trabajar en cualquier ambiente y se promueve de una a la siguiente (por ejemplo DEV->PRUEBA>PROD).
    • También tenemos la versión de los archivos de configuración en sus propios proyectos, de modo que son controlados, pero esto provoca una explosión de proyectos maven…estaría interesado si alguien ha llegado con un mejor esquema.
    • Aquí está un ejemplo de un proyecto para generar ambiente de configuraciones específicas: bitbucket.org/bartswen/public-sandbox/raw/master/config-demo
  2. 2

    Me gustaría utilizar el version elemento (como 1.0-SNAPSHOT, 1.0-UAT, 1.0-PROD) y por lo tanto, etiquetas de ramas en la VCS nivel en combinación con los perfiles (para entornos específicos cosas como máquinas de nombres, nombre de usuario, contraseñas, etc), para construir los diversos artefactos.

    • Hmm.. Pero, ¿cómo una instantánea de la versión para PROD te parece ? He considerado que el uso de los clasificadores en su lugar, para que yo pueda tener 1.0-SNAPSHOT-PROD.jar y la asamblea plugin para generar todos ellos … Desde env/ensayo problemas son bastante generales pensé que una de las mejores prácticas en materia de ella. Si usted tiene una simple (y realista) ejemplo va a ayudar mucho
    • ¿Cómo podría un PROD artefacto ser una INSTANTÁNEA? PROD artefactos son típicamente publicado es decir, artefactos artefactos con versiones fijas (no INSTANTÁNEA). No entiendo tu pregunta.
    • Tienes razón, así que voy a reformular: a partir De la instantánea necesito generar artefactos específicos con codificación de env y una versión fija (basado en maven.construir.fecha y hora) en este formato (ej.: 01.01.09.32.Tue-1730-dev.zip el uso de este formato de hora: aa.ww.EE-HHmm). Desde la basa (dev/pruebas) se generará casi a diario de la instantánea, estoy buscando una buena práctica para la generación de ellos (perfiles, diferentes proyectos/CI construye) …etc
  3. 1

    Hemos implementado un m2 plugin para generar el final .propiedades utilizando el siguiente enfoque:

    • Común, medio inconsciente configuración se lee común.propiedades.
    • Específicas, medio ambiente, consciente de la configuración se lee dev.propiedades de la prueba.propiedades o de producción.propiedades, reemplazando así los valores por defecto si es necesario.
    • El final .propiedades de los archivos se escriben en el disco con las Propiedades de la instancia después de la lectura de los archivos en el orden dado.
    • Tal .archivo de propiedades es lo que se combinan en función del entorno de destino.
  4. 0

    Utilizamos perfiles de lograr eso, pero sólo tenemos el perfil predeterminado – que llamamos «desarrollo» de perfil, y tiene los archivos de configuración en él, y tenemos una «liberación» de perfil, donde no se incluyen los archivos de configuración (por lo que puede ser configurado correctamente cuando se instala la aplicación).

    Me gustaría usar perfiles para hacerlo, y me gustaría añadir el perfil en el nombre de artefacto si usted necesita para implementarlo. Creo que es algo similar a lo que Pascal había sugerido, sólo que va a ser el uso de perfiles y no versiones.

    PS: Otra razón por la que hemos dev/perfiles de liberación sólo, es que cada vez que nos envíe algo para UAT o PROD, que ha sido lanzado, así que si hay un error que podemos rastrear en qué estado se encuentra el código fue cuando la aplicación fue lanzada – es más fácil para etiquetar en SVN que tratando de encontrar su estado a partir de la confirmación de la historia.

    • Tenemos casi a diario basado construye generado por DEV y PRUEBA, ya que para PROD contará sólo el pleno de prensa …así que va a obtener una gran cantidad de «instantánea» construye … Cualquier buena práctica ¿cómo lograr esto ?
  5. 0

    Tuve este mismo escenario el pasado verano.

    Terminé usando los perfiles para cada uno de los de mayor ambiente con los clasificadores. Perfil predeterminado era «no hacer daño» compilación de desarrollo. Yo tenía un DEV, INT, UAT, control de calidad y PROD perfil.

    Me terminó de definir varios puestos de trabajo dentro de Hudson para generar la región artefactos específicos.

    La única cosa que yo hubiera hecho de otra manera fue el arquitecto de los proyectos de una forma un poco diferente, de modo que la región específica de construir fuera de la modularizado principal del proyecto. Que era simplemente tire en la última artefactos específicos para cada construir en lugar de reconstruir la totalidad del proyecto para cada región.

    De hecho, cuando el programa de instalación de los puestos de trabajo, la garantía de la calidad y PROD trabajos fueron siempre el programa de instalación para construir a partir de una etiqueta. Claramente esto es algo que se podría adaptar a su lugar de trabajo específico de las reglas de implementación.

Dejar respuesta

Please enter your comment!
Please enter your name here