Cada vez que un nuevo desarrollador se une al equipo o la computadora que un desarrollador está usando cambios, el desarrollador necesita hacer mucho trabajo para configurar el entorno de desarrollo local para que el proyecto actual funcione. Como equipo de SCRUM, estamos tratando de automatizar todo, incluida la implementación y las pruebas, por lo que lo que estoy preguntando es: ¿existe una herramienta o práctica para automatizar la configuración del entorno de desarrollo local?
Por ejemplo, para configurar mi entorno, primero tuve que instalar eclipse, luego SVN, Apache, Tomcat, MySQL, PHP. Después de eso, llené la base de datos y tuve que hacer cambios menores en los diversos archivos de configuración, etc. ¿Hay alguna manera de reducir este trabajo a un clic?
Me encontré con esta pregunta y me sorprendió mucho que nadie haya mencionado a Vagrant todavía.
Como han mencionado Pete TerMaat y otros, la virtualización es una excelente manera de administrar y automatizar entornos de desarrollo. Vagrant básicamente elimina el dolor de configurar estas cajas virtuales.
En cuestión de minutos, puede tener una copia completamente nueva de su distribución de Linux favorita en funcionamiento y aprovisionada exactamente de la misma manera que su servidor de producción.
No más peleas con OSX o Windows para instalar PHP, MySQL, etc. Todo el software vive y se ejecuta dentro de la máquina virtual. Incluso puedes SSH con
vagrant ssh
. Si comete un error o rompe algo, simplementevagrant destroy
hágalo yvagrant up
comience de nuevo.Vagrant crea automáticamente una carpeta sincronizada con su sistema de archivos local, lo que significa que no necesita desarrollar dentro de la máquina virtual (es decir, usando Vim). Utilice el editor que elija.
Ahora creo una nueva "caja Vagrant" para casi todos los proyectos que hago. Toda mi configuración se guarda en el repositorio del proyecto, por lo que es fácil incorporar a otro miembro del equipo. Simplemente tienen que extraer el repositorio y ejecutar
vagrant up
, y están literalmente listos para funcionar.Esto también hace que sea mucho más fácil manejar proyectos que tienen diferentes requisitos de software. Tal vez tenga algunos proyectos que se basan en PHP 5.3, pero algunos más nuevos que ejecutan PHP 5.4. Simplemente instale la versión que desee para ese proyecto.
¡Echale un vistazo!
fuente
Un punto importante es configurar sus proyectos en control de código fuente, de modo que pueda compilarlos, implementarlos y ejecutarlos inmediatamente después del pago.
Eso significa que también debe verificar la infraestructura auxiliar, como Makefiles, ant buildfiles, etc., y la configuración de las herramientas, como los archivos de proyecto IDE.
Eso debería solucionar los problemas de configuración para proyectos individuales.
Para la configuración básica de la máquina, puede utilizar una imagen estándar. Otra opción es utilizar las herramientas de su plataforma para automatizar la instalación. En Linux, puede crear un metapaquete que dependa de todos los paquetes que necesita. Bajo Windows, debería ser posible algo similar usando MSI o similar.
Editar:
Idealmente, en lugar de registrar la infraestructura de ayuda, verifica la información que permite que la compilación genere la infraestructura de ayuda. Este es el enfoque adoptado, por ejemplo, por el sistema de construcción GNU (autotools, etc.) o por Maven. Esto es aún más elegante, porque puede (teóricamente) generar infraestructura para cualquier entorno de compilación (compatible), por lo que no está obligado, por ejemplo, a un IDE específico, y las configuraciones en la infraestructura auxiliar (rutas, etc.) no necesitan duplicarse la configuración principal del proyecto.
Sin embargo, este también es un enfoque más complejo, por lo que si no puede hacer que funcione, creo que verificar cosas como archivos IDE directamente es aceptable.
fuente
Me gusta usar Virtual PC o VMware para virtualizar el entorno de desarrollo. Esto proporciona un "entorno de desarrollo" estándar que se puede compartir entre los desarrolladores. No tiene que preocuparse por el software que el usuario pueda agregar a su sistema y que pueda entrar en conflicto con su entorno de desarrollo. También me proporciona una forma de trabajar en dos proyectos donde los entornos de desarrollo no pueden estar ambos en un sistema (utilizando dos versiones diferentes de una tecnología central).
fuente
Utilice puppet para configurar su entorno de desarrollo y producción. Usar un sistema de automatización de primer nivel es la única forma de escalar sus operaciones.
fuente
Siempre existe la opción de usar máquinas virtuales (ver, por ejemplo, VMWare Player ). Cree un entorno y cópielo para cada nuevo empleado con una configuración mínima necesaria.
fuente
En un lugar anterior teníamos todo (y me refiero a TODO) en SCM (clearcase y luego SVN). Cuando un nuevo desarrollador puede entrar, instalaron ClearCase | SVN y absorbieron el repositorio. Esto también maneja el caso cuando necesita actualizar una lib / herramienta en particular, ya que puede hacer que los equipos de desarrollo actualicen su entorno.
Usamos dos repositorios para esto, por lo que el código y las herramientas / configuración vivían en lugares separados.
fuente
Recomiendo encarecidamente Blueprint de DevStructure. Es de código abierto y su caso de uso es en realidad la razón exacta por la que originalmente escribimos el software. Nuestros objetivos han cambiado un poco, pero sigue siendo la herramienta perfecta para lo que está describiendo. En resumen, puede crear configuraciones de servidor reutilizables: administración de configuración muy simple. ¡Espero que esto ayude!
https://github.com/devstructure/blueprint (Blueprint @ Github)
fuente
Yo mismo he estado pensando en esto. Hay algunas otras tecnologías que podrías incluir. Esto es lo que estoy configurando actualmente:
sudo apt-get install acmecorp-eclipse-env
osudo apt-get install acmecorp-intellij-env
, por ejemplo.apt-cacher
(proxy de paquete). Además de ahorrar ancho de banda, hará que sus instalaciones sean mucho más rápidas (ya que los paquetes se almacenan en caché en su red local).fuente
Si usa OSX y trabaja con Rails. Sugeriría:
fuente
Si usa máquinas en una configuración estándar, puede crear una imagen del disco con una instalación nueva y perfectamente configurada; ese es un enfoque muy popular en muchas corporaciones (y no solo para desarrolladores). Si necesita sistemas operativos configurados por separado, puede tar-bz2 todos los archivos agregados y modificados una vez que un sistema operativo configurado se convierta en la configuración deseada, y simplemente descomprímalo como root para crear el entorno deseado desde cero.
fuente
si está usando una versión de Linux, probablemente tenga un sistema de administración de paquetes: piensa .rpm para fedora / redhat, o .deb para ubuntu / debian. muchas de las cosas que describe ya tienen paquetes disponibles: svn, eclipse, etc., podría crear sus propios paquetes para el software específico de la empresa, crear un repositorio (quizás solo disponible en la red local) y luego su configuración podría reducirse a una sola script bash que agregaría el repositorio de la compañía a /etc/apt/sources.list (debian / ubuntu) y luego llamaría a un comando como,
puede usar buildbot para luego automatizar las compilaciones regulares de los paquetes de la empresa que cambian con frecuencia.
fuente
Pruebe DevScript en http://nsnihalsahu.github.io/devscript . Es un comando como,
devscript lamp
odevscript laravel
odevscript django
. En unos pocos minutos, dependiendo de la velocidad de su empresa de Internetfuente