Deux outils viennent à l'esprit qui sont les deux outils de python génériques - dont ils ont besoin fonctionnent pas avec Django spécifiquement:
- Fabric. Nous utilisons cela; Cela nous permet d'écrire des commandes à distance comme si nous étions dans SSH, de télécharger du code, etc. Ce n'est pas ce que vous ne pouvez pas faire et parce que c'est un script bash écrit en python, il est très facile de démarrer. Mais c'est aussi un script bash écrit en python, ce qui signifie que vous pouvez importer des parties de votre application django, lancer vos tests ou faire tout ce que python peut faire dans le processus d'exécution de votre déploiement.
- Buildout. Je ne l'ai pas utilisé, mais notre développeur django frontent me dit que c'est absolument l'outil à utiliser. À la conjecture, il s'agit soit de la même idée soit d'un équivalent un peu plus abstrait, plus python.
Je suis sûr qu'il existe d'autres paquets disponibles. Le meilleur conseil que je peux vous donner est de les évaluer brièvement et de choisir celui qui correspond le mieux à votre scénario/style de travail d'équipe. Notez qu'il s'agit principalement d'outils de déploiement - les compilations en python n'ont pas vraiment de sens, puisque vous ne compilez pas de code python.
En termes de choses liées à CI, il y a trois commandes de django vous devez savoir sur:
./manage.py test
exécute vos tests à partir de tous les tests.py
fichiers. Ce sont essentiellement des améliorations spécifiques à django à unittest
, un paquetage python.
./manage.py collectstatic
collecte les fichiers statiques dans un répertoire de votre choix; très utile pour tirer tous les bits ensemble pour exister sur un serveur multimédia statique. Jetez un oeil à the static files howto pour savoir comment cela fonctionne.
- Vous avez besoin de South pour celui-ci,
./manage.py schemamigration app --auto && ./manage.py migrate app
- cela s'applique au modèle sql sous-jacent. Fondamentalement, si vous changez juste un modèle et n'utilisez pas le sud, Django sera très contrarié parce que le nouveau champ ne sera pas mappé à l'ancien schéma sql et il ne pourra pas persister votre modèle. Les migrations de schémas, prises en charge par le sud, vous permettent de mettre à niveau une base de données existante et remplie. Cela vaut la peine de le faire à la main avant d'automatiser.
- Je devrais également souligner que vous pouvez écrire custom management commands pour exécuter
./manage.py whatever you like
. Cela a une bonne quantité de potentiel - J'ai utilisé des commandes de gestion comme la commande à exécuter dans un travail cron, par exemple.Vous pouvez également créer des commandes interactives pour les administrateurs de votre application et, bien sûr, le déploiement et les tests.
La façon dont ils sont gérés dépend vraiment de la configuration dont vous disposez et des outils que vous choisissez.
À la compilation: Le plus proche de construire avec python est geler, a.k.a. py2exe ou cxfreeze qui produisent des binaires. Sachez cependant que tout cela est de stocker python bytecode dans un exe et de le passer à travers l'interpréteur, qui est un objet partagé de toute façon. En outre, vous ne pouvez pas cxfreeze une application django, puisque django utilise lui-même des imports dynamiques qui se produisent au moment de l'exécution et ne peuvent donc pas être évalués par cxfreeze, qui est essentiellement un outil de compilation. Donc, le bâtiment discount comme une tâche qui a besoin de faire. Vous pouvez voir .pyc
fichiers apparaissant dans votre répertoire - python convertit votre script python en python bytecode si des modifications ont été apportées depuis le dernier pyc. Si aucune modification n'a été effectuée, il charge le fichier pyc
de la dernière fois. Python bytecode est ce qui est exécuté, donc ce n'est pas vraiment une accélération en termes de performance, juste du temps de chargement.
La construction est géniale. Je suis à peu près sûr que c'est exactement ce que je cherche. Merci! –