Sistema de integración continua para una base de código Python -- python campo con continuous-integration campo con extreme-programming camp Relacionados El problema

Continuous Integration System for a Python Codebase


62
vote

problema

Español

Estoy empezando a trabajar en un proyecto de hobby con una base de código python y me gustaría configurar alguna forma de integración continua (es decir, ejecutar una batería de casos de prueba cada vez que un check-in se realiza y envía nag correos electrónicos a personas responsables cuando las pruebas fallan) similares a cruiseControl o teamcity .

Me doy cuenta de que podría hacerlo con los ganchos en la mayoría de los vcses , pero eso requiere que las pruebas se ejecuten en la misma máquina que el servidor de control de la versión, que no es tan elegante como quisiera. ¿Alguien tiene alguna sugerencia para un sistema de integración continuo de código abierto pequeño, fácil de usar, adecuado para una base de código python ?

Original en ingles

I am starting to work on a hobby project with a Python codebase and I would like to set up some form of continuous integration (i.e. running a battery of test-cases each time a check-in is made and sending nag e-mails to responsible persons when the tests fail) similar to CruiseControl or TeamCity.

I realize I could do this with hooks in most VCSes, but that requires that the tests run on the same machine as the version control server, which isn't as elegant as I would like. Does anyone have any suggestions for a small, user-friendly, open-source continuous integration system suitable for a Python codebase?

</div
        

Lista de respuestas

29
 
vote
vote
La mejor respuesta
 

ejecutamos buildbot - trac en el trabajo. Todavía no lo he usado demasiado, ya que mi CodeBase no es parte del ciclo de lanzamiento aún. Pero ejecutamos las pruebas en diferentes entornos (OSX / Linux / Win) y envía correos electrónicos, y está escrito en Python.

 

We run Buildbot - Trac at work. I haven't used it too much since my codebase isn't part of the release cycle yet. But we run the tests on different environments (OSX/Linux/Win) and it sends emails — and it's written in Python.

</div
 
 
28
 
vote

Una posibilidad es Hudson. Está escrito en Java, pero hay integración con los proyectos de Python:

Hudson abraza Python

Nunca lo he probado yo mismo, sin embargo.

( update , septiembre de 2011: Después de una disputa de marca registrada, Hudson ha sido renombrado a jenkins < / a>.)

 

One possibility is Hudson. It's written in Java, but there's integration with Python projects:

Hudson embraces Python

I've never tried it myself, however.

(Update, Sept. 2011: After a trademark dispute Hudson has been renamed to Jenkins.)

</div
 
 
       
       
19
 
vote

Segundo la integración BuildBot - TRAC. Puede encontrar más información sobre la integración en la sitio web de BuildBot . En mi trabajo anterior, escribimos y usamos el complemento que mencionan (TRACBB). Lo que hace el plugin está reescribiendo todas las URL de BuildBot para que pueda usar BuildBot desde TRAC. ( http://example.com/tracbb ).

Lo realmente agradable de BuildBot es que la configuración está escrita en Python. Puede integrar su propio código Python directamente a la configuración. También es muy fácil escribir su propio BuildSteps para ejecutar tareas específicas.

Utilizamos BuildSteps para obtener la fuente de SVN, tire de las dependencias, publique los resultados de las pruebas a WebDAV, etc.

Escribí una interfaz X10 para que pudiéramos enviar señales con resultados de compilación. Cuando la compilación falló, cambiamos una lámpara de lava roja. Cuando la construcción tuvo éxito, una lámpara de lava verde encendida. Buenos tiempos: -)

 

Second the Buildbot - Trac integration. You can find more information about the integration on the Buildbot website. At my previous job, we wrote and used the plugin they mention (tracbb). What the plugin does is rewriting all of the Buildbot urls so you can use Buildbot from within Trac. (http://example.com/tracbb).

The really nice thing about Buildbot is that the configuration is written in Python. You can integrate your own Python code directly to the configuration. It's also very easy to write your own BuildSteps to execute specific tasks.

We used BuildSteps to get the source from SVN, pull the dependencies, publish test results to WebDAV, etcetera.

I wrote an X10 interface so we could send signals with build results. When the build failed, we switched on a red lava lamp. When the build succeeded, a green lava lamp switched on. Good times :-)

</div
 
 
17
 
vote

Utilizamos BuildBot y Hudson para el desarrollo de Jython. Ambos son útiles, sino que tienen diferentes fortalezas y debilidades.

La configuración de BuildBot es python pura y bastante simple una vez que obtiene la colgarla (mire los documentos API generados por EpyDoc para la información más actual). BuilderBot facilita definir las tareas de no prueba y distribuir los evaluadores. Sin embargo, realmente no tiene ningún concepto de pruebas individuales, solo texto textual, HTML y resumen, por lo que si desea tener una salida de prueba navegable de nivel múltiple, y así sucederá que debe construirlo usted mismo, o simplemente usar Hudson. < / p>

Hudson tiene un asalto excelente para perforar los resultados generales en suites de prueba y pruebas individuales; También es ideal para comparar la producción de pruebas entre las compilaciones, pero las cosas distribuidas (maestra / esclava) son comparativamente más complicadas porque también necesita un entorno de Java en los esclavos; Además, Hudson es menos tolerante a los enlaces de red escamosos entre el maestro y los esclavos.

