La prueba de Joel incluye la pregunta:
¿Se puede hacer una acumulación en un solo paso?
¿Qué es importante, pero me pregunto, qué tan optimizados han sido algunos de los procesos de implementación ?
Se aplica todo el software, desde el encogimiento hasta la web: ¿cuál es el mejor entorno de implementación con el que ha trabajado y qué pasos se han involucrado?
project-management
deployment
Steven Evers
fuente
fuente
Respuestas:
Es el entorno que he establecido en mi empresa, y estoy trabajando en este momento.
Descripción del entorno.
Somos un equipo de 4 desarrolladores , trabajando en un proyecto de escritorio Java . El código fuente está bajo Mercurial , con el repositorio principal alojado en nuestro servidor de desarrollo. Usamos principalmente TortoiseHg para trabajar con Mercurial. Los proyectos que abrimos provienen de BitBucket . El proyecto está construido con Maven . El IDE que utilizamos es Netbeans , que funciona de manera impresionante con Maven (también funciona bien con Mercurial).
Nuestro servidor de desarrollo ejecuta Archiva , que es un repositorio proxy de Maven. Usamos maven para construir el proyecto, pero también lo usamos para ejecutarlo (mvn exec), para desplegar los artefactos generados en Archiva (lanzamiento de mvn) y para generar un ensamblaje a partir de los artefactos alojados por Archiva (ensamblaje de mvn).
También tenemos un rastreador de errores de Redmine , y está al tanto de los repositorios de Mercurial. Utilizamos un cliente RSS para estar informado de la actividad del proyecto (de Redmine y Mercurial). También tenemos un servidor Jabber para enviar mensajes y archivos entre nosotros.
Configuramos un servidor Hudson (integración continua) y un servidor Sonar (métricas de código). Pero en la práctica realmente no lo usamos.
Tenemos la opción de usar Windows o Linux
Pasos para hacer un lanzamiento
Ejemplo para lanzar una versión 1.1.3
fuente
Utilicé fabric para configurar la implementación en mi nuevo inicio.
Actualizar el servidor en vivo es tan simple como:
Esto obtiene toda la fuente más reciente, abre una página de mantenimiento, migra la base de datos, configura el nuevo código, obtiene todas las dependencias, detiene / inicia todo, etc. Toda la información pertinente (contraseñas, nombres de usuario, etc.) Todos preguntaron por adelantado.
Solo ejecuto el comando, ingreso información y voy a tomar una taza de café. Todo está vivo para cuando regrese.
fuente
No estoy seguro de estar de acuerdo con Joel en esto: ¿seguramente ningún paso es mejor que uno?
Usamos Hudson para hacer un script de nuestras compilaciones (continuamente en Mac y Windows), incluyendo instaladores de construcción e imágenes de CD por las pocas veces que enviamos una caja real. Siempre probamos desde el instalador en QA.
También usamos Hudson para copiar los instaladores al área "beta" de nuestro sitio web en vivo una vez al día.
Esencialmente, podemos implementar a los usuarios todos los días sin ningún paso. Cuando hacemos un lanzamiento oficial, simplemente cambiamos los nombres de archivo de los instaladores en CMS para que los instaladores beta actuales sean los lanzamientos, y cambiamos el script de compilación Ant para cambiar al nuevo número de versión (que se convierte en la nueva beta).
Tener esto configurado y funcionando hace que el día de lanzamiento sea un completo no evento (que es exactamente lo que debería ser). ¡No hemos tenido un error en el día del lanzamiento desde hace un tiempo (solía ser algo habitual)!
fuente
En uno de mis clientes, trabajamos en Rails y tenemos todo configurado para que la implementación se extraiga de git. Sin embargo, no "construimos", ya que es Rails.
Entonces el proceso de implementación es algo así como
La mezcla entre Capistrano y GIT funciona bastante bien.
Por supuesto, más secuencias de comandos serían para omitir algunos de estos pasos.
fuente
Mi flujo de trabajo actual es así.
Todo esto se puede incluir en un solo paso.
fuente
Tenemos una aplicación Java Web Start: estamos a punto de reconstruir el procedimiento de implementación para que sea un archivo WAR y el archivo JNLP se adapte a la URL solicitada cuando los usuarios lo soliciten.
Espero que sea extremadamente suave.
Últimamente hemos usado mucho git. La idea de registrar implementaciones en repositorios de git para que pueda simplemente pedirle a git que compruebe la versión que desea ejecutar. Actualizaciones de fondo, tiempo de pago muy corto para actualizar archivos reales, tiempo de pago muy corto para volver a una versión anterior en caso de problemas. Creo que podría funcionar muy bien para nosotros.
fuente
Es cierto que ahora está bastante anticuado, pero solía tener los siguientes pasos para implementar mi código hace muchas lunas que encontré que era el mejor que he tenido:
Esto fue a fines de la década de 1990 cuando estaba programando en Visual C ++ en NT 4.0 para un punto-com. La mayoría de los procesos de implementación desde entonces se han vuelto más complicados al tener tareas nAnt y otras cosas adicionales, como tratar con servidores de producción con equilibrio de carga, mientras que en el pasado solo teníamos una caja de producción.
Por supuesto, pasar el proceso a un ingeniero de lanzamiento es mejor, pero no es lo mismo que si pusiera el código en la naturaleza.
fuente
No por nada, pero hacer clic derecho en una aplicación web ASP.NET y seleccionar Publicar fue una sorpresa agradable y agradable cuando tuve que implementar una aplicación. De acuerdo, tuve que configurar el directorio virtual y tal en IIS de antemano, pero la implementación de nuevas versiones está a unos pocos clics de distancia.
fuente