Domanda

Sto iniziando a lavorare su un progetto hobby con a Pitone codebase e vorremmo impostare una qualche forma di integrazione continua (ad es.eseguendo una serie di casi di test ogni volta che viene effettuato un check-in e inviando fastidiose e-mail alle persone responsabili quando i test falliscono) simile a Regolazione automatica della velocità O TeamCity.

Mi rendo conto che potrei farlo con i ganci nella maggior parte dei casi VCS, ma ciò richiede che i test vengano eseguiti sulla stessa macchina del server di controllo della versione, il che non è così elegante come vorrei.Qualcuno ha qualche suggerimento per un sistema di integrazione continua piccolo, facile da usare e open source adatto per a Pitone base di codice?

È stato utile?

Soluzione

Corriamo Buildbot-Trac al lavoro.Non l'ho usato molto poiché la mia base di codice non fa ancora parte del ciclo di rilascio.Ma eseguiamo i test su ambienti diversi (OSX/Linux/Win) e invia e-mail — ed è scritto in Python.

Altri suggerimenti

Una possibilità è Hudson.È scritto in Java, ma c'è l'integrazione con i progetti Python:

Hudson abbraccia Python

Non l'ho mai provato personalmente, tuttavia.

(Aggiornamento, settembre2011:Dopo una controversia sul marchio, Hudson è stato ribattezzato Jenkins.)

Seconda l'integrazione Buildbot - Trac.Puoi trovare ulteriori informazioni sull'integrazione su Sito web di Buildbot.Nel mio lavoro precedente, abbiamo scritto e utilizzato il plugin menzionato (tracbb).Ciò che fa il plugin è riscrivere tutti gli URL di Buildbot in modo da poter utilizzare Buildbot da Trac.(http://esempio.com/tracbb).

La cosa veramente bella di Buildbot è che la configurazione è scritta in Python.Puoi integrare il tuo codice Python direttamente nella configurazione.È anche molto semplice scrivere i tuoi BuildSteps per eseguire attività specifiche.

Abbiamo utilizzato BuildSteps per ottenere il sorgente da SVN, estrarre le dipendenze, pubblicare i risultati dei test su WebDAV, eccetera.

Ho scritto un'interfaccia X10 in modo da poter inviare segnali con i risultati della build.Quando la costruzione fallì, accendemmo una lampada lava rossa.Quando la costruzione ebbe successo, una lampada di lava verde si accese.Bei tempi :-)

Utilizziamo sia Buildbot che Hudson per lo sviluppo di Jython.Entrambi sono utili, ma hanno diversi punti di forza e di debolezza.

La configurazione di Buildbot è puro Python e abbastanza semplice una volta capito come funziona (guarda i documenti API generati da epydoc per le informazioni più aggiornate).Buildbot semplifica la definizione di attività non di test e la distribuzione dei tester.Tuttavia, in realtà non ha il concetto di test individuali, solo output testuale, HTML e di riepilogo, quindi se vuoi avere un output di test esplorabile a più livelli e così via dovrai crearlo tu stesso o semplicemente usare Hudson.

Hudson dispone di un supporto eccezionale per l'analisi approfondita dei risultati complessivi nelle suite di test e nei test individuali;è ottimo anche per confrontare l'output dei test tra build, ma le cose distribuite (master/slave) sono relativamente più complicate perché è necessario un ambiente Java anche sugli slave;inoltre, Hudson è meno tollerante nei confronti dei collegamenti di rete instabili tra master e slave.

Quindi, per ottenere i vantaggi di entrambi gli strumenti, eseguiamo una singola istanza di Hudson, che rileva gli errori comuni dei test, quindi eseguiamo la regressione multipiattaforma con Buildbot.

Ecco le nostre istanze:

Stiamo usando Morso che è integrato con trac.Ed è basato su Python.

TeamCity ha un po' di Python integrazione.

Ma TeamCity è:

  • non open source
  • non è piccolo, ma piuttosto ricco di funzionalità
  • è gratuito per i team medio-piccoli.

Ho esperienze molto positive con Travis-CI per basi di codice più piccole.I principali vantaggi sono:

  • la configurazione viene eseguita in meno di mezza schermata del file di configurazione
  • puoi eseguire la tua installazione o semplicemente utilizzare la versione ospitata gratuita
  • configurazione semiautomatica per i repository github
  • nessun account necessario sul sito web;accedi tramite github

Alcune limitazioni:

  • Python non è supportato come linguaggio di prima classe (al momento della scrittura;ma puoi usare pip e apt-get per installare le dipendenze Python;Vedere questo tutorial)

  • il codice deve essere ospitato su github (almeno quando si utilizza la versione ufficiale)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top