Integración continua (con proyectos iOS y Android) [cerrado]

10

Estoy tratando de hacer algunos cambios positivos en mi empresa y uno de los cambios es implementar una integración continua. Hacemos desarrollo móvil (iOS / Android), por lo que necesito un CI que admita ambos tipos de proyectos. Como puede ver, no sé mucho sobre CI, pero busqué en Google un poco y creo que Jenkins y Hudson son los dos más populares.

Tengo una pregunta de dos partes.

  1. ¿Tu pensamiento sobre Jenkins?
  2. ¿Hay alguna manera de que CI verifique si el proyecto se está compilando según los
    estándares de codificación (como acoplamiento flojo, etc.)?
paxx
fuente
3
"Jenkins y Hudson son los dos" ... hmm, ¿sabes que Jenkins es el nuevo nombre de Hudson ?
mosquito
1
¡Realmente no lo sabía! Como dije, soy realmente nuevo en CI y tengo 0 experiencia. Taaaan .. J & H lo mismo .. conjetura que se estrecha mis opciones :)
PAxx
También hay Team City, Cruise Control y otros.
Kyle Hodgson el
@gnat: bueno, creo que Jenkins es un tenedor de Hudson. Creo que Hudson todavía está ahí afuera: hudson-ci.org administrado por Oracle. Jenkins es una muy buena bifurcación que para la mayoría de las personas migró. Lo siento si me equivoco ...
dbalakirev

Respuestas:

9

En primer lugar, es posible que desee ver TeamCity como otra opción para su servidor.

Desde mi punto de vista (aunque tengo algo menos de experiencia con Jenkins que con TeamCity), ambas son herramientas excelentes y muy capaces: sería feliz en un entorno que las use.

Ok, para llegar a la carne del problema, es decir

¿Hay alguna manera de que CI verifique si el proyecto se está compilando según los estándares de codificación (como acoplamiento flojo, etc.)?

En el nivel más fundamental, todo lo que hace un servidor de CI es ejecutar una secuencia de comandos y luego interpretar y presentar los resultados de la ejecución de la secuencia de comandos, por lo que si puede ejecutarla, su servidor de CI probablemente pueda ejecutarla y, si puede formatear la salida adecuadamente, entonces el servidor CI probablemente puede interpretar e informar sobre el resultado.

Por supuesto, los principales servidores de compilación ya son capaces de hablar / integrarse con muchas herramientas populares, por lo que la pregunta es qué herramientas está utilizando para verificar sus estándares de codificación y eso se integra con el servidor de CI que elija.

Sí, el servidor CI aporta mucho más al juego en términos de automatización que simplemente ejecutar un script sin pensar, pero al final del día eso es lo que está haciendo.


Para que quede claro: sé que un servidor de compilación hace más que solo ejecutar scripts, es la automatización del proceso (y en particular la integración con (D) VCS) lo que agrega valor, pero al responder "qué necesito para un servidor de compilación "pregunta, la respuesta es" un servidor y script "todo lo demás fluye desde allí.

Murph
fuente
Utilicé TeamCity con bastante éxito como mi servidor CI para iOS. Me imagino que es obvio usarlo para Android
sylvanaar
5

Secundo la recomendación de TeamCity: es un gran producto. No puedo hablar con Android ya que no tengo tiempo para sentarse allí, pero tengo proyectos de iOS ejecutándose con éxito en CI gracias a dos artículos ( 1 2 ).

Las partes más difíciles realmente tenían que ver con hacer que el Mac ejecute la compilación automatizada con el llavero adecuado y así podría crear una aplicación firmada que podría implementar en un iDevice en lugar de una opción de solo emulador.

Wyatt Barnett
fuente
¿Es posible instalar TeamCity en el servidor Linux y luego hacer que maneje proyectos iOS?
paxx
1
TeamCity no importa, es el agente de compilación. Y para iOS tendrá que implementarlo en una Mac. Solo tiene la cadena de herramientas. Probablemente pueda hacer algunas cosas usando GNUStep, pero sospecho que pasaría un momento bastante frustrante con cualquier cosa no trivial.
Wyatt Barnett
2

He configurado el servidor de compilación y los scripts de nuestra compañía antes de usar Jenkins donde desarrollamos aplicaciones iOS. Como muchos dijeron, el servidor CI es bastante simple y me gusta Jenkins porque es gratuito / de código abierto y tiene muchos complementos como publicar informes de cobertura o integración de github.

Timothy Chen
fuente