David Bohm

Hay dos frases que definen mi manera de pensar:
Realmente no hemos prestado mucha atención al pensamiento como un proceso; hemos participado en pensamientos, pero sólo hemos prestado atención al contenido, no al proceso.
La capacidad de percibir o pensar de manera diferente es más importante que el conocimiento adquirido.
Ambas son de David Bohm.

domingo, 28 de marzo de 2021

Doctor Jenkins y Mister Docker en uno solo

Jenkins es un servidor automatizado de integración continua de código abierto. Jenkins es capaz de automatizar y probar las compilaciones de código fuente y muestra los errores que puedan aparecer en este proceso. A través de complementos puede ser ampliado en cuanto a características y funcionalidades añadidas.

Jenkins puede ser montado sobre un docker, esto claramente aligera notablemente los pasos para desplegarlo y es lo que vamos a ver. Eso sí, elegiremos mapear volúmenes para que la instalación sea persistente.

El contenedor que mantiene la comunidad actualmente es: https://hub.docker.com/r/jenkins/jenkins

Y podemos encontrar la documentación ofician en la que nos especifican como montarlo aquí: https://github.com/jenkinsci/docker/blob/master/README.md

Algunos parámetros a tener en cuenta:

   -d --> Para que corra en segundo plano

   -v jenkins_home:/var/jenkins_home --> montamos el volumen para que los datos sean persistentes ante operaciones de parada, reinicio y borrado del docker.

   -p 8080:8080 -p 50000:50000 --> Puertos que debemos mapear entre host y contenedor. Si el puerto 8080 ya lo tenemos ocupado en nuestro host, podríamos mapearlo en otro, por ejemplo: -p 8087:8080

   jenkins/jenkins:lts --> especificamos la imagen que mantiene la comunidad.

 Así que el comando completo quedaría para ejecutarlo:

   # docker run -d -v /var/jenkins_home:/var/jenkins_home -p 8087:8080 -p 50000:50000 jenkins/jenkins:lts

DOCKER-COMPOSE

El fichero docker-compose.yml tendrá el siguiente contenido:

   version: '3.3' 

      services: 

         jenkins: 

            volumes: 

               - '/var/jenkins_home:/var/jenkins_home' 

            ports: 

               - '8087:8080' 

               - '50000:50000' 

            image: 'jenkins/jenkins:lts'

Una vez que el docker está arrancado, podremos ir a http://localhost:8087, habrá que esperar un poco hasta que jenkins esté preparado. Nos solicitará lo siguiente:

Unlock Jenkins

To ensure Jenkins is securely set up by the administrator, a password has been written to the log (not sure where to find it?) and this file on the server:

/var/jenkins_home/secrets/initialAdminPassword

Así que podemos ir a esa ruta en nuestro equipo local, copiar la contraseña e introducirla para poder continuar. Con el siguiente comando obtenemos la contraseña:

    # cat /var/jenkins_home/secrets/initialAdminPassword

Una vez que hemos confirmado que somos administradores los que estamos configurando Jenkins, ya podemos seguir con el siguiente paso, configurar los posibles complementos a instalar.

Para no complicarnos de momento la vida y probarlo, podemos instalar los plugins sugeridos entre los que a día de hoy se encuentran:

Folders
OWASP Markup Formatter
Build Timeout
Credentials Binding
Timestamper
Workspace Cleanup
Ant
Gradle
Pipeline
GitHub Branch Source
Pipeline: GitHub Groovy Libraries
Pipeline: Stage View
Git
SSH Build Agents
Matrix Authorization Strategy
PAM Authentication
LDAP
Email Extension
Mailer
 
Tendremos que definir el usuario administrador y su contraseña, después nos preguntará por la URL que queremos que tenga la instancia, esta URL es la que se ofrecerá a los usuarios de Jenkins. Exactamente dice:
 
Configuracíon de la instancia:
 
La URL de Jenkins se utiliza para proporcionar la URL raíz para los enlaces absolutos a varios recursos de Jenkins. Esto significa que este valor es necesario para el correcto funcionamiento de muchas características de Jenkins, incluyendo las notificaciones por correo electrónico, las actualizaciones de estado de PR, y la variable de entorno BUILD_URL proporcionada a los pasos de construcción.
El valor propuesto por defecto que se muestra no se guarda todavía y se genera a partir de la solicitud actual, si es posible. La mejor práctica es establecer este valor a la URL que se espera que utilicen los usuarios. Esto evitará confusiones al compartir o ver los enlaces.

Lo ideal sería generar una entrada DNS con certificado y que la llamada fuese a un subdominio concreto, de cara a los programadores quedará mucho mas profesional. Para probarlo en nuestro propio equipo lo dejamos así, sin complicaciones.
 
Listo, ya podemos comenzar a trabajar con Jenkins.

SaluDOS

No hay comentarios:

Publicar un comentario