C'est une question un peu… vaine, mais la sortie de BuildBot n'est pas particulièrement agréable à regarder.
Par exemple, par rapport à ..
..et d'autres, BuildBot a l' air plutôt .. archaïque
Je joue actuellement avec Hudson, mais il est très centré sur Java (bien qu'avec ce guide , je l'ai trouvé plus facile à configurer que BuildBot, et j'ai produit plus d'informations)
Fondamentalement: existe-t-il des systèmes d'intégration continue destinés à python, qui produisent beaucoup de graphiques brillants et autres?
Mise à jour: depuis ce temps, le projet Jenkins a remplacé Hudson en tant que version communautaire du package. Les auteurs originaux sont également passés à ce projet. Jenkins est maintenant un package standard sur Ubuntu / Debian, RedHat / Fedora / CentOS et autres. La mise à jour suivante est toujours essentiellement correcte. Le point de départ pour faire cela avec Jenkins est différent.
Mise à jour: après avoir essayé quelques alternatives, je pense que je vais rester avec Hudson. L'intégrité était agréable et simple, mais assez limitée. Je pense que Buildbot est mieux adapté pour avoir de nombreux esclaves de construction, plutôt que tout fonctionnant sur une seule machine comme je l'utilisais.
Configurer Hudson pour un projet Python était assez simple:
- Téléchargez Hudson depuis http://hudson-ci.org/
- Exécutez-le avec
java -jar hudson.war
- Ouvrez l'interface Web à l'adresse par défaut de
http://localhost:8080
- Accédez à Gérer Hudson, Plugins, cliquez sur "Mettre à jour" ou similaire
- Installez le plugin Git (j'ai dû définir le
git
chemin dans les préférences globales Hudson) - Créez un nouveau projet, entrez dans le référentiel, les intervalles d'interrogation SCM, etc.
- Installer
nosetests
viaeasy_install
si ce n'est déjà fait - À l'étape de création, ajoutez
nosetests --with-xunit --verbose
- Cochez «Publish JUnit test result report» et définissez «Test report XMLs» sur
**/nosetests.xml
C'est tout ce qu'il faut. Vous pouvez configurer des notifications par e-mail, et les plugins valent le coup d'œil. Quelques-uns que j'utilise actuellement pour les projets Python:
- Plug-in SLOCCount pour compter les lignes de code (et les représenter graphiquement!) - vous devez installer sloccount séparément
- Violations pour analyser la sortie PyLint (vous pouvez configurer des seuils d'avertissement, représenter graphiquement le nombre de violations sur chaque build)
- Cobertura peut analyser la sortie coverage.py. Nosetest peut recueillir une couverture lors de l'exécution de vos tests, en utilisant
nosetests --with-coverage
(ceci écrit la sortie dans**/coverage.xml
)
Réponses:
Vous voudrez peut-être consulter Nose et le plugin de sortie Xunit . Vous pouvez lui faire exécuter vos tests unitaires et vos contrôles de couverture avec cette commande:
Cela sera utile si vous souhaitez emprunter la route Jenkins ou si vous souhaitez utiliser un autre serveur CI prenant en charge les rapports de test JUnit.
De même, vous pouvez capturer la sortie de pylint en utilisant le plugin violations pour Jenkins
la source
nosetests --with-xunit
nosetests --with-xunit --enable-audit
reçoisnosetests: error: no such option: --enable-audit
--with-nosexunit
en--with-xunit
.Je ne sais pas si ça ferait l'affaire: Bitten est fait par les gars qui écrivent Trac et est intégré à Trac. Apache Gump est l'outil CI utilisé par Apache. Il est écrit en Python.
la source
Nous avons eu beaucoup de succès avec TeamCity en tant que serveur CI et en utilisant nose comme testeur. Le plugin Teamcity pour nosetests vous donne le nombre de réussite / échec, un affichage lisible en cas d'échec du test (qui peut être envoyé par courrier électronique). Vous pouvez même voir les détails des échecs de test pendant l'exécution de la pile.
Si bien sûr prend en charge des choses comme l'exécution sur plusieurs machines, et il est beaucoup plus simple à configurer et à maintenir que buildbot.
la source
La page cascade de Buildbot peut être considérablement embellie. Voici un bel exemple http://build.chromium.org/buildbot/waterfall/waterfall
la source
Le bambou d'Atlassian vaut également le détour. Toute la suite Atlassian (JIRA, Confluence, FishEye, etc.) est plutôt douce.
la source
Je suppose que ce fil est assez ancien, mais voici mon point de vue avec hudson:
J'ai décidé d'aller avec pip et de mettre en place un repo (pénible à travailler mais joli eggbasket), sur lequel Hudson télécharge automatiquement avec des tests réussis. Voici mon script approximatif à utiliser avec un script d'exécution de configuration hudson comme: /var/lib/hudson/venv/main/bin/hudson_script.py -w $ WORKSPACE -p mon.package -v $ BUILD_NUMBER, il suffit de le mettre ** / coverage.xml, pylint.txt et nosetests.xml dans les bits de configuration:
Quand il s'agit de déployer des éléments, vous pouvez faire quelque chose comme:
Et puis les gens peuvent développer des choses en utilisant:
Ce truc suppose que vous avez une structure de dépôt par paquet avec un setup.py et des dépendances toutes configurées, alors vous pouvez simplement vérifier le tronc et exécuter ce truc dessus.
J'espère que ça aide quelqu'un.
------mettre à jour---------
J'ai ajouté epydoc qui s'intègre très bien avec hudson. Ajoutez simplement javadoc à votre configuration avec le dossier html
Notez que pip ne prend pas en charge correctement le drapeau -E ces jours-ci, vous devez donc créer votre venv séparément
la source
un autre: Shining Panda est un outil hébergé pour python
la source
Si vous envisagez une solution CI hébergée et que vous faites de l'open source, vous devriez également vous pencher sur Travis CI - il a une très bonne intégration avec GitHub. Bien que cela ait commencé comme un outil Ruby, ils ont ajouté le support Python il y a quelque temps.
la source
Le signal est une autre option. Vous pouvez en savoir plus et regarder une vidéo également ici .
la source
Je considérerais CircleCi - il a un excellent support Python et une très belle sortie.
la source
binstar de continuum est maintenant capable de déclencher des builds à partir de github et peut compiler pour linux, osx et windows ( 32/64 ). ce qui est bien, c'est qu'il vous permet vraiment de coupler étroitement distribution et intégration continue. C'est traverser les t et parsemer les I de l'intégration. Le site, flux de travail et les outils sont vraiment poli et Conda est AFAIK la façon la plus robuste et pythonique à la distribution de modules Python complexes, où vous avez besoin pour envelopper et distribuer les bibliothèques C / C ++ / Fotran.
la source
Nous avons utilisé un peu mordu. Il est joli et s'intègre bien avec Trac, mais c'est une douleur dans le cul à personnaliser si vous avez un flux de travail non standard. De plus, il n'y a tout simplement pas autant de plugins que pour les outils les plus populaires. Actuellement, nous évaluons Hudson en remplacement.
la source
Vérifiez rultor.com . Comme cet article l' explique, il utilise Docker pour chaque build. Grâce à cela, vous pouvez configurer ce que vous voulez dans votre image Docker, y compris Python.
la source
Petit avertissement, j'ai en fait dû créer une solution comme celle-ci pour un client qui voulait un moyen de tester et de déployer automatiquement tout code sur un push git et de gérer les tickets de problème via des notes git. Cela a également conduit à mon travail sur le projet AIMS .
On pourrait facilement juste installer un système de nœud nu qui a un utilisateur de construire et de gérer leur construction par
make(1)
,expect(1)
,crontab(1)
/systemd.unit(5)
etincrontab(1)
. On pourrait même aller plus loin et utiliser ansible et céleri pour les versions distribuées avec un magasin de fichiers gridfs / nfs.Cependant, je ne m'attendrais pas à ce que quelqu'un d'autre qu'un gars d'UNIX Graybeard ou un ingénieur / architecte de niveau Principle aille aussi loin. C'est juste une bonne idée et une expérience d'apprentissage potentielle car un serveur de build n'est rien de plus qu'un moyen d'exécuter arbitrairement des tâches scriptées de manière automatisée.
la source