Cómo hacer una build (java) como "CM-independiente" como sea posible?(CM=Configuration Manager)

StackOverflow https://stackoverflow.com/questions/486668

Pregunta

He estado pensando en hacer uno de el proyecto se basa en que yo manejo, como "independiente" de mí(CM)como me sea posible.Por esto no me refiero sólo a la automatización a través de secuencias de comandos/herramientas - aunque sin duda lo incluye.Este es un proyecto sujeto a mucho caos y de manera "total" automatización no sería realista.

Aquí está lo que estoy buscando:

Nadie debería ser capaz de hacer el build (con algunos de automatización y un poco de documentación/directrices) - por ejemplo - un novato CM, o incluso un desarrollador con no CM la experiencia.

Mis primeros pensamientos son para lograr esto:

  1. Clavar la Acumulación proceso de solicitud (a través de construir formas que captura TODOS los detalles necesarios para la construcción de la que nada se cae de las grietas sólo porque en la cabeza de alguien)

  2. La simplificación de los pasos de generación de manera que puedan ser capturados en una simple documentación como una secuencia de comandos de un mono entrenado debe ser capaz de ejecutar con la construcción (bien..no con insultos, pero usted consigue la idea :-) )

  3. El uso de la herramienta para la empuñadura (leer HORMIGA,SVN), para que los problemas potenciales son capturados y de antemano y también ayudar a proporcionar un mejor alertas en caso de fallos/problemas.

  4. Tener la libertad para caer enfermo o a tomar esas vacaciones excepcionales sin el gerente de proyecto de obtención de los ataques de pánico cada vez que lo menciono un par de días fuera.:-)

Me encantaría tener algunos pensamientos e ideas que me ayuda en esta dirección.Gracias a todos!

¿Fue útil?

Solución

En Urbancode, nos referimos a esto como el "Bob el Constructor" anti-patrón.La buena noticia es que Bob (usted) quiere salir del bucle.Cuando el tipo de construcción no puede ir de vacaciones o de enfermarse, sin que las partes del proceso a detenerse, realmente hay un problema inaceptable.Si soy un apostador, como iniciar el proceso de simplificación del proceso de abajo a "entrenados monos" los niveles, usted se preguntará por qué se está gastando su tiempo en hacer esto rote cosas cuando eres inteligente, y en realidad podría ser la adición de valor en algún lugar.

Los síntomas de "Bob el Constructor" síndrome en nuestro libro:

  1. Todas las solicitudes para las compilaciones, o construye de un cierto tipo, ir a través de un individuo o un grupo pequeño.
  2. La respuesta a estas construir las solicitudes es demasiado lento para los desarrolladores.Si la construcción del equipo es en el almuerzo, que esperar horas.
  3. Bob, o el equipo de Bobs, pasar de un porcentaje significativo de su tiempo haciendo repetición de tareas.
  4. Los Bobs ir a casa para el día, salir a comer, ir de vacaciones, o a enfermarse obstaculizar la capacidad del equipo para hacer las cosas.

Les decimos a nuestros AnthillPro los clientes a empujar a todos los de este tipo de cosas en su automatización.Teniendo construir dos tipos diferentes de máquinas, diferentes números de compilación, etc no debería ser un problema.

El primer paso es mudo por el proceso.Unidad de tanta complejidad como sea posible de modo que usted puede bajar a los "capacitados mono" del proceso.Una vez que haya algo que se aproxima, en sustitución de la mono con un equipo que es bastante fácil.

Me gustaría dar consejos más específicos, pero no creo que nos han dicho donde la complejidad, aparte de caos.A veces en esta situación es necesario atacar caótico y malas prácticas.Está haciendo usted crea que son "Esta línea de base en el código fuente y los dos archivos y estos tres archivos?" Que sería complicado y probablemente necesite una CMer en el bucle.Encontrar una manera de prohibirla.La sustitución de que con "la creación de una rama, y hacer cambios específicos a que rama" hace que la construcción de la acumulación factible por que el mono.

Usted debe ser capaz de argumentar de los cambios como de alto riesgo.Aunque usted es bueno, usted tendrá días buenos y malos y quieren tomar el error humano de la ecuación tanto como sea posible.Al mismo tiempo, si usted está disparando para una respuesta más rápida a los desarrolladores y de auto servicio (que, presumiblemente, el desarrollo y la administración desea) algunas cosas deben ser hechas automateable / monkeyable.

Tener mejores formas puede ser bueno, en el ínterin, y el uso de sus herramientas bien es siempre bueno, pero me iba a atacar a la "entrenados mono" problema bastante agresiva.Algo que no puede ser hecho por un agente de mono (o un equipo) debe ser un candidato para abandonar el proceso.Una vez que lo tienes abajo a "entrenados mono" de estado, conseguir que la construcción de la automatización en su lugar de modo que ni usted ni el que los desarrolladores necesitan para ser monos.Que cambia su rol de "Bob el Constructor" a "Bob el Sistema de generación de Propietario".

Otros consejos

  

La simplificación de los pasos de generación para que puedan ser capturados en una documentación simple como una secuencia de comandos - un mono entrenado debe ser capaz de ejecutar con la construcción (bueno .. insultos no hurling, pero - se entiende la idea :-) )

Si eso es posible de lo que debería ser posible ejecutar la acumulación en un solo paso a través de un script (mayy sea una hormiga, golpe, o lo que sea experto en la escritura). Ese debe ser el objetivo, por lo que, básicamente, todo el mundo puede hacer la construcción.

El objetivo de desarrollar un proceso de construcción debe ser este:

  1. Empezar con un directorio vacío en cualquier lugar (tabula rasa, si se quiere)
  2. Asegúrese de que un muy pequeño herramientas de herramientas básicas está instalado (para mí que normalmente Java + Maven + SVN cliente de línea de comandos)
  3. Retirar una solo directorio de su SVN/CVS/...
  4. Iniciar un comando único (y que significa algo que no tiene 25 parámetros)
  5. Esperar (posiblemente bastante tiempo)
  6. Tienen su construcción completa

Si usted no puede hacer eso, entonces su proceso de construcción no es todavía lo suficientemente bueno.

Si usted piensa que usted no puede lograrlo, a continuación, describir en detalle las acciones que usted necesita para hacer además de que la lista no son posibles de hacer por una turing-completo de la máquina.

Generalmente no hay un punto.Es solamente la falta de herramientas/conocimientos/motivación.Yo, personalmente, encontré que es más fácil de hacer esto, que para describir por qué no se puede hacer.

La buena suerte.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top