2009-05-08 12 views
72

Cada vez que un nuevo desarrollador se une al equipo o la computadora un desarrollador está utilizando los cambios, el desarrollador necesita hacer un montón de trabajo para configurar el entorno de desarrollo local para que el proyecto actual funcione. Como equipo SCRUM, estamos tratando de automatizar todo, incluidas la implementación y las pruebas, por lo que lo que estoy preguntando es si existe alguna herramienta o práctica para automatizar la configuración del entorno de desarrollo local.¿Cómo automatizar la configuración del entorno de desarrollo?

Por ejemplo, para configurar mi entorno, primero tuve que instalar eclipse, luego SVN, Apache, Tomcat, MySQL, PHP. Después de eso llené el DB y tuve que hacer pequeños cambios en los diversos archivos de configuración, etc. ¿Hay alguna forma de reducir este trabajo a un solo clic?

Respuesta

62

Hay varias opciones, ya veces una combinación de éstos es útil:

  • instalación automatizada
  • de imágenes de disco
  • virtualización
  • de control de código fuente

detalles sobre la varias opciones:

  1. de la instalación automática Herramientas para la automatización de la instalación y la configuración de los diversos servicios de una estación de trabajo, herramientas y archivos de configuración:

    • Puppet tiene una curva de aprendizaje, pero es de gran alcance. Usted define las clases de máquinas (caja de desarrollo, servidor web, etc.) y luego hace lo necesario para instalar, configurar y mantener la caja en el estado correcto. Pidió un clic, pero Puppet de forma predeterminada no tiene ningún clic, ya que revisa su máquina periódicamente para asegurarse de que aún esté configurada como lo desea. Detectará cuándo se ha cambiado un archivo o modo y solucionará el problema. Actualmente uso esto para mantener un puñado de cajas RedHat Linux, aunque es capaz de manejar miles. (No es compatible con Windows a partir de 2009-05-08).
    • Cfengine es otro. He visto esto utilizado con éxito en una tienda con 70 ingenieros que usan RedHat Linux. Sus limitaciones fueron parte del motivo de Puppet.
    • SmartFrog es otra herramienta para configurar hosts. Es compatible con Windows.
    • Guiones de shell. RightScale tiene ejemplos de cómo configurar una imagen de Amazon EC2 utilizando scripts de shell.
    • Instalar paquetes. En una caja Unix es posible hacer esto completamente con paquetes, y en Windows msi puede ser una opción. Por ejemplo, RubyWorks le proporciona una pila completa de Ruby on Rails, todo mediante la instalación de un paquete que a su vez instala otros paquetes a través de dependencias.
  2. imágenes de disco Luego, por supuesto, también son disk imaging tools para almacenar una imagen de un host configurado de tal manera que se pueda restaurar a otro host. Al igual que con la virtualización, esto es especialmente bueno para los cuadros de prueba, ya que es fácil restaurar las cosas a un borrón y cuenta nueva. Mantener las cosas continuamente actualizadas sigue siendo un problema. ¿Vale la pena crear nuevas imágenes solo para propagar un cambio en el archivo de configuración?

  3. Virtualization es otra opción, por ejemplo, la realización de copias de una imagen de Xen, VirtualPC, VMWare o de crear nuevos anfitriones. Esto es especialmente útil con los cuadros de prueba, ya que sin importar qué desastre crea una prueba, puede restaurar fácilmente a un estado limpio y conocido. Al igual que las herramientas de imágenes de disco, mantener los servidores actualizados requiere más pasos manuales y mayor vigilancia que si se utilizara una herramienta de instalación/configuración automatizada.

  4. Código Fuente de control Una vez que tenga las herramientas necesarias instaladas/configurado, a continuación, haciendo construye debe ser una cuestión de control de lo que se necesita de un repositorio de código fuente y la construcción de ésta.

Actualmente uso de una combinación de los anteriores para automatizar el proceso de la siguiente manera:

  • de inicio con un sistema operativo de barebones instalar en un cliente de VMWare
  • Ejecutar un script de shell para instalar la marioneta y recuperar sus configuraciones desde el control de código fuente
  • Marioneta para instalar herramientas/componentes/configuraciones
  • Echa un vistazo a los archivos del control de código fuente para crear y desplegar nuestra aplicación web
+0

En nuestra oficina hay ventanas, linux y mac os. así que elegiré la opción de virtualización. – nimcap

+0

Volamos con virtualización y es una buena solución. Cuando comencé a usarme de 3 a 4 días para configurarlo, ahora se configuran nuevos desarrolladores en el tiempo que lleva copiar una imagen de VPC. – Burt

