Integración continua para proyectos Xcode?


Después de usar Hudson para la integración continua con un proyecto anterior, quiero configurar un servidor de integración continua para los proyectos de iPhone en los que estoy trabajando ahora. Después de hacer algunas investigaciones, parece que no hay ningún motor de CI diseñado específicamente para Xcode, pero un tipo ha tenido éxito usando Control de crucero combinado con la herramienta CLI de xcodebuild. ¿Alguien ha intentado esto? ¿Hay algún motor de CI que funcione bien con proyectos Xcode?

Probablemente voy a dar Control de Crucero un intento. Publicaré una respuesta con mis hallazgos.

Author: Mike Akers, 2008-10-17

9 answers

Estoy usando Hudson con éxito en el mac con xcodebuild. Con el lanzamiento del sdk de iPhone 3.0, tiene un control competitivo sobre el objetivo, la configuración y el sdk contra los que se va a construir el proyecto.

Es tan simple como crear un paso de compilación en Hudson y decirle a xcodebuild que construya el proyecto:

xcodebuild -target "myAppAppStore" -configuration "DistributionAppStore" -sdk iphoneos2.1

El trabajo inicial ha dado sus frutos para mí ya que mis compilaciones simplemente funcionan sin ningún pensamiento adicional. He escrito una descripción detallada en mi blog si alguien es interesar.

Distribución de aplicaciones iPhone fácil

 37
Author: Silentcode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-05 13:36:17

Resucitando este hilo. No encontré una solución satisfactoria para obtener compilaciones XCode automatizadas con pruebas unitarias en un servidor de compilación, así que investigué y codifiqué. El resultado es esta entrada de blog explicándolo todo y este script Ruby que convierte la salida de OCUnit de xcodebuild al formato XML que JUnit usa para los informes de prueba. El servidor de compilación que elegí fue Hudson .

Actualización 3/2 2012: He actualizado esto para usar algunos scripts de shell personalizados para construyendo y corriendo. Disponible aquí. Es bueno no solo para la integración continua, sino también para construir desde la línea de comandos en su propia máquina.

 13
Author: Ciryon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-03 09:31:21

Adium está usando buildbot con Xcode de manera bastante efectiva. Escribimos un makefile simple que llama a xcodebuild con los destinos y configuraciones adecuados, pero estoy bastante seguro de que es opcional.

 9
Author: Colin Barrett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-17 17:39:09

Apple acaba de lanzar (10 de junio de 2013) para OSX Mavericks(OS X 10.9) una nueva plataforma de integración continua que es la solución de integración continua más integrada que he visto antes. Está disponible en developer.apple.com, aquí en esta página tiene los detalles:

Https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/

Recomiendo ver la presentación de wwdc 2013 sobre el tema.

 9
Author: Rafael Gorski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-01 10:26:24

He utilizado CruiseControl con Xcode (similar a lo que sugirió Pragmatic Automation) y tuve un éxito razonable. También estoy muy familiarizado con CruiseControl y es relativamente horrible configuración de formato de configuración.

También he usado BuildBot con buenos resultados, pero descubrí que sus fortalezas realmente no coincidían con mis necesidades (esclavos distribuidos construyendo e informando a través de múltiples sistemas diferentes). Configurar buildbot puede ser un arte en sí mismo, aunque no es difícil. Todo es esencialmente escribir scripts en Python.

Desde que Hudson está disponible, lo recomendaría como una vía para ejecutar la integración continua. Tiene una interfaz basada en web (la principal deficiencia de CruiseControl en mi mente) y es muy flexible en los diversos sistemas que soporta. Puede invocar compilaciones basadas en línea de comandos con bastante facilidad y muy obviamente. Dicho esto, no he configurado una instancia usando Hudson y Xcode, donde tengo para los otros sistemas, por lo que esto es parcialmente especulación de mi parte.

 8
Author: heckj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-20 18:49:37

Creo que aún deberías poder usar Hudson. Hudson es muy flexible y le permite también usar scripts de shell para construir: Scripts de Shell y Comandos por lotes de Windows

Simplemente ingrese allí xcodebuild. Eche un vistazo a la página man de xcodebuild para ver las opciones de xcodebuild.

 4
Author: catlan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-18 14:30:16

Si no te importa vivir a la vanguardia, acabo de enviar un xcode builder para CruiseControl.

 4
Author: Jeffrey Fredrick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-27 11:30:37

Jenkins parece funcionar bien para algunas personas. (Aunque, nunca he usado ningún servidor CI antes. )

Https://wiki.jenkins-ci.org/display/JENKINS/Xcode + Plugin

 1
Author: bentford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-07 17:03:48

Jenkins funciona bien. Puede construir su proyecto xcode escribiendo su propio script de shell y luego dejar que Jenkins lo ejecute,o también puede usar el complemento xcode.

Pero hay que ser consciente del problema de la autoridad. Con pequeños ajustes en las configuraciones de Jenkins, podrá administrar su servidor CI en muy poco tiempo.

 0
Author: Tinolover,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-21 02:00:14