2012-03-08 14 views
19

Estamos tratando de configurar un entorno de despliegue automatizado con Git/Github. Tenemos 3 ambientes diferentes; local, prueba y en vivo. Cuando agregamos una nueva función en local, primero cargamos archivos al servidor de prueba para probar la función recién creada. Si todo está bien, nosotros cargamos todos los archivos al servidor en vivo. Pero este proceso de "carga" no es una solución perfecta, ya que a veces olvidamos cargar algunos archivos. Por cierto, también tenemos aplicaciones móviles en iPhone y Android, por lo que los dispositivos móviles pueden ser el cuarto entorno para nosotros.Despliegue con Git/Github

Lo que tratamos de hacer es configurar un entorno de despliegue automatizado. Cuando asignamos una nueva característica al servidor de prueba, luego de probar esta nueva característica, queremos enviarla al servidor en vivo.

Puede haber muchas confirmaciones en el servidor de prueba, pero queremos enviar confirmaciones específicas al servidor activo. No pudimos encontrar cómo lidiar con 3-4 entornos y no confundir códigos. ¿Cómo impulsaremos los códigos correctos al servidor en vivo? ¿Cómo administraremos nuestros servidores de prueba y en vivo? ¿Hay algún buen recurso que indique cómo configurar diferentes entornos y procesos de implementación con Git/Github? ¿Hay algún artículo que nos diga qué hacer paso a paso?

He leído esos artículos pero ninguno de ellos me dice cómo lidiar con entornos locales, de prueba y en vivo.

EDITAR 2012-03-09: He encontrado http://beanstalkapp.com/ y http://springloops.com y ambos parecen muy buenos en la implementación. No estoy seguro de si puedo confiar en esos servicios, pero ambos hacen exactamente lo que quiero. Voy a probar ambos y compartir mis resultados aquí para informar a todos.

+2

Git no es una herramienta de implementación. Hay herramientas mucho más adecuadas para este objetivo. Lo que puedes hacer es combinarlos. – Ikke

+1

Sé que Git no es una herramienta de implementación, pero muchos desarrolladores están usando Git * como * una herramienta de implementación. Usamos Github para almacenar nuestros códigos, por lo que pensamos que sería genial usar Git/Github como una herramienta de implementación. –

+0

Esta pregunta es ideal para [Server Fault] (http://serverfault.com) - por ejemplo [this] (http://serverfault.com/q/142729/105371) pregunta (una de muchas similares por allí) –

Respuesta

8

Por fin he encontrado lo que estaba buscando. http://beanstalkapp.com parece la mejor opción. Tiene función de implementación automática y es compatible con Git. Después de probarlo durante una semana, puedo decir que funciona muy estable y rápido. Gracias a todos por ayudarme y tratar de mostrarme el camino.

+0

Parece que las personas pueden probar el plan más caro de forma gratuita durante 30 días. –

4

Parece que necesita un sistema Continuous Integration. He tenido un gran éxito con Jenkins y Webistrano.

Con respecto a "¿qué archivos debemos copiar?" problema. ¿Estás usando etiquetas git todavía? Si no, ¡comienza a usarlos!

2

Si git es o no la elección correcta, es una buena pregunta.

Pero si va a hacerlo, debería leer la página del manual gitworkflows. Específicamente, lo que recomendará y lo que suena correcto dado su problema anterior es que necesita poner cada "cosa" separada para desarrollarse en una rama tema/característica, y luego fusionar esa rama en el árbol correcto cuando esté listo. Eso le permite separar las cosas para que combine lo que se necesita y estable y no fusionar lo que no es.

0

Actualmente estoy usando git de tal manera y acabo de publicar un artículo de blog sobre here.

Lo que suelo hacer es utilizar un gancho posterior a la recepción para buscar confirmaciones introducidas en una rama de publicación, y cuando se encuentra implementa la base de código con el comando git archive.

Esto está bien para proyectos pequeños, si tienes múltiples desarrolladores trabajando en un proyecto o es una base de código grande y compleja, yo recomiendo el uso de un sistema de integración continua como Jenkins como se sugirió en un comentario anterior.

Tener un vistazo a esto y ver si se adapta a sus necesidades (incluye un sencillo script de implementación bash)

Saludos

2

Terminé creando mi propia herramienta de implementación rudimentaria que automáticamente desplegaría nuevas actualizaciones del repositorio - https://github.com/jesalg/SlimJim - No creo que se ajuste exactamente a sus necesidades, pero puede leer cómo está configurado y quizás pueda obtener algunas ideas de eso.