[pyar] SDLC - Staging y Producción - requirements.txt
Ariel Gerardo Ríos
arielgerardorios en gmail.com
Mie Ago 13 00:07:04 ART 2014
Hola Andrés:
Para todos los proyectos Python en los que participo hago una
separación de los requirementos en sus respectivos ambientes y dejo uno
default que apunta a producción: esta estrategia la saqué del libro "Two
scoops of Django" de Daniel Greenfield. Te quedaría algo así:
/proyecto
requirements.txt
requirements/
base.txt
development.txt
production.txt
test.txt
Lo que se hace es separar los requerimientos comunes de aquellos que están
asociados a cada ambiente. Quizás en development uses herramientas que no
usás en producción y viceversa. Te paso un ejemplo de los contenidos de los
archivos:
requirements.txt
# Default requirements
-r requirements/production.txt
requirements/production.txt
# Production requirements for project
-r base.txt
gunicorn==x.x
requirements/development.txt
# Development requirements for project
-r base.txt
django-debug-toolbar==y.y
requirements/base.txt
# Base (common) requirements for project
Django==1.7
Cuando vos querés armar el ambiente para development en tu herramienta de
integración continua, sólo es necesario indicarle que use el archivo de
requerimientos específico para ese ambiente:
$ pip install -r requirements/development.txt
Para armar el ambiente de producción podés usar el default o indicar
explicitamente cuál usar:
$ pip install -r requirements.txt
$ pip install -r requirements/production.txt
De esta manera, si mantenés todo "departamentalizado" no vas a tener
problemas a la hora de hacer merge desde branches de desarrollo hacia
producción.
Espero te sea útil.
Saludos!
2014-08-12 18:25 GMT-03: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?
>
> Saludos,
> --
> Andrés Riancho
> Project Leader at w3af - http://w3af.org/
> Web Application Attack and Audit Framework
> Twitter: @w3af
> GPG: 0x93C344F3
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
--
Ariel Gerardo Ríos
linkedin <http://www.linkedin.com/pub/ariel-gerardo-rios/33/158/227> | *blog
<http://www.ariel17.com.ar>*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140813/8f50ac52/attachment.html>
More information about the pyar
mailing list