Skip to content

Instantly share code, notes, and snippets.

@m-revetria
Last active December 21, 2015 21:48
Show Gist options
  • Select an option

  • Save m-revetria/6370460 to your computer and use it in GitHub Desktop.

Select an option

Save m-revetria/6370460 to your computer and use it in GitHub Desktop.
Install & configure Jenkins for iOS using git
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.
###########################################################################################
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