
Αρχίζω να εργαστεί σε ένα πρόγραμμα χόμπι με **Python** βάση κώδικα και θα ήθελα να δημιουργήσει κάποια μορφή συνεχούς ολοκλήρωσης (δηλαδή τρέχει μια μπαταρία των δοκιμών περιπτώσεις κάθε φορά που το check-in γίνεται και η αποστολή γκρινιάζουν e-mail στην υπεύθυνη πρόσωπα, όταν οι δοκιμές δεν) είναι παρόμοια με **CruiseControl** ή **TeamCity** .


Αντιλαμβάνομαι θα μπορούσα να κάνω αυτό με άγκιστρα στα περισσότερα **VCSes** , αλλά αυτό προϋποθέτει ότι οι δοκιμές τρέχουν στον ίδιο υπολογιστή με το διακομιστή ελέγχου έκδοσης, η οποία δεν είναι τόσο κομψό όσο θα ήθελα. Υπάρχει κάποιος που έχει οποιεσδήποτε προτάσεις για ένα μικρό, φιλικό προς το χρήστη, το σύστημα συνεχούς ολοκλήρωσης open-source κατάλληλο για **Python** βάση κώδικα;

 
Σύστημα Συνεχής Ολοκλήρωσης για Python βάση κώδικα
==================================================