+3

¿Escribiste http://agile.dzone.com/articles/4-methods-automate-development porque suena muy similar? –

0

Si usa máquinas en una configuración estándar, puede crear una imagen del disco con una nueva instalación perfectamente configurada; ese es un enfoque muy popular en muchas empresas (y no solo para los 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 convierte en la configuración deseada, y simplemente desatarlo como raíz para crear el entorno deseado desde cero.

1

Siempre existe la opción de utilizar máquinas virtuales (consulte, por ejemplo, VMWare Player). Cree un entorno y cópielo para cada empleado nuevo con una configuración mínima necesaria.

7

Me gusta usar Virtual PC o VMware para virtualizar el entorno de desarrollo. Esto proporciona un "entorno de desarrollo" estándar que podría compartirse entre los desarrolladores. No tiene que preocuparse por el software que el usuario podría agregar a su sistema 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 en un sistema (usando dos versiones diferentes de una tecnología central).

+0

¿Funciona en un entorno VirtualPc/VMWare que afecta mucho el rendimiento? ¿Usas Visual Studio 2008? –

+0

Conozco al menos un gran desarrollador de software que hace TODO su desarrollo exclusivamente en máquinas virtuales (VMWare). Las cosas están mucho mejor ahora que las CPU tienen soporte de virtualización de hardware ... – tomfanning

+0

Debería tener cuidado con los conflictos de nombre de la computadora. Windows no está muy contento cuando dos máquinas con el mismo nombre aparecen en una sola red. También prefiero no tener mi entorno de desarrollo en una máquina virtual. La sobrecarga realmente puede arrastrar mi rendimiento. – Kieveli

13

Un punto importante es configurar sus proyectos en el control de código fuente para que pueda compilar, implementar y ejecutar inmediatamente después de finalizar la compra.

Eso significa que también debe registrar en la infraestructura auxiliar, como Makefiles, archivos de compilación de hormigas, etc., y la configuración de las herramientas, como los archivos de proyectos IDE.

Eso debería encargarse de la configuración de problemas para proyectos individuales.

Para la configuración básica de la máquina, puede usar una imagen estándar. Otra opción es usar las herramientas de su plataforma para automatizar la instalación. En Linux, puede crear un metapaquete que depende de todos los paquetes que necesita. En Windows, algo similar debería ser posible usando MSI o similar.

Editar:

Lo ideal sería que en vez de comprobar en infraestructura ayudante, se registre la información que permite la acumulación de generar la infraestructura auxiliar. Este es el enfoque adoptado por, p. el sistema de compilació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 a, p. un IDE específico, y las configuraciones en la infraestructura de ayuda (rutas, etc.) no necesitan duplicar las configuraciones principales del proyecto.

Sin embargo, este también es un enfoque más complejo, por lo que si no puede hacer que funcione, creo que es aceptable verificar cosas como archivos IDE directamente.

3

Use puppet para configurar su entorno de desarrollo y producción. El uso de un sistema de automatización de primer nivel es la única forma de escalar tus operaciones.

0

si está utilizando un sabor 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 describes ya tienen paquetes disponibles: svn, eclipse, etc. podrías enrollar tus propios paquetes para software específicos de la compañía, crear un repositorio (quizás solo disponible en la red local) y luego tu configuración podría reducirse a una sola escritura del golpe que se sumaría el repositorio empresa a /etc/apt/sources.list (Debian/Ubuntu) y luego llamar a un comando como,


/home/newhire$ apt-get update && apt-get install some complete package list 

usted podría utilizar buildbot a continuación, automatizar regulares construye paquetes de la compañía que el cambio a menudo.

1

En un lugar anterior teníamos todo (y me refiero a TODO) en SCM (clearcase luego SVN). Cuando un nuevo desarrollador puede, instalan ClearCase | SVN y aspiran el repositorio. Esto también maneja el caso cuando necesita actualizar una lib/herramienta particular ya que puede hacer que los equipos de desarrollo actualicen su entorno.

Utilizamos dos repo para este código y las herramientas/config vivían en lugares separados.

1

Recomiendo mucho Blueprint from DevStructure. Es de código abierto y su caso de uso es realmente el exacto razón por la que originalmente escribimos el software. Nuestros objetivos han cambiado algo, pero todavía es la herramienta perfecta para lo que usted está describiendo. En resumen, puede crear configuraciones de servidores reutilizables: administración de configuraciones muertas y simples. ¡Espero que esto ayude!

https://github.com/devstructure/blueprint (Blueprint @ Github)

+1

¿Se trata de un entorno de desarrollo o servidor? – nimcap

1

He estado pensando en esto por mí mismo. Hay algunas otras tecnologías que podrías incluir en la mezcla. Esto es lo que estoy configurando actualmente:

  • PXE basado en imágenes de instalación previamente sembradas (Debian Squeeze). Puede iniciar una máquina de cero (o un nuevo dispositivo virtual) y seleccionar la imagen desde el menú de inicio de PXE. Esto tiene la gran ventaja de poder instalar su entorno en máquinas físicas (además de los dispositivos virtuales).
  • Alguien ya ha mencionado Marionetas. Yo uso CFEngine pero es un trato similar. Esencialmente, su configuración está documentada y centralizada en los archivos de políticas que un agente del cliente aplica continuamente.
  • si no desea un entorno rígido (es decir, los desarrolladores pueden elegir una combinación de juegos de herramientas) puede rodar sus propios paquetes de deb para que los nuevos desarrolladores puedan escribir sudo apt-get install acmecorp-eclipse-env o sudo apt-get install acmecorp-intellij-env, por ejemplo.
  • Un poco fuera de tema, pero si ejecuta un entorno basado en Debian (es decir, Ubuntu), considere instalar 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 están en la memoria caché de su red local).
