2010-10-14 38 views
2

Je suis le contour du hudson/python/virtualenv solution CI described at heisel.org mais une étape de ce qui est vraiment l'usure par frottement, et c'est la partie où le virtualenv, créé juste pour la course de CI, est configuré:Est-il possible de pré-créer un virtualenv pour une utilisation dans les constructions hudson?

pip install -q -E ./ve -r requirements.pip 
pip install -q -E ./ve -r requirements-test.pip 

Cela prend beaucoup de temps à s'exécuter et chaque fois qu'un fichier source est modifié, nous finissons par télécharger à nouveau ce qui représente une quantité importante de données.

Est-il possible de créer des espaces de travail modèles dans Hudson, de sorte que, au lieu de vérifier dans un espace de travail vide, il vérifie dans un qui est pré-préparé?

Répondre

1

Voici quelques options:

  1. Demandez une archive dans votre répertoire source qui explose dans le virtualenv/pip installation. Vous devrez rendre le point de départ virtualenv relocalisable.

  2. Utilisez toute option SCM convient de ne pas effacer l'espace de travail entre construit (par exemple l'utilisation de la mise à jour svn, ou ne cochez pas propre option de compilation de Mercurial). Conservez ensuite les commandes d'installation dans votre script de génération, mais placez-les dans sous une instruction if afin qu'elles ne soient exécutées (par exemple) que si un fichier .pip_installed n'est pas présent ou si un paramètre de génération est défini. Vous pouvez obtenir le plugin Clone Workspace pour faire ce que vous voulez . Mais c'est une alternative SCM, que je suppose que vous ne voulez probablement pas puisque Hudson ne va pas vérifier à partir de plusieurs SCM (voir this previous question pour des idées sur la façon de contourner ce problème).

Il est probablement aussi une bonne idée de mettre en place la configuration de votre pip pour tirer à partir d'un cache local des paquets.

pip -f http://localhost/packages/ 
0

Une amélioration consiste à empaqueter virtualenv dans une archive nommée par le hachage du fichier des exigences. Si le fichier des exigences n'a pas changé depuis la dernière génération, il suffit d'extraire l'archive dans un répertoire virtualenv vide. Si le fichier des exigences a changé, une archive n'existe pas encore. Vous devez donc exécuter pip install pour créer l'environnement, puis le stocker dans une nouvelle archive.

0

Si vous créez un nouveau venv par espace de travail, vous n'avez vraiment qu'à installer tous les fichiers une fois au début, donc les versions ultérieures sont beaucoup plus rapides. Voir mon poste pour un script que j'ai écrit pour aider:

"Pretty" Continuous Integration for Python