Para finalizar, tal y como habíamos anunciado en el primer apartado de este tema, vamos a realizar una práctica que cubra muchos de los aspectos que hemos visto a lo largo del curso y que introduzca ideas y conceptos relacionados con la unión de los contenedores y de los procesos de integración (CI) , entrega (CD) y despliegue continuo (CDep). El proceso no es exactamente de ese tipo de procesos, es un proyecto "ad-hoc" para mis clases pero nos va a ayudar a pensar en automatización de procesos.
Es una práctica voluntaria, puede resultar compleja, pero el objetivo es vislumbrar el mundo de posibilidades que nos abre el uso de las tecnologías vistas. Todos los archivos necesarios serán proporcionados. Nuestro objetivo va a ser un automatizar el siguiente proceso:

PASOS DEL PROCESO
Los pasos del proceso son los pasos del Pipeline de Jenkins y serán:
- BUILD: Descargar el código del ejemplo y compilarlo.
- TESTS: Realizar los Test. En este ejemplo se deja vacío para no complicar más las cosas. Si nuestro proyecto tuviera pruebas sería el lugar para ejecutarlas.
- CONTAINER: Clonaremos el repositorio de Github donde tengo el Dockerfile y tras añadir el fichero resultante de la compilación se hará un push. Este repositorio estará conectado a su vez con un repositorio de DockerHub que será el que haga el build de manera automática.
- DEPLOY: Pondremos el archivo en un contenedor Tomcat al que accederemos por SSH.
RECURSOS NECESARIOS
Vamos a necesitar los siguiente recursos:
- Un contenedor de la imagen jenkins/jenkins:lts que lanzaremos con el siguiente comando docker. En ese contenedor instalaremos la herramienta Maven y los plugins Maven Integration y SSH Pipeline Steps.
docker run -d --name serverJenkins -p 9393:8080 -p 50001:50000 jenkins/jenkins:lts |
- Un contenedor de la imagen jperjim398/tomcatcursocep que contiene un servidor Tomcat y un servidor SSH que usaremos para conectarnos y desplegar la aplicación en el servidor Tomcat. Lanzaremos este contenedor con la siguiente orden docker.
docker run -d -it --name cep -p 9292:8080 -p 2222:22 jperjim398/tomcatcursocep |
- El código de la aplicación del ejemplo que se puede encontrar aquí: https://github.com/jleetutorial/maven-project
- Un repositorio en github que tenga inicialmente el siguiente Dockerfile.
FROM tomcat:9.0.39-jdk11 COPY *.war /user/local/tomcat/webapps |
- Un repositorio en DockerHub conectado con el repositorio anterior.
- El fichero Jenkinsfile que define el Pipeline.