17

Me encontré con esta pregunta y me sorprendió mucho que nadie ha mencionado Vagrant todavía.

Vagrant

Como han mencionado Pete Termaat y otros, la virtualización es una gran manera de gestionar y automatizar los entornos de desarrollo. Vagrant básicamente quita el dolor de la configuración de estas cajas virtuales.

En cuestión de minutos puede tener una copia completamente nueva de su distribución de Linux favorita en funcionamiento y provisioned 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. Puede incluso SSH con vagrant ssh. Si comete un error o rompe algo, solo vagrant destroy y vagrant up para comenzar de nuevo.

Vagrant crea automáticamente un synced folder en su sistema de archivos local, lo que significa que no necesita desarrollarse dentro de la máquina virtual (es decir, utilizando Vim). Usa lo que sea tu editor de elección.

Ahora creo una nueva "caja de Vagabundos" para casi todos los proyectos que hago. Todas mis configuraciones se guardan en el repositorio del proyecto, por lo que es fácil atraer a otro miembro del equipo. Simplemente tienen que sacar 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 dependen de PHP 5.3, pero algunos más nuevos que ejecutan PHP 5.4. Simplemente instale la versión que desea para ese proyecto.

Check it out!

0

probar DevScript en http://nsnihalsahu.github.io/devscript. Es un comando como, devscript lamp o devscript laravel o devscript django. En unos minutos, dependiendo de la velocidad de su co de internet

0

se puede descargar la última versión de Java JDK de Java desde el sitio de Oracle - Descargas Java SE. Encontrará instrucciones para instalar JDK en los archivos descargados, siga las instrucciones dadas para instalar y configurar la configuración. Finalmente establezca las variables de entorno PATH y JAVA_HOME para referirse al directorio que contiene java y javac, típicamente java_install_dir/bin y java_install_dir respectivamente.

Si está ejecutando Windows e instaló el JDK en C:\jdk1.8.0_102, tendrá que poner la siguiente línea en su archivo C:\autoexec.bat.

set PATH=C:\jdk1.8.0_102\bin;%PATH% 
set JAVA_HOME=C:\jdk1.8.0_102 

Alternativamente, también puede hacer clic derecho en Mi PC, seleccionar Propiedades, luego Avanzado, luego Variables de entorno. Luego, actualizará el valor de PATH y presionará el botón OK.

En Linux, si el SDK está instalado en /usr/local/jdk1.8.0_102 y utiliza el shell C, colocará el siguiente código en su archivo .cshrc.

setenv PATH /usr/local/jdk1.8.0_102/bin:$PATH 
setenv JAVA_HOME /usr/local/jdk1.8.0_102 

Alternativamente, si usa Android studio, sabrá automáticamente dónde ha instalado su Java. IDE Android

Hay tantas tecnologías sofisticadas están disponibles para desarrollar aplicaciones android, las tecnologías conocidas, que son en su mayoría el uso de herramientas de la siguiente manera

Android Studio 

Eclipse IDE(Deprecated) 

Elysium Academy Impartir capacitación para Android, MICROSOFT, RedHat, CEH, y VMware con profesionales certificados que tienen muy buena experiencia y habilidades

Cuestiones relacionadas