remove - git tag best practices
Despliegue con Git/Github (5)
Actualmente estoy usando git de tal manera y acabo de publicar un artículo de blog here .
Lo que normalmente hago es usar un enlace posterior a la recepción para buscar confirmaciones enviadas en una rama de lanzamiento, y cuando se encuentra implementa la base de código utilizando el comando git archive.
Esto está bien para proyectos pequeños, si tiene múltiples desarrolladores trabajando en un proyecto o si es un código base grande y complejo, recomiendo el uso de un sistema de integración continua como Jenkins, como se sugiere en un comentario anterior.
Eche un vistazo a esto y vea si se ajusta a sus necesidades (incluye un sencillo script de implementación de bash)
Aclamaciones
Estamos intentando configurar un entorno de implementación automatizada con Git / Github. Tenemos 3 ambientes diferentes; Local, prueba y vive. Cuando agregamos una nueva característica en local, primero cargamos los archivos al servidor de prueba para probar la característica recién creada. Si todo está bien, subimos 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 una aplicación móvil en iPhone y Android, por lo que móvil puede ser el cuarto entorno para nosotros.
Lo que intentamos hacer es configurar un entorno de implementación automatizado. Cuando confirmamos una nueva función para probar el servidor, después 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 en vivo. No pudimos encontrar la forma de manejar los entornos 3-4 y no desordenar los códigos. ¿Cómo empujaremos los códigos correctos al servidor en vivo? ¿Cómo vamos a gestionar nuestros servidores de prueba y en vivo? ¿Hay buenos recursos que indiquen 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 explica cómo manejar los entornos locales, de prueba y en vivo.
- http://ryanflorence.com/simple-git-deployment/
- http://ryanflorence.com/deploying-websites-with-a-tiny-git-hook/
- http://toroid.org/ams/git-website-howto
- http://danielmiessler.com/study/git/
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 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.
Finalmente he encontrado lo que estaba buscando. http://beanstalkapp.com/ parece la mejor opción. Tiene función de despliegue automático y soporta Git. Después de probarlo durante una semana, puedo decir que funciona muy estable y rápido. Gracias a todos por ayudarme e intentar mostrarme el camino.
Parece que necesitas un sistema de integración continua . He tenido un gran éxito tanto con Jenkins como con Webistrano .
Con respecto al "¿Qué archivos debemos copiar?" problema. ¿Ya estás usando git tags? Si no, ¡empieza a usarlos!
Si git es o no la opción correcta, es una buena pregunta.
Pero si lo va a hacer, debe leer la página de manual de gitworkflows . Específicamente, lo que recomendará y lo que suena bien dado su problema anterior es que necesita poner cada "cosa" por separado para que se desarrolle en una rama de tema / característica, y luego fusionar esa rama en el árbol correcto cuando se haga. Eso le permite separar las cosas para que fusione lo que es necesario y estable y no fusione lo que no es.
Terminé creando mi propia herramienta de implementación rudimentaria que automáticamente eliminaría nuevas actualizaciones del repositorio - https://github.com/jesalg/SlimJim - No creo que se ajuste a sus necesidades exactamente, pero puede leer cómo está configurado y tal vez podría obtener algunas ideas de ello.