2009-07-28 21 views
5

Me han encargado la configuración de un servidor de CI en mi empresa y estoy buscando algunos consejos sobre las configuraciones de compilación que necesito para mis proyectos. Como primer paso que he establecido las compilaciones como:Configuraciones de compilación de integración continua

Commit Cuerpo: compila el código y se ejecuta unidad de prueba
Integración de construcción: compila el código y funciona mucho la ejecución de pruebas de integración

No estoy seguro de qué otra cosa necesitaría completar la imagen de CI. Por ejemplo, ¿qué configuraciones de construcción tienes en tu tienda?

Sé que debe haber un paso para implementar mis compilaciones exitosas, pero ¿convertiría la implementación en parte de Integration?

Usando TeamCity, MSBsuild y SVN

Buscando consejos muy necesarios.

Respuesta

2

Las cosas que ejecutamos en un proyecto anterior en cada ejecución de CI donde Registros de cobertura de código, publican la documentación generada automáticamente y los informes de Checkstyle.

Esto nos dio algunas estadísticas sobre la calidad estadística de cada checkin para planear y mejorar nuestros hábitos de trabajo.

1

Tenemos crear configuraciones para

  • compilación + unidad de pruebas + análisis estático (findbugs en nuestro caso) + cobertura de código (provocada al ser confirmados)
  • pruebas de integración (desencadenadas en un horario siempre que haya es un commit)
  • despliegue de prueba (activado manualmente)

la configuración de implementación permite un recurso de control de calidad no técnica para desplegar en el entorno de prueba cada vez están listos para probar algo, y evita la confusión de si una corrección de error ya ha llegado al entorno de prueba.

6

La compilación más completa que he visto hizo las siguientes cosas en el orden dado. Hay dos grupos, todos los objetivos en cada grupo se ejecutan independientemente de la falla, pero el grupo falla si falla un miembro del grupo. Entonces, vemos TODOS los problemas.

primer grupo de trabajo sobre fuentes:

  • directorio de trabajo limpia
  • actualización de nuevos fuentes, conseguir todo de SVN
  • compilar las fuentes, etc. rmic
  • recursos valudate XML (como al menos en Java había muchos, como descriptores de implementación, hojas de estilo, etc.)
  • análisis de código estático disponible para las fuentes, por ejemplo comprobar espacios en blanco, nombres de convenciones de codificación, nombres de archivos o comprobaciones más sofisticadas realizadas en el AST de la fuente (como PMD lo hace para Java).
  • verifica las convenciones de nombres de otros archivos, p. verificamos los nombres de todas las bibliotecas dependientes para que contengan un número de versión.

segundo grupo está trabajando en el código producido, sólo si el primer paso tuvo éxito:

  • funciona La unidad de prueba pruebas
  • carrera rápida integración
  • hacer análisis de código estático disponible para fuentes (la mayoría de las herramientas para Java lo hacen de esta manera), por ejemplo comprobar si hay patrones típicos de errores (como Findbugs lo hace para Java)
  • hacer la verificación de referencias, p. hacer cumplir las capas de la arquitectura, la asignación del uso de ciertas clases de otras clases, etc.
  • crear el paquete de implementación completa

Ésta es la principal estructura que se activa una vez tras otra para las confirmaciones. Hizo mucho, pero con una máquina poderosa que usaba varios núcleos, fue alrededor de 4 minutos para 500k LOC. Los evaluadores pueden obtener las compilaciones de instantáneas más recientes si así lo desean.

pruebas de integración largos que se ejecuta (2 horas cada una) se ejecuta una vez por la noche y sólo hacer

  • compilar
  • de largo plazo las pruebas de funcionamiento

Otra construcción era una construcción puramente documantion, provocada una vez por noche. Nunca fallaría.

  • crear documentación de la API
  • hacer un análisis de código estático completo con todas las reglas y producir algún tipo de indicador para la calidad general del proyecto
  • informes de cobertura de producto (que es una lástima que no hizo cumplir la cobertura para crecer) de todos los proyectos construidos antes de
  • producen todo tipo de documentación de lujo como el sitio de Maven o Sonar report etc. Esto es para la gestión/QA la mayor parte del tiempo.
1

Tuvimos una conversación similar en la última CITCON América del Norte (integración continua y la conferencia de pruebas) en el que todos compartimos nuestras experiencias y tratamos de armar una hoja de ruta de lo simple CI a muy construido con IC y liberar los sistemas .

Las notas de conferencia originales son here. Junto con un Flickr photostream. A cleaned up version está disponible en el blog de urbancode también.

Los australianos retomó el tema en CITCON Brisbane y un pencast de que está disponible

Esperanza algunos de esos recursos son útiles.

1

Estoy trabajando en esto en este momento. Nuestra configuración de generación hace lo siguiente:

Cuerpo:

  • compilar.
  • Prueba.
  • Combinar diferentes valores de configuración específicos del entorno con una configuración de base (esto nos deja con Staging.config, Test.config etc)
  • crear un archivo llamado version.txt que las listas de tiempos de construcción, los números de revisión, etc.
  • Publicar todo esto a un directorio limpio. Eso es recogido como un artefacto de construcción por teamcity.

Ahora tenemos una aplicación que se puede publicar en cualquier servidor simplemente copiando al directorio de despliegue, y cambiar el nombre del archivo de configuración apropiado web.config

Entonces tenemos 3 más configuraciones de despliegue. El primero se implementa en un entorno de desarrollo después de cada compilación exitosa. Esto nos da una versión de trabajo de la última base de código en todo momento. El segundo se implementa en etapas manualmente. Está configurado para implementar desde la última construcción de desarrollo anclada. Finalmente, hay una configuración de implementación en vivo que luego se implementa desde la última versión implementada. Esto hace varias cosas adicionales:

  • Tag la versión de lanzamiento
  • Crear un archivo de él un lugar en un directorio para guardar mantener
  • revisar todos los comentarios checkin desde la última compilación en vivo y extracto unos con números de boleto. Luego use los títulos de las entradas para generar una lista de cambios preliminar. Esto es editado por el PM antes de ser guardado para la posteridad.
Cuestiones relacionadas