Τρέχουμε [Buildbot - Trac](http://buildbot.net/trac) στην εργασία. Δεν έχω χρησιμοποιήσει πάρα πολύ από την βάση κώδικα μου δεν είναι μέρος του κύκλου κυκλοφορίας ακόμα. Αλλά θα τρέξει τις δοκιμές σε διαφορετικά περιβάλλοντα (OSX / Linux / Win) και στέλνει μηνύματα ηλεκτρονικού ταχυδρομείου - και είναι γραμμένο σε Python.

 

Μια πιθανότητα είναι Hudson. Είναι γραμμένο σε Java, αλλά δεν υπάρχει ενοποίηση με τα προγράμματα Python:



> 
> [Hudson αγκαλιάζει Python](http://redsolo.blogspot.com/2007/11/hudson-embraces-python.html)
> 
> 
> 


Δεν έχω δοκιμάσει τον εαυτό μου, όμως.


( **Update** , Σεπτ 2011: Μετά από μια διαφωνία εμπορικών σημάτων Hudson έχει μετονομαστεί σε [Jenkins](http://jenkins-ci.org/) .)

 

Δεύτερη η Buildbot - ενσωμάτωση Trac. Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με την ενσωμάτωση στην [ιστοσελίδα Buildbot](http://buildbot.net/trac/wiki/BuildbotAndTrac) . Στην προηγούμενη δουλειά μου, γράψαμε και χρησιμοποίησε το plugin θα αναφέρουμε (tracbb). Τι το plugin που κάνει είναι ξαναγράψιμο όλες τις διευθύνσεις URL Buildbot ώστε να μπορείτε να χρησιμοποιήσετε Buildbot μέσα από Trac. ( [Http://example.com/tracbb](http://example.com/tracbb) ).


Το πολύ ωραίο πράγμα για Buildbot είναι ότι η διαμόρφωση είναι γραμμένο σε Python. Μπορείτε να ενσωματώσετε το δικό σας κώδικα Python άμεσα στη διαμόρφωση. Είναι επίσης πολύ εύκολο να γράψετε τη δική σας BuildSteps να εκτελέσει συγκεκριμένες εργασίες.


Χρησιμοποιήσαμε BuildSteps για να πάρει την πηγή από SVN, τραβήξτε τις εξαρτήσεις, δημοσιεύει τα αποτελέσματα των δοκιμών σε WebDAV, και τα λοιπά.


Έγραψα μια διεπαφή X10 έτσι θα μπορούσαμε να στέλνουν σήματα με τα αποτελέσματα κατασκευής. Όταν η κατασκευή απέτυχε, αλλάξαμε σε κόκκινο λάμπα λάβας. Όταν η κατασκευή πέτυχε, μια πράσινη λάμπα λάβας σε λειτουργία. Καλές στιγμές :-)

 

Χρησιμοποιούμε τόσο Buildbot και Hudson για την ανάπτυξη Jython. Και οι δύο είναι χρήσιμα, αλλά έχουν διαφορετικά πλεονεκτήματα και αδυναμίες.


διαμόρφωση Buildbot είναι καθαρή Python και είναι αρκετά απλό μόλις πάρετε κρεμάτε από το (δείτε τις epydoc που δημιουργείται docs API για την πιο πρόσφατη πληροφορίες). Buildbot καθιστά ευκολότερο να προσδιοριστούν τα καθήκοντα μη-δοκιμή και διανομή των δοκιμαστές. Ωστόσο, αυτό πραγματικά δεν έχει καμία έννοια των ατομικών δοκιμών, μόνο κειμένου, HTML, και περίληψη της παραγωγής, οπότε αν θέλετε να έχετε πολυεπίπεδη εξόδου δυνατότητα περιήγησης δοκιμής και ούτω καθεξής, θα πρέπει να το φτιάξετε μόνοι σας, ή απλά να χρησιμοποιήσετε Hudson.


Hudson έχει καταπληκτική υποστήριξη για γεώτρηση κάτω από τα συνολικά αποτελέσματα σε σύνολα δοκιμών και μεμονωμένες δοκιμές? Επίσης, είναι μεγάλη για τη σύγκριση εξόδου δοκιμής μεταξύ χτίζει, αλλά η κατανεμημένη (master / slave) τα πράγματα είναι συγκριτικά πιο περίπλοκη, γιατί θα πρέπει να έχετε ένα περιβάλλον Java για τους σκλάβους πολύ? Επίσης, Hudson είναι λιγότερο ανεκτικοί φύλλο συνδέσεις δικτύου μεταξύ του πλοιάρχου και των σκλάβων.


Έτσι, για να πάρει τα οφέλη και των δύο εργαλείων, θα τρέχει ένα μόνο παράδειγμα της Hudson, που πιάνει τα κοινά αποτυχίες δοκιμασία, τότε θα κάνουμε παλινδρόμησης πολλαπλών πλατφορμών Buildbot.


Εδώ είναι περιπτώσεις μας:


* [Jython Hudson](http://bob.underboss.org:8080/job/jython/lastBuild/testReport/)
* [Jython buildbot](http://www.acm.uiuc.edu/jython-buildbot/waterfall)

 

Είμαστε χρησιμοποιώντας [Bitten](http://bitten.edgewall.org/) διασκορπισμένες έχει ενσωματωθεί με trac. Και αυτό είναι python βάση.

 

TeamCity έχει κάποια Python [ολοκλήρωσης](http://www.jetbrains.net/confluence/display/TW/Python+Unit+Test+Reporting) .


Αλλά TeamCity είναι:


* Δεν open-source
* Δεν είναι μικρό, αλλά πλούσιο σε δυνατότητες
* είναι ελεύθερη για μικρές-μεσαίες ομάδες.

 

Έχω πολύ καλές εμπειρίες με [Travis-CI](http://travis-ci.org/) για μικρότερες βάσεις κώδικα. Τα κύρια πλεονεκτήματα είναι:


* εγκατάσταση γίνεται σε λιγότερο από μισή οθόνη αρχείο ρυθμίσεων
* μπορείτε να κάνετε τη δική σας εγκατάσταση ή απλά να χρησιμοποιήσετε τη δωρεάν φιλοξενείται έκδοση
* ημι-αυτόματη ρύθμιση για τα αποθετήρια GitHub
* Δεν λογαριασμό που απαιτούνται για την ιστοσελίδα? συνδεθείτε μέσω του GitHub


Ορισμένοι περιορισμοί:


* Python δεν υποστηρίζεται ως πρώτη γλώσσα κατηγορίας (από τη στιγμή της γραφής? Αλλά μπορείτε να χρησιμοποιήσετε pip και apt-get για την εγκατάσταση των εξαρτήσεων python? Δείτε [αυτό το σεμινάριο](http://www.travisswicegood.com/2011/11/11/travis-and-python/) )
* κωδικός πρέπει να φιλοξενείται σε GitHub (τουλάχιστον όταν χρησιμοποιείτε την επίσημη έκδοση)

 