2009-05-29 8 views
32

Tengo curiosidad de ver lo que otros están haciendo durante la acumulación de automatización que no sea de compilación de costumbre, construir, ejecutar-pruebas, etc tareas que podrían ser útiles y de inspiración para que otros lo consideran y se ven en tales como:¿Cuáles son las cosas interesantes y geniales que haces durante la automatización de compilación?

  • Generar documentación de código
  • Utilizando las métricas de código para medir la calidad de compilación y fallar la compilación si se infringen las métricas establecidas.
+11

obligatorio: http://xkcd.com/303/ –

Respuesta

4

Aplicamos una firma digital a todos los binarios que producimos. El script de compilación lo hace automáticamente.

43

Disparando los ejecutables a http://virustotal.com para una exploración de virus contra los principales motores antivirus.

No es que pensemos que nuestros exes contienen virus, pero a veces se obtiene un falso positivo y no se quiere que sea un cliente que lo encuentra. 8-)

+2

Dudo que sea tan importante ... –

+9

No es importante ... a menos que active una coincidencia y definitivamente _is_ :-) –

21

nuestra tiene una cuenta de twitter para que podamos comprobar su estado en cualquier momento desde cualquier lugar

+1

¿Y necesita Twitter para esto? –

+1

¿Qué podría ser más fácil? –

+1

hudson build server – geowa4

6

sitios web Implementar directamente para probar los servidores de implementación.

15

Aquí hay algunas cosas que he hecho, lo hacen o planean hacer:

  • actualización de un semáforo (usando un aparato X10) para indicar el estado de construcción (verde = bueno, amarillo = edificio, de color rojo = ¡whoops!).
  • Genere la documentación del código, luego actualice la wiki del proyecto con la documentación.
  • Otras actualizaciones de wiki del proyecto, como publicar el número de versión actual, proporcionar un enlace de descarga, etc.
  • Despliegue (y retroceda si es necesario) un servidor de prueba donde se realizan las pruebas manuales. Normalmente he hecho esto usando VMWare, por lo que el "despliegue" es realmente la creación de una nueva instancia de máquina virtual.
  • Mueva automáticamente los tickets que están "pendientes de compilación" a QA para probarlos.
  • Crea informes de defectos para pruebas fallidas, compilaciones fallidas y advertencias del compilador.
  • Marque la compilación en el control de la versión (también aplique la información de la versión).
  • Programe una revisión después de X o más compilaciones fallidas dentro de Y días. (por ejemplo, si ocurren tres fallas en una semana, tenemos que reunirnos para averiguar qué está pasando)
  • Programe una fiesta de "pizza y cerveza" para las semanas sin errores.
  • ¡Toca un fuerte "ca-ching!" sonido sobre el sistema PA siempre que se complete una característica que sabemos conducirá a una nueva venta. En mi empresa anterior, nuestro grupo de ventas amaba esta característica inútil :).
+0

La idea del semáforo es realmente buena, también lo hacemos en nuestra oficina y ofrece una muy buena visión general del estado actual de la construcción. La adición de un transmisor UBS que controla seis juegos de tomas de corriente de semáforo en la oficina extiende el conocimiento del estado actual de la construcción. –

2

Varios proyectos en los que he estado tenían grandes pantallas públicas de quién se registró por última vez y quién rompió la compilación. Hicimos esto con Build-o-matic y escribí Team Piazza para mostrar la misma información para Team City compilaciones.

16

Cree un informe para cualquier TODO/FIXME etc. que pueda estar disperso por el código.

+0

Más información sobre esto, por favor :) ¡Gran idea! –

+2

Usamos Hudson junto con el complemento del escáner de tareas: http://wiki.hudson-ci.org//display/HUDSON/Task+Scanner+Plugin – Mark

-3

trabajando en una de la otra presionando plazos o ponerse al día en el correo electrónico (esperar que no es fresco, o interesante ...) bien bien, esto es lo que realmente hacer: http://samurai-ryan.mybrute.com/

+0

No estoy preguntando qué hacer cuando la construcción está en progreso. Te pregunto cómo puedes personalizar tu proceso de construcción, que incluye codificación, escritura de guiones, pensamiento, diseño, etc. –

+0

También juego en mybrute cuando espero compilar :) jaja. ese sitio chupa bolas :(siempre abajo/rompiendo. fallar :(... todavía ... yo ... todavía ... juego ... es ... –

1

Tenemos una aplicación web y han puesto a prueba el rendimiento y pondrán la validación de HTML/CSS en los scripts de prueba.

2

código administrado:

  1. actualizar todos los archivos AssemblyInfo con una versión coherente
  2. Run StyleCop y FxCop y comprobar que el código es a la vez hermoso y de buen comportamiento!

código nativo:

  1. Run depends.exe través de los binarios y comprobar que ninguna dependencia en el tiempo de ejecución de depuración se han infiltrado - sucede con demasiada frecuencia
  2. Uso manifest.exe para volcar el manifiesto archivos y comprobar las dependencias de depuración: ¡esas cosas llegan a todos lados!
  3. Generar enlaces de Python para el código C++ utilizando el TRAGO
+0

¿Sabe que los ensamblajes pueden compartir (como enlaces) los archivos AssemblyInfo? Significa solo tiene que cambiar AssemblyVersion en un lugar y se puede propagar a través de todos los ensamblajes. Consulte http://stackoverflow.com/questions/438782/assembly-versioning-using-cruisecontrol-net/471309#471309 – si618

20

Tenemos un botón de fácil grapas que nos hemos conectado al fuego de la estructura cuando se presiona.

+0

Wow nunca lo había oído antes. .definitivamente quiero uno! :) – fretje

+0

tienes que retrasar los parlantes cuando pase la construcción. – geowa4

2

Para el desarrollo de Java que utilizan:

  • JUnit complementado con Cobertura (Coverage identifica qué partes del código se carece de cobertura de la prueba)
  • encontrar errores - herramienta que rastrea el código en busca de errores y vulnerabilidades
  • Hudson tool (consulte hudson.dev.java.net [No puedo publicar hipervínculos todavía!]) Que gestiona la creación y prueba de software. Tiene una característica como el semáforo de AoP (construcción azul exitosa y todas las pruebas de unidad pasaron, la compilación de amarillo exitoso y algunas pruebas de unidad fallaron, la construcción roja falló).

Hudson también

  • Gestiona la construcción de software a través de plug-ins a SVN, Continuus, etc
  • mantiene un historial de todas las versiones - permitiendo que nuestras pruebas Junit y encontrar errores resultados que se muestran en la tendencia gráficos
  • Envía correos electrónicos a todas las partes interesadas cada vez que la construcción da como resultado un cambio de estado (p. ej. azul a amarillo, rojo a azul)
  • Toda la información se presenta en una página web interna simple
+0

Estaba en un proyecto que usaba Hudson. Pensé que era genial. Creo que esas personas que cambian los semáforos están locos. ¿Cómo van a hacerlo? ¿Sientes si causan un accidente? – Nosredna

+0

No hay semáforos reales.Es un software instalado en sus máquinas. – Geo

4

Algunas cosas.

  1. Subir APP de símbolo a/Servidor de origen < - invaluables para la depuración de accidente Winqual vertederos
  2. pruebas se ejecutan sobre instaladores desplegados en VM 's a través de CC.NET
  3. crear una base de máquina virtual para realizar pruebas a través CC.NET e implementarlo en toda QA
  4. Tome una copia de esa imagen VM y el uso de EggPlant realizar pruebas automatizadas interfaz de usuario
1

Tuvimos una escritura de la estructura que se ha marcado de forma automática el compilar y SVN e implementar la aplicación en el servidor de aplicaciones de WebSphere.

1

Para Java, también puede usar Ivy para obtener automáticamente las bibliotecas que faltan. Por ejemplo, si usa Hibernate, puede o no querer incluir esas bibliotecas en su versión.

7

Avanzar automáticamente en el flujo de trabajo de su problema.

Escribimos un complemento personalizado para nuestro servidor de Bamboo CI que reúne todos los problemas de JIRA relacionados con la compilación (determinado a partir de los comentarios de svn commit) y verifica su estado en JIRA.

Una vez que la construcción tiene éxito (y despliega la aplicación a un servidor que ejecuta), cualquier problema en el "esperando que se construirá" etapa de flujo de trabajo, avanza automáticamente a la "construida y disponible para probar" etapa, que activa un correo electrónico para ser enviado al probador asignado al problema.

Esto significa que nuestros evaluadores reciben correos electrónicos de notificación de problemas no cuando el desarrollador revisa el código, sino cuando la corrección se ejecuta en vivo en un servidor y el verificador realmente puede hacer algo al respecto.

+0

¡Eso suena increíble! –

+0

Me suena VSTS: P –

+0

es su código fuente de complemento de código abierto/disponible? gracias – webwesen

1

Restaurar una base de datos de prueba en Post construir paso:

  • preparar un conjunto de archivos (utilizando TemplateFile tarea)

utilizar estos archivos para

  • eliminar la prueba db
  • haga una copia de seguridad del db central
  • restaurarlo a un nuevo caso del DB prueba
  • Ejecutar secuencias de comandos SQL en la inicialización db prueba (utilizando Sql.Execute tarea)
  • convertir (usando Xml.XslTransform tarea) archivos de datos XML para los archivos SQL (inserciones)
  • ellos se ejecutan en la prueba db

Después de esto tenemos una base de datos de ensayo limpio, con el esquema correcto, todos los datos fijos de la entonces algunos datos de prueba adicionales db central y.

Sería mejor si el esquema y los datos fijos también estuvieran en datos comparables y archivos sql, pero eso es WIP. El db central aún no está, pero debe estar en control de fuente.

1

Ejecución de pruebas unitarias y herramientas de análisis de código como NDepend, Gandarme. Los resultados son publicados por CC.Net

2

Construimos BizTalk 2006 proyectos :)

+1

Apuesto a que los downvoters nunca trataron de hacer eso ellos mismos. Lo he intentado y es una pesadilla. ¡Bien hecho! –

1

¿Qué hay de la incrustación de una marca de tiempo en tiempo de compilación en cada imagen construida?

<ItemGroup> 
    <StampFile Include="BuildTimestamp.cs"/> 
</ItemGroup> 

<Target Name="BuildTimestamp" 
     Outputs="@(StampFile)"> 
    <Message Text="Building Timestamp..." /> 
    <Touch 
    AlwaysCreate = "true" 
     Files="@(StampFile)" /> 

    <WriteLinesToFile 
     File="@(StampFile)" 
     Lines='public static class Build { public static string Timestamp = "%(StampFile.CreatedTime)" %3B }' 
     Overwrite="true"/> 
</Target> 

Se podría extender esto a incluir el nombre de la máquina, la fase de la luna, etc.

1

Algunas cosas que hemos hecho:

  1. firmar digitalmente todos los exes
  2. PDB Archivo
  3. Crear instaladores usando WIX
  4. Producir archivos .iso completos para software que se distribuye en CD o DV D
1

Aquí hay algunas cosas que por lo general tienen en Continuous Integration:

  • cálculo de métricas de código y las estadísticas de rendimiento (capturado por nuestro marco, mientras que las pruebas se ejecutan;
  • ejecutando pruebas de calidad de código que hacen cumplir ciertas pautas de desarrollo (es decir: nomenclatura de clases, inmutabilidad, referencias permitidas);
  • actualizando la documentación en línea que se genera a partir del código;
  • poniendo paquetes de instalación (WiX & ClickOnce) en el servidor de implementación y actualizando el manifiesto necesario para las actualizaciones automáticas;
  • actualización de la página "Descargar" para proyectos de código abierto;
  • notificando a todas las partes involucradas sobre la compilación y los resultados.
1

Utilizamos 'Checkstyle' (http://checkstyle.sourceforge.net/anttask.html) para generar un informe para el código que podría haber sido recientemente registramos y no revisado (formalmente) antes construye el desarrollador. Además, me han escrito algunas tareas personalizadas que hacer lo siguiente:

  1. Comprobar si las propiedades de conexión de base de datos y trata de hacer una conexión real a la base de datos (código JDBC simple) y reportar si cualquier edición de credenciales de usuario, etc. están presentes.
  2. Añadir el nombre de usuario y la marca de tiempo de la última generación para el código
  3. enviar una notificación a nuestro cliente de mensajería instantánea corporativa (lista personalizada) con el estado de la construcción

hay varios más tareas que están allí pero son específicos de la configuración relacionada con el entorno interno .

2

Hacemos un análisis de compatibilidad binaria (utilizando la reflexión) en contra de nuestra última publicación pública para asegurarnos de que no introduzcamos cambios de rotura binarios por accidente. Cada vez que nos vemos obligados a realizar un cambio radical, agregamos la API específica a la lista de "cambios de interrupción aceptados" para que la siguiente compilación pueda omitir las pruebas. Cuando llega el momento del lanzamiento, tenemos una lista completa de las API que se rompen en la nueva versión.

+0

+1 tratando de hacer lo mismo con Clirr para Java. Sin embargo, es de alguna manera molesto ya que hay muchos problemas con las clases anidadas y los aspectos tejidos, lo que hace que Clirr no se pueda utilizar en algunos módulos. – mhaller

1

Tenemos un Nabaztag/tag que muestra si se produce algún error en el servidor de compilación.

+0

Para obtener más información acerca del conejito, consulte http://stackoverflow.com/questions/709906/how-have-you-ever-interacted-with-a-nabaztag – peSHIr

12

tirar de una imagen al azar fuera failblog.com para insertarse en el 'construir fallido' de correo electrónico.

+0

Por supuesto, todos están esperando a que la compilación se rompa para que puede obtener una imagen divertida en el correo. =) –

1

Verdaderamente me sorprende que nadie ha mencionado actualización de los archivos de configuración! Actualizamos nuestros archivos de configuración b en función del entorno que estamos creando para usar el script de compilación. Se ahorra el atleast 20 mintuos que se necesitaría para reemplazar todos los connectionStrings y appsettings. Otras cosas que hacemos son:

actualización de la versión número
Mover a los servidores de prueba
Ejecutar análisis de código
Email Status
Ejecutar algunos scripts de base

+0

Nosotros (y muchos equipos que conozco) usamos archivos de propiedades para diferentes entornos de destino. Esto evita la necesidad de reemplazar cualquier cosa después de la construcción. El proyecto de compilación ya se activa con el valor correcto, por lo que el paquete ya está creado para el objetivo correcto. Supongo que depende de cómo se escriban los scripts de compilación. –

1

no he leído más de la mitad de las respuestas aquí, pero espero que algunos de estos sean "nuevos":

  • Instalación y actualización de una versión anterior para verificar las diferencias de archivos de una nueva instalación (prueba nuestra implementación configuración de actualización)
  • Despliegue nuestra aplicación central y adaptadores de sistema externos a un Jboss personalizado (incluido en el proyecto/versión), inicie y ejecute suites de prueba SoapUI para verificar la funcionalidad completa (también una prueba adicional para nuestra implementación automatización)
  • aplicar secuencias de comandos delta a una versión anterior base de datos y luego hacer una comparación estructural de una nueva instalación para que las nuevas tablas, columnas, etc.se crea durante las actualizaciones
  • publicar nuestros documentación de la versión en Confluencia (que básicamente ejecutar nuestro script de liberación completa cada noche), como una vista previa de la próxima versión del tronco
1

Hacemos mucho: con MSBUILD

  • fuentes Obtención
  • información Asamblea de actualización con indicación de la hora y último conjunto de cambios en la información de archivo y la información de la versión
  • Compilar :)
  • pruebas se ejecutan con Galio
  • Crear informe de la prueba, con indicación de la hora actual y la publican en IIS
  • Crear un paquetes postales de todos los binarios necesarios
  • publicar paquetes postales en SVN
  • archivo SLN Unbind de TFS
  • Eliminar todos los archivos bin/obj
  • publica código fuente en SVN
  • Enviar correo electrónico, después de construir el éxito o el fracaso
  • aplicación Implementar el uso de NANT scrip ts
1

Aparte de control de versiones, la firma y la prueba etc ya se ha mencionado aquí varias veces, también:

  • plazo spdisposeCheck para de SharePoint-DLL
  • plazo Sigcheck (de sysinternals) para crear una buena descripción general de las versiones y los certificados aplicados
Cuestiones relacionadas