Jenkins
Se encarga de ejecutar tareas.
Tareas:
- Comprobar si existe un cambio en el repositorio rama dev.
- Ejecuta los test Unitarios de dev.
- Crea una rama con el merge de master + dev = master_dev .
- Ejecuta los test en master_dev .
- Merge de master con master_dev .
Escenario Proceso básico: ejecución periódica.
Configuración de Jenkins
Esta seria una ejecución sencilla muy básica en la que Jenkins cada x tiempo realiza una tarea.
Creamos una nueva tarea, la nombramos y ponemos una descripción.
En el apartado de Configurar el origen del código fuente ponemos ...
Opción :Git
Dentro de repositorio el repositorio original: https://github.com/Didweb/NeuSystem.git
_Credenciales: A_signar nuestras credenciales de acceso a github.com
Branches to build:*/dev
En Disparadores de ejecuciones ponemos ...
*/1 * * * *
esto ara que se dispare cada minuto la consulta.
En la sección Ejecutar seleccionamos Ejecutar linea de comándos ...
git checkout master
git pull
git checkout dev
git pull
phpunit tests
git branch -v
git checkout master
git pull
git branch -D master_dev
git checkout -b master_dev
git merge master
git merge dev
phpunit tests
git branch -v
git checkout master
git merge dev
git branch -v
phpunit tests
git push origin master_dev
git push origin master
... guardamos.
Esta configuración básica:
- Realiza test de la nueva rama.
- Crea una nueva rama y fusiona con la rama master.
- Realiza unos test de nuevo.
- Actualiza la rama master del repositorio.
Escenario al obtener cambios en el SCM
En este escenario Jenkins comprueba si ha habido un cambio en el repositorio, en tal caso este ejecuta el siguiente proceso. Esto pude configurarse para que desencadene una serie de tareas asignados directamente al proceso de checking o bien encadenados.
Tareas...
- NS_check_SCM: Comprueba si ha sucedido un cambio. En caso de ser afirmativo, ejecuta el siguiente paso...
- NS_Test_dev: Hace un test de la rama dev. En caso de pasar de forma correcta ejecuta el siguiente paso...
- NS_Merge: hace un merge de dev + master en una rama intermedia. Ejecuta un test y luego hace un merge a la rama master.
NS_check_SCM
Configuración de Jenkins:
Dentro de Configurar el origen del código fuente habilitar Git. Barnches to build he puesto */dev
.
Disparadores de ejecuciones: La opción Consultar repositorio (SCM) : */1 * * * *
(En este caso para que se ejecute cada minuto, es para hacer las pruebas lo lógico seria un tiempo más amplio. )
Acciones para ejecutar después, seleccionar la opción Ejecutar otros proyectos en este caso NS_Test_dev
NS_Test_dev
Configuración de Jenkins:
Configurar el origen del código igual que el paso anterior.
Ejecutar seleccionamos Ejecutar un comando Windows y escribimos el siguiente código ...
git branch -v
git checkout dev
git pull
phpunit tests
Donde nos situamos en dev hacemos un pull y pasamos un phpunit test.
Acciones para ejecutar después, seleccionar la opción Ejecutar otros proyectos en este caso NS_Merge
NS_Merge
Configuracion de Jenkins:
Configurar el origen del código igual que el paso anterior.
Ejecutar seleccionamos Ejecutar un comando Windows y escribimos el siguiente código ...
git checkout master_dev
git pull origin master_dev
git merge origin/master
git merge origin/dev
phpunit tests
git checkout master
git pull origin master
git merge master_dev
phpunit tests
Plugins para PHP
Existe una web con los diferentes plugins para php ... http://jenkins-php.org/.
Otros plugins interesantes para implementar en Jenkins, han sido extraidos de otro gitbook [ https://jose.gitbooks.io/testing-book/content/IntegracionContinua.html ] : Los recomendados por ese git book son...
[Sin probra] PHP_CodeSniffer: Herramienta para detectar violaciones en la estandarización del código elegida por el proyecto bajo la integración continua.
[Sin probra] PHP_Depend: Analizador de código que genera determinadas métricas para asegurar la calidad de código, he indicar posibles refactorizaciones según dichas métricas.+
[Sin probra] PHP Mess Detector: Analizador de código que determina secciones de código muerto, posibles bugs o expresiones complejas.
[Sin probra] PHP Copy/Paste Detector: Herramienta que encuentra fragmentos de código duplicado en una base de código.
Para ilustrar una integración, configuraremos el proyecto de Strings, mencionado en el capítulo 3.