tech meetup: jenkins, the moody buttler

Post on 07-Apr-2017

34 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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, 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!

top related