Pregunta

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

Me doy cuenta de que podría hacer esto con ganchos en la mayoría VCS, pero eso requiere que las pruebas se ejecuten en la misma máquina que el servidor de control de versiones, lo cual no es tan elegante como me gustaría.¿Alguien tiene alguna sugerencia para un sistema de integración continua pequeño, fácil de usar y de código abierto adecuado para un Pitón ¿Código base?

¿Fue útil?

Solución

Corremos Construir robot - Trac en el trabajo.No lo he usado demasiado ya que mi código base aún no forma parte del ciclo de lanzamiento.Pero ejecutamos las pruebas en diferentes entornos (OSX/Linux/Win) y envía correos electrónicos, y está escrito en Python.

Otros consejos

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

Hudson abraza a Python

Sin embargo, nunca lo he probado.

(Actualizar, septiembre.2011:Después de una disputa sobre marcas registradas, Hudson pasó a llamarse Jenkins.)

En segundo lugar, la integración Buildbot - Trac.Puedes encontrar más información sobre la integración en el Sitio web de Buildbot.En mi trabajo anterior, escribimos y usamos el complemento que mencionan (tracbb).Lo que hace el complemento es reescribir todas las URL de Buildbot para que pueda usar Buildbot desde Trac.(http://ejemplo.com/tracbb).

Lo realmente bueno 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 tus propios BuildSteps para ejecutar tareas específicas.

Usamos BuildSteps para obtener el código fuente de SVN, extraer las dependencias, publicar los resultados de las pruebas en WebDAV, etc.

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

Usamos Buildbot y Hudson para el desarrollo de Jython.Ambos son útiles, pero tienen diferentes fortalezas y debilidades.

La configuración de Buildbot es Python puro y bastante simple una vez que lo dominas (consulta los documentos API generados por epydoc para obtener la información más actualizada).Buildbot facilita la definición de tareas que no son de prueba y la distribución de los evaluadores.Sin embargo, realmente no tiene ningún concepto de pruebas individuales, solo texto, HTML y resultados de resumen, por lo que si desea tener resultados de pruebas navegables de varios niveles, etc., tendrá que crearlos usted mismo o simplemente usar Hudson.

Hudson cuenta con un excelente soporte para profundizar desde los resultados generales hasta los conjuntos de pruebas y las pruebas individuales;también es excelente para comparar resultados de pruebas entre compilaciones, pero el material distribuido (maestro/esclavo) es comparativamente más complicado porque también se necesita un entorno Java en los esclavos;Además, Hudson es menos tolerante con los vínculos de red inestables entre el maestro y los esclavos.

Entonces, para obtener los beneficios de ambas herramientas, ejecutamos una única instancia de Hudson, que detecta las fallas de prueba comunes, luego hacemos una regresión multiplataforma con Buildbot.

Aquí están nuestras instancias:

Estamos usando Mordido que está integrado con trac.Y está basado en Python.

TeamCity tiene algo de Python integración.

Pero TeamCity es:

  • no de código abierto
  • no es pequeño, sino rico en funciones
  • Es gratuito para equipos pequeños y medianos.

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 media pantalla del archivo de configuración.
  • puedes hacer tu propia instalación o simplemente usar la versión alojada gratuita
  • configuración semiautomática para repositorios de github
  • no se necesita cuenta en el sitio web;iniciar sesión a través de github

Algunas limitaciones:

  • Python no es compatible como lenguaje de primera clase (al momento de escribir este artículo;pero puedes usar pip y apt-get para instalar dependencias de Python;ver este tutorial)

  • el código debe estar alojado en github (al menos cuando se usa la versión oficial)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top