[pyar] SDLC - Staging y Producción - requirements.txt
Angel Velásquez
angelvelasquez en gmail.com
Mie Ago 13 01:50:03 ART 2014
2014-08-12 21:25 GMT+00:00 Andres Riancho <andres.riancho en gmail.com>:
> Lista,
>
> Estoy intentando implementar continuous delivery para todos mis
> proyectos, y una de las cosas con las cuales me estoy topando es
> cuando un repositorio depende de otro y sus implicancias luego para el
> proceso de build y deploy. Me explico mejor,
>
> Digamos que hay dos proyectos en dos repositorios distintos en
> Github: A y B.
>
> * Ambos repositorios tienen dos branches: develop y master
> * Develop se deploya a staging, master se deploya a produccion
> * Cuando cambio algo en B, pasan los tests, etc. quiero que se
> buildee A con la nueva version de B
> * Para no romper produccion quiero que si hago un cambio en
> B(develop) se buildee y deploye A(develop). El sistema de CI que uso
> permite hacer builds secuenciales, eso no seria un problema.
>
> Ahora lo que me molesta es que el proyecto A tiene algo como esto
> en su requirements.txt hoy:
>
> git+ssh://git@github.com/andresriancho/B.git@<hash>#egg=B==0.2.8
>
> Notar que estoy apuntando directo a un <hash> / version. Entonces
> si quiero que A se buildee de manera automatica, al menos hoy, siempre
> va a tomar la misma version de B. Entonces pase a algo de este estilo:
>
> git+ssh://git@github.com/andresriancho/B.git@staging#egg=B
>
> Notar que ahora tengo "staging" como version. Esto funciono bien
> por un rato, hasta que hice un merge de develop a master y me quedo el
> requirements.txt de master tambien apuntando a B(staging).
>
> Pense en varias maneras de solucionar esto, todas realizables y
> posiblemente en menor tiempo del que tarde en escribir este email ;)
> Pero ninguna es bullet-proof, linda, etc. Se toparon con este
> problema? Como lo solucionaron?
>
Hola Andres!,
A ver y si haces un archivo requirements-dev.txt y requirements-prod donde
tengas las versiones de staging y produccion.. algo asi por ejemplo:
requirements-prod.txt
Django==1.6.5
git+ssh://git@github.com/andresriancho/B.git@<ultimo_hash_stable>#
egg=B==0.2.8
y requirements-dev.txt tengas algo tipo
-r requirements-prod.txt
git+ssh://git@github.com/andresriancho/B.git@staging#egg=B
Entonces para instalar cosas de produccion siempre haces:
$ pip install -r requirements-prod.txt
Y para cosas de develop
$ pip install -r requirements-dev.txt
La cagada es que en el caso de dev siempre te va a bajar todo lo de prod +
lo de dev, ergo te baja la version estable y luego la pisa con la de
staging.. (mas ancho de banda, pero ... mejor que manejar todo a mano, no?).
Sds.
--
Angel Velasquez
Arch Linux Developer
angvp @ freenode
http://www.angvp.com.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140813/5b18e522/attachment.html>
More information about the pyar
mailing list