Question

Juste curieux de voir comment les gens déploient leurs projets Django en combinaison avec virtualenv

  • Plus précisément, comment voulez-vous maintenir votre production virtualenv correctement cette synched avec votre machine de développement?

J'utiliser git pour scm mais je n'ai pas mon virtualenv dans le git - devrais-je, ou est-il préférable d'utiliser le gel de pépin, puis recréer l'environnement sur le serveur en utilisant la sortie de gel? (Si vous faites cela, pourriez-vous s'il vous plaît décrire les étapes - je trouve très peu de bonne documentation sur le processus dégeler - est quelque chose comme pip install -r freeze_output.txt possible)

Était-ce utile?

La solution

Je viens de mettre quelque chose comme ça au boulot en utilisant pip, tissu et git. Le flux est essentiellement comme ça, et emprunte beaucoup ce script :

  1. Dans notre arbre source, nous maintenons un fichier requirements.txt. Nous allons maintenir manuellement.
  2. Lorsque nous faisons une nouvelle version, le script crée une archive Fabric basé sur ce que treeish nous transmettons.
  3. Tissu trouvera le CSA pour ce que nous déployons avec git log -1 --format=format:%h TREEISH. Cela nous donne SHA_OF_THE_RELEASE
  4. Tissu aura le dernier CSA pour nos besoins fichier avec git log -1 --format=format:%h SHA_OF_THE_RELEASE requirements.txt. Cette recrache la version courte du hachage, comme 1d02afc qui est le CSA pour ce fichier pour cette version particulière.
  5. Le script de tissu alors regarder dans un répertoire où nos virtualenvs sont stockés sur l'hôte distant (s).
    1. S'il n'y a pas un répertoire nommé 1d02afc, un nouveau virtualenv est créé et configuré avec pip install -E /path/to/venv/1d02afc -r /path/to/requirements.txt
    2. Si est une path/to/venv/1d02afc existante, rien ne se fait

La petite partie de cette magie passe tout arbre ISH vous voulez git, et l'avoir fait l'emballage (en tissu). En utilisant git archive my-branch, git archive 1d02afc ou tout autre chose, je suis sûr d'obtenir les bons paquets installés sur mes machines distantes.

Je suis allé dans cette voie car je ne voulais vraiment pas avoir virtuenvs supplémentaires flottant autour si les paquets n'avaient pas changé entre la libération. Je n'aime pas non plus l'idée d'avoir les paquets réels je dépends dans mon propre arbre source.

Autres conseils

J'utilise cette bootstrap.py: http: // github.com/ccnmtl/ccnmtldjango/blob/master/ccnmtldjango/template/bootstrap.py

qui sont attend répertoire appelé 'exigences' qui ressemble à ceci:

scroll top