[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