Entonces, para obtener los beneficios de ambas herramientas, ejecutamos una sola instancia de Hudson, que atrapa las fallas de las pruebas comunes, entonces hacemos la regresión multiplataforma con BuildBot.

Aquí están nuestras instancias:

  • jython hudson
  • jython buildbot

 

We use both Buildbot and Hudson for Jython development. Both are useful, but have different strengths and weaknesses.

Buildbot's configuration is pure Python and quite simple once you get the hang of it (look at the epydoc-generated API docs for the most current info). Buildbot makes it easier to define non-testing tasks and distribute the testers. However, it really has no concept of individual tests, just textual, HTML, and summary output, so if you want to have multi-level browsable test output and so forth you'll have to build it yourself, or just use Hudson.

Hudson has terrific support for drilling down from overall results into test suites and individual tests; it also is great for comparing test output between builds, but the distributed (master/slave) stuff is comparatively more complicated because you need a Java environment on the slaves too; also, Hudson is less tolerant of flaky network links between the master and slaves.

So, to get the benefits of both tools, we run a single instance of Hudson, which catches the common test failures, then we do multi-platform regression with Buildbot.

Here are our instances:

  • Jython Hudson
  • Jython buildbot
</div
 
 
 
 
7
 
vote

Estamos usando mordido que está integrado con TRAC. Y se basa en Python.

 

We are using Bitten wich is integrated with trac. And it's python based.

</div
 
 
6
 
vote

TeamCity tiene algunos Python Integración .

pero el teamcity es:

  • no abre-fuente
  • no es pequeño, sino más bien caracteres ricos
  • es gratuito para equipos pequeños a mediados.
 

TeamCity has some Python integration.

But TeamCity is:

  • not open-source
  • is not small, but rather feature rich
  • is free for small-mid teams.
</div
 
 
5
 
vote

Tengo muy buenas experiencias con Travis-CI para bases de código más pequeñas. Las principales ventajas son:

  • La configuración se realiza en menos de la mitad de la pantalla del archivo de configuración
  • Puede hacer su propia instalación o simplemente usar la versión alojada gratis
  • Configuración semiautomática para repositorios de GitHub
  • no se necesita una cuenta en el sitio web; Iniciar sesión a través de GitHub

algunas limitaciones:

  • Python no es compatible como un lenguaje de primera clase (a partir del momento de la escritura; pero puede usar PIP y APT, obtener para instalar dependencias de Python; consulte este tutorial )

  • El código debe ser alojado en GitHub (al menos cuando use la versión oficial)

 

I have very good experiences with Travis-CI for smaller code bases. The main advantages are:

  • setup is done in less than half a screen of config file
  • you can do your own installation or just use the free hosted version
  • semi-automatic setup for github repositories
  • no account needed on website; login via github

Some limitations:

  • Python is not supported as a first class language (as of time of writing; but you can use pip and apt-get to install python dependencies; see this tutorial)

  • code has to be hosted on github (at least when using the official version)

</div
 
 
 
 

Relacionados problema

8  ¿Qué metodología está más cerca del equipo quirúrgico en el Mes Mytico Man-Mes? [cerrado]  ( What methodology is closest to the surgical team in the mythical man month ) 
cerrado . Esta pregunta es basada en opinión . Actualmente no está aceptando respuestas. ¿...

25  ¿Cuál es la diferencia entre Scrum y la programación extrema? [cerrado]  ( What is the difference between scrum and extreme programming ) 
cerrado . Esta pregunta debe ser más enfocado . Actualmente no está aceptando respuestas. ...

5  Programación basada en el desarrollo y la programación de pares [cerrado]  ( Test driven development and pair programming ) 
cerrado . Esta pregunta es basada en opinión . Actualmente no está aceptando respuestas. Cerrado ha...

3  Equipo de programación extrema volátil [cerrado]  ( Volatile extreme programming team ) 
cerrado . Esta pregunta es basada en opinión . Actualmente no está aceptando respuestas. ¿...

8  Historias y tareas ágiles [cerradas]  ( Agile stories and tasks ) 
cerrado . Esta pregunta es basada en opinión . Actualmente no está aceptando respuestas. ¿...

41  Programación de pareja para una entrevista de trabajo [cerrada]  ( Pair programming for a job interview ) 
Según lo que actualmente representa, esta pregunta no es un buen ajuste para nuestro Q & Amp; un formato. Esperamos que las...

62  Sistema de integración continua para una base de código Python  ( Continuous integration system for a python codebase ) 
Estoy empezando a trabajar en un proyecto de hobby con una base de código python y me gustaría configurar alguna forma de integración continua (es decir, ej...

5  ¿La programación de pares significa que no necesita la documentación de diseño? [cerrado]  ( Does pair programming mean you dont need design documentation ) 
cerrado . Esta pregunta es basada en opinión . Actualmente no está aceptando respuestas. ¿...

0  Programación extrema y clientes [cerrados]  ( Extreme programming and clients ) 
Según lo que actualmente representa, esta pregunta no es un buen ajuste para nuestro Q & Amp; un formato. Esperamos que las...

2  ¿Cómo lidiar con la retroalimentación lenta cuando la programación de pares? [cerrado]  ( How to cope with slow feedback when pair programming ) 
cerrado . Esta pregunta debe ser más enfocado . Actualmente no está aceptando respuestas. ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos