Last active
December 21, 2015 21:48
-
-
Save m-revetria/6370460 to your computer and use it in GitHub Desktop.
Install & configure Jenkins for iOS using git
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| TODO |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| En este archivo se explica como instalar Jenkins CI configurado para armar proyectos iOS. | |
| Jenkins es una herramienta para monitorear la ejecucion repetitiva de trabajos, como por | |
| ejemplo, la compilacion de proyectos de software. Jenkins se enfoca en las siguientes | |
| tareas: | |
| 1. Armado/testing de proyectos de software de forma continuamente. | |
| 2. Monitorear trabajos ejecutados externamente. | |
| El equipo utilizado tiene las siguientes caracteristicas: | |
| * Mac OS X version 10.8.4 | |
| * XCode version 4.6.3 | |
| * Git | |
| * CocoaPods | |
| ########################################################################################### | |
| # 1. Instalacion de Jenkins | |
| #========================================================================================== | |
| a) Descargar el paquete nativo de Jenkins para Mac desde: http://jenkins-ci.org. La versión | |
| instalada fue la 1.529. | |
| La instalacion de este paquete crea una aplicacion web y la levanta en | |
| http://localhost:8080 automáticamente. Si Jenkins no está corriendo basta con ejecutar: | |
| >> java -jar jenkins.war | |
| Jenkins.war queda instalado en Applications/Jenkins/ | |
| Tras la instalacion de Jenkins, se crea el usuario 'jenkins', en el Home de este | |
| usuario quedan copiados todos la aplicación y los archivos de configuración. Los programas | |
| necesarios para la compilacion de los proyectos deben ser instalados en este usuario o | |
| que sean accesibles por él. | |
| Para habilitar el usuario 'jenkins' y poder iniciar sesión es necesario modificar | |
| el nombre visible del mismo, que por defecto es vacío. Esto se hace en | |
| System Configuration/Users & Groups/. | |
| b) Verificar que los siguientes plugins estén instalados en Jenkins: | |
| http://localhost:8080/pluginManager/installed; en caso de faltar alguno se pueden | |
| instalar desde la aplicación web local. | |
| * GitHub API Plugin, 1.43 (*) | |
| * GitHub plugin, 1.8 (*) | |
| * Jenkins GIT client plugin, 1.1.2 (*) | |
| * Jenkins GIT plugin, 1.5.0 (*) | |
| * Xcode integration, 1.3.3 (*) | |
| c) Descargar jenkins-cli.jar de http://localhost:8080/jnlpJars/jenkins-cli.jar y copiarlo | |
| en /Users/Shared/Jenkins/Home. Este jar nos permite ejecutar operaciones contra el | |
| servidor de jenkins para realizar tareas como copiar un job existente, crear uno a partir | |
| de un xml, etc. | |
| ########################################################################################### | |
| ########################################################################################### | |
| # 2. Configuracion de Jenkins | |
| #========================================================================================== | |
| * Para conectarse con un repositorio privado en github, es necesario primero crear una | |
| pairkey de SSH con: | |
| (Nota: usar el usuario de jenkins en estos pasos) | |
| >> su jenkins | |
| >> ssh-keygen -t rsa -C "your_email@example.com" | |
| Luego, copiar el contenido de la clave publica generada y agregarla al perfil en github (4) | |
| Asegurarse de que la clave creada quede agregada a ssh. Usar el siguiente comando para | |
| listar las claves agregadas: | |
| >> ssh-add -l | |
| y usar el siguiente para agregar una ya creada | |
| >> ssh-add /path/to/your/key | |
| * Para generar con SDK -iphoneos es necesario agregar las claves de desarrollador al | |
| keychain del usuario Jenkins. | |
| Notas: | |
| 1. Si se presenta el error "Could not open a connection to your authentication agent." al | |
| ejecutar ssh-add, es necesario ejecutar este comando primero: | |
| >> eval $(ssh-agent) | |
| 2. Configurar las claves de SSH para github y para cualquier otro servidor utilizado, por | |
| ejemplo bitbucket. | |
| 3. Si la clave creada no tiene el nombrey la ubicacion por defecto, es necesario agregarla | |
| a SSH usando ssh-add /path/to/your/key | |
| ########################################################################################### | |
| ########################################################################################### | |
| # 3. Crear una tarea de compilacion | |
| #========================================================================================== | |
| a) En el dashboard de Jenkins, click en 'New job' (o ir a la url | |
| http://localhost:8080/view/All/newJob) y marcar la opción "Build a free-style software | |
| project". | |
| b) Realizar la configuración básica del proyecto (nombre, descripción, proyecto en github) | |
| c) Configurar el acceso al repositorio del proyecto, bajo la sección "Source Code | |
| Management": | |
| c.i) Ingresar la URL al repositorio, utilizar la URL de SSH | |
| (git@github.com:username/reponame.git) | |
| c.2) Indicar el branch que queremos armar, por ejmplo: | |
| +) origin/master // Arma solo el branch master del repositorio origin | |
| +) ** // Arma todos los branches de todos los repositorios | |
| +) origin/foo* // Arma origin/foo-1, origin/foor-other, etc. | |
| +) origin/foo** // Arma origin/foo/other, origin/foo-other, etc. | |
| c.3) Si es necesario indicar user.name y user.email para la configuracion de | |
| git. Esto está dentro de las opciones avanzadas de esta sección. | |
| d) Indicar los triggers que dispararn los builds, bajo la sección "Build Triggers". | |
| d.1) Indicar un periodo de armado. Para esto se utiliza la sintaxis de cron. | |
| Por ejemplo, la expresion "H 0 * * *" indica "cualquier momento entre las | |
| 0 - 1am de cualquier dia del año". | |
| d.2) Marcar la opción "Build when a change is pushed to GitHub" para evitar | |
| armados innecesarios. | |
| d) Establecer la configuracion de compilacion para Xcode | |
| d.1) Agregar un paso de compiación de tipo "Execute shell" y | |
| arrastrarlo hacia arriba hasta dejarlo primero en la lista de tareas de la | |
| sección Build. Editar el contenido del script con: | |
| #!/usr/bin/env bash | |
| source ~/.bash_profile | |
| pod install | |
| d.2) Agragar otro nuevo paso de compilación, pero esta vez de tipo "Xcode". Este | |
| paso lo configuraremos para armar el proyecto "Pods". Configurar los | |
| siguientes campos: | |
| +) Target => Pods | |
| +) SDK => iphonesimulator | iphoneos // SDK de compilación. | |
| +) Configuration => Debug | Release | |
| +) Xcode Project File => Pods.xcodeproj // Archivo de proyecto XCode, el | |
| // nombre debe incluir la extensión | |
| d.3) | |
| Notas: | |
| 1. Si ocurre el error "You have not agreed to the Xcode license agreements, ..." al | |
| intentar compilar el proyecto es necesario ejecutar el siguiente comando y seguir | |
| las instrucciones: | |
| >> xcodebuild -license | |
| 2. Para copiar un trabajo ejecutar los siguientes comandos: | |
| >> cd /Users/Shared/Jenkins/Home | |
| >> java -jar jenkins-cli.jar -s http://localhost:8080/ list-jobs | |
| >> java -jar jenkins-cli.jar -s http://localhost:8080/ get-job job_name > job_name.xml | |
| >> java -jar jenkins-cli.jar -s http://localhost:8080/ create-job new_job_name < job_name.xml | |
| Asegurarse de haber copiado jenkins-cli.jar en el directorio Home del usuario Jenkins. El | |
| comando list-jobs nos despliega la lsita de trabajos creados en jenkins. | |
| ########################################################################################### |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 1) Jenkins documentation: http://jenkins-ci.org/ | |
| 2) Xcode Continuous Integration for iOS Tutorial - (Jenkins, CI, TDD, SVN, OCUnit, TestFlight): http://www.youtube.com/watch?v=gQqbpCtFUhk | |
| 3) http://www.chrisboyd.net/post/25806571422/github-jenkins-testflight-part-2-building-your | |
| 4) https://help.github.com/articles/generating-ssh-keys | |
| 5) https://github.com/Tozkoparan/Deneme/wiki/Setup-Jenkins-for-working-with-a-private-Github-repository |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment