11

Por lo tanto, un amigo y yo hemos estado discutiendo la integración continua y los scripts bat/powershell en comparación con los servidores de CI como CruiseControl.Net o Hudson.Integración continua: servidor PowerShell frente a CI (CC.NET o Hudson)

El siguiente script de pseudo de powershell funciona para actualizar desde SVN, compilar mediante msbuild, implementar/copiar, actualizar un número de compilación/revisión en la aplicación y correos electrónicos en compilaciones fallidas. El siguiente paso sería agregar llamadas a MSTest y enviar por correo electrónico los resultados cuando no tengan éxito.

  1. svn update
  2. msbuild> build_deploy_development_out_msbuild
  3. ([xml] (SVN información --xml)). Info.entry.commit.revision + [Char] + 13 [Char] + 10 (eco % date%% time%)> build_revision_number.html
  4. $ linenumber = Seleccionar-String build_deploy_development_out_msbuild -pattern "Build Failed" | Seleccionar-objeto Linenumber
  5. $ smtp = New-Object System.Net.Mail.SMTPClient -ArgumentList localhost | if ($ LineNumber> 0) $ smtp.Send ("De: Enviar", "Para: Correo electrónico", "compilación falló", "! construir falló ... alguien debe morir")

Esto tiene me llevan a la pregunta del valor de los servidores de CI, cuando puede escribir sus propios scripts de shell para lograr el mismo objetivo, utilizando las herramientas específicas del proyecto (herramienta de compilación, control de fuente, prueba de unidad) (es decir, msbuild, nant, svn , git, nunit, mstest, etc.)

No he tenido el costo de mantenimiento hasta el momento. Quería obtener opiniones de otros en el lanzamiento de su propio script de shell frente a CruiseControl.Net o Hudson. Tenga en cuenta que no tengo experiencia con servidores de CI, por lo tanto, la pregunta, por lo tanto, no tome esto como algo crítico con los servidores de CI; Simplemente no sé cuál es la mejor respuesta, y pensé que podría preguntarle a la comunidad.

Los mejores deseos! Pete Gordon

+0

Esto debería ser wiki de la comunidad, ya que no hay una respuesta clara –

+0

¿Por qué CC.NET o Hudson incluso aparecen en la lista? Esto parece una pregunta de Powershell VS CI. ¿Por qué la semántica? – TheOptimusPrimus

Respuesta

3

He instalado Hudson hace un par de semanas para reemplazar el servidor actual de CruiseControl. La mayor ventaja que veo en Hudson es que casi cualquiera puede usarlo, mientras que el lanzamiento de una compilación parametrizada con CruiseControl (o un archivo por lotes) todavía da miedo a mucha gente.

Normalmente tiendo a escribir todos mis scripts de compilación con Ant (porque es portátil), inserto un par de parámetros y los invoco desde Hudson.

Hudson le da a sus scripts una gran visibilidad (todo se puede ver en la página principal) y se explican por sí mismos. Por lo general, con un script bash, necesita escribir un archivo Léame (que nadie lee) y recordar dónde están ubicados.

3

... o tiene ambos. Ayende (el creador de Rhino Mocks) lo ha hecho recientemente. Escribió un servidor de CI usando PowerShell. Tal vez this proporciona nuevos conocimientos para su discusión.

9

Servidores CI le dan varias ventajas:

  • acceso a la Web, por lo general con capacidad de integrarse con mecanismos de autenticación existentes (ver apoyo ActiveDirectory/LDAP de Hudson)
  • Toneladas de apoyo existentes para las pruebas unitarias, archivo zip creationg, etc.
  • Hudson (y otros) admite los nodos de compilación esclava, para realizar tareas distribuidas de CI.
  • No necesita mantenerlo usted mismo.

Algunos de éstos pueden no ser las cosas que necesita ahora Pero, ¿estás seguro de que no son cosas que pueda necesitar en el futuro?

+1

Me encantaría ver una encuesta sobre el uso de este tipo de características por parte de las personas. No estoy 100% seguro de que los entiendo a todos. Me hizo sentir curiosidad sobre el archivo comprimido zip en powershell, y encontré esto ... http://tfl09.blogspot.com/2008/12/zip-files-with-powershell.html ¡Gracias! – petegordon

+1

He usado algunas de estas características y he creado algunos complementos Hudson adhoc para resolver algunas necesidades específicas del proyecto. El aspecto más importante con Hudson es que se trata de un proyecto en crecimiento con un número cada vez mayor de complementos. –

+0

¿Cómo llevarías a cabo compilaciones actuales con Powershell? ¿Cómo administrarías el control de versiones, implementaciones y cobertura de códigos? ¿Por qué reinventar la rueda? – TheOptimusPrimus

1

Durante un año intenté mantener las secuencias de comandos python personalizadas para hacer cosas básicas de CI: recibir notificaciones de confirmaciones por correo electrónico, verificar y construir cosas, enviar de nuevo las críticas y felicitaciones, luego cuando se trataba de publicando esto para que lo usen todos los demás en mi equipo, resultó imposible utilizarlo sin monitoreo, acceso web, etc.

Luego me sumergí en buildbot y me pareció realmente hermoso. He configurado básicamente el mismo proceso en un par de días. Build script es un verdadero objeto python, que se puede personalizar en el maestro, desde donde se transfiere a los esclavos y se ejecuta allí. Basado en framework retorcido, eso es un montón de cosas listas para usar;)

La IU web es minimalista, aunque suficiente.

Bueno, esto es sin publicar también, aunque estoy cerca de ella esta vez%)

1

continuación son mis pensamientos sobre IC Server a través de un scripts de PowerShell

  • altamente configurable plugins están disponibles para todos los diferentes tipos de control de versiones, notificaciones y pruebas.
  • Registros Estos se mantienen maravillosamente. El fracaso y los registros de construcción exitosos están al alcance de tu mano.
  • Programación Puede configurar todo tipo de programación incluyendo triggerring basa en otra construcción exitosa
  • Seguridad puede definir distintos grupos de poder ejecutar, ver única o conjunto para ver algunos proyectos
  • Visibilidad Puede usar un panel de control web o cctray para diferentes audiencias.
  • Escalabilidad. Fácil de escalar cuando sea necesario.

En pocas palabras, si tiene que mantener muchas compilaciones para diferentes proyectos de entorno y equipo, CI Server es el camino a seguir. Aparte de eso, un simple script de PowerShell es suficiente para pequeños proyectos. Una vez que el proyecto crece, puede conectar la secuencia de comandos de PowerShell existente a un servidor de CI.

Cuestiones relacionadas