Tech Meetup: Jenkins, the moody buttler
-
Upload
santex-group -
Category
Software
-
view
34 -
download
0
Transcript of Tech Meetup: Jenkins, the moody buttler
Matías HerranzNelson Secchi
www.santexgroup.com
JenkinsThe (moody) butler
www.santexgroup.com
$ whoami --mati
Some famous Nelsons
www.santexgroup.com
$ whoami --nel
¿Cómo va a ser la cosa?
Intro - Contenidos
1. Introa. Intro, conceptos, common grounds,b. Integración y deployment continuo
c. ¿para qué? ¿Por qué? ¿cómo?
2. Hands on!a. Cómo instalar Jenkins desde cero,
b. Tour de Jenkins
c. Idea: Salir sabiendo cómo dejar andando Jenkins desde cero.
3. Q&A and ovations.
Intro - Contenidos
What is CI?
Don’t believe the suit!
CI - Basics
What is CI
In software engineering, continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day.
What is CI
Grady Booch first named and proposed CI in his 1991 method, although he did not advocate integrating several times a day.
Extreme programming (XP) adopted the concept of CI and did advocate integrating more than once per day - perhaps as many as tens of times per day.
What is CI
Ventajas
● Los desarrolladores pueden detectar y solucionar problemas de integración
de forma continua, evitando el caos de última hora cuando se acercan las
fechas de entrega.
● Disponibilidad constante de una versión para pruebas, demos o
lanzamientos anticipados.
● Ejecución inmediata de las pruebas unitarias (unittests).
● Monitorización continua de las métricas de calidad del proyecto (¡como
coverage!).
What is CIHerramientas! Nos encantan las herramientas!
● Solano CI,● Bamboo,● Continuum,● Hudson,● Jenkins,● CruiseControl o Anthill (para proyectos Java),● CruiseControl.Net, Team Foundation Build para .Net
What is CIHerramientas, que a su vez usan herramientas
Mientras que las herramientas de la slide anterior seencargan de controlar las ejecuciones, éstas lo hacenapoyadas en otras herramientas como:
● Ant o Maven (también para proyectos Java),● Nant o MSBUILD (para .Net) que se encargan de realizar las compilaciones,
ejecutar las pruebas y realizar los informes.● Y una infinita lista de etcéteras.
What is CI
A menudo la integración continua está asociada con las metodologías de programación extrema y desarrollo ágil.
What is CIWhat does “No CI” look like?- Madness,- one single central codebase repository,- large number of changes in big integration events- => harsh code integrations when >= 1 dev
What is CIIn order to avoid the previously described issues, developers need to integrate their partially complete work back into the main repository on a daily basis, or even a couple of times a day.To accomplish this, they first need to pull in all the changes added to the main repository while they were working on the code.
CD - Continuous Deployment
Now we are talking!
● What is it?● Cases● How to implement it?
Let’s Jenkins!
Setup!
Kitematic + Docker
Select the Jenkins Official Container
Setup the Jenkins Official Container
Setup the Jenkins Official Container
Plugins!
Plugins!
Admin user setup
And we are good to go!
Getting the show on the road
Instalemos los plugins necesarios y armemos algunos jobs
Plugins
- There are a whole bunch, for right about anything you may think of.
- To get the list of all plugins available within Jenkins, one can visit the link → https://wiki.jenkins-ci.org/display/JENKINS/Plugins
- Today’s project flavor, Python!→ https://github.com/matiasherranz/pyjenkins
Plugins
Algunos plugins que usamos:
- Shining Panda, Python virtualenv plugin- https://wiki.jenkins-ci.org/display/JENKINS/ShiningPanda+Plugin
- GitHub, integration plugin- http://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin
- Email Extension Plugin, using Gmail for email sending- https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin
- Project Statistics Plugin- https://wiki.jenkins-ci.org/display/JENKINS/Project+Statistics+Plugin
Plugins
virtualenv plugin
Plugins - Instalación
Installing plugins is a piece o'cake
Plugins - Instalación
Build execution
- El punto más importante del job, donde se realiza “el build” en sí mismo.
- Compilación, UTs, generación de reportes, etc.
- En este paso se suele, en la mayoría de los casos, definir el resultado del build:- ABORTED,- SUCCESS,- UNSTABLE,- FAILURE.
Build execution
Build execution- En entornos *NIX, bash does the trick:
Build execution
Build execution
- La definición del build puede tener complejidad arbitraria,- Usar plugins,- Usar variables de entorno,- Usar parámetros del job,- La flexibilidad es absoluta,
Básicamente
Pre / Post / build steps
Si bien pueden usar plugins, son propios de cada job.
Pre build steps:- Suelen utilizarse para configurar el entorno,- Satisfacer dependencias a nivel sistema,- Obtener el código del proyecto,- Configurar cómo va a ser el output de consola del job,- etc.
Vamos a ver 2:- Origen del código fuente (GitHub),- Seteo de entorno de ejecución (mostrar timestamps).
Pre-build steps
Si bien pueden usar plugins, son, también, propios de cada job.
Post build steps:- Suelen utilizarse para decidir qué hacer con lo que se buildeó,- Notificaciones a los interesados / responsables / equipo,- Punto de integración para CD,- Publicación de informes, métricas, estadísticas, etc.- Build status integrado con GitHub.
Vamos a ver 2:- Publish coverage.py HTML reports- Send emails
- to the team- to broken-build culprit :O
Post-build steps
Coverage reports
Coverage reports
Emails!
● La configuración de email es global a Jenkins (no de un job en particular),● ¿Dónde?
○ Jenkins → Administrar Jenkins → Configurar Sistema● Para usar Gmail, usar app-specific passwords,
○ ¡Más seguro!○ Usar SSL, no TLS, puerto 465, SMTP.
● Se puede probar la configuración inline para chequear que funciona correctamente.
¡Y para enviar emails podemos usar Gmail!
Emails!Pantalla de configuración:
Emails!Email de testeo de que anduvo el setup:
Emails!Broken build:
Emails!Build back to OK
Questions?
Thank you!