Tener una un pipeline CI/CD se ha convertido en una parte integral del desarrollo de software con el servidor de automatización actuando como la columna vertebral de este proceso.

Jenkins ha sido durante mucho tiempo el servidor de acceso en la comunidad de código abierto, ya sea por práctica o para aprender a construir un pipeline, configurarlo desde cero puede llevar algo de tiempo.

Es una carga para mí (incluso con Docker) tener que iniciar el contenedor localmente, especialmente para algo que uso con tanta frecuencia y a veces de diferentes computadoras. Así que tengo una instancia barata en la nube con un montón de herramientas, para lo cual uso Nginx como proxy.

Este proyecto te proporciona:

  • Proxy NGINX para administrar tus conexiones.
  • Obtención y renovación automática para tus certificados SSL con Let’s Encrypt. Así que no hay que preocuparse por SSL.
  • Configuración centralizada en un solo archivo: .env
  • Jenkins con almacenamiento de volumen localmente o en la nube.

Hay un par de cosas que necesitarás para tenerlo en la nube:

  • Un dominio.
  • Una instancia en la nube (AWS, GC, DO …).

No se necesita ninguno de los anteriores para ejecutarse localmente.

Facil configuración y extensión

Está hecho de una manera que en caso de que desees profundizar en la configuración y la construcción general de esta solución, puedes hacerlo. Se basa en mi propio proyecto para crear un blog de Ghost con renovación automática de ssh.

Luego lo combiné con esta Configuración de Jenkins de Riot Games, todo junto para trabajar en sincronía para nuestro propio beneficio. Puedes seguir adelante y leerlos si deseas practicar y aprender cómo configurarlo o exténderlo.

El archivo env es donde defines todo lo que se necesita. Entonces si no estas familiarizado con Docker, realmente no hay necesidad de tocar los archivos de docker compose. Solo edita el env con tus valores y listo.

Ejecutando localmente

  1. Clona este repositorio.
  2. Renombra el archivo env.sample a env y ejecuta ./start.sh

Ejecutando en la nube

  1. Clona o copia este repositorio en tu instancia de la nube.
  2. Copia y cambia el nombre del archivo env.sample a env y agrega tus dato. Esto es lo básico para que funcione:
IP=0.0.0.0 o la IP actual, de cualquiera manera funciona
URL=tu dominio p. ej. "https://example.com"
VIRTUAL_HOST=tu dominio p. ej. "https://example.com"
LETS_ENCRYPT_HOST=tu dominio p. ej. "https://example.com"
LETS_ENCRYPT_EMAIL= tu Email para registrar el certificado SSL p. ej. "your@email.com"
LETSENCRYPT_TEST=true | Cambia a false para obterner el certificado SSL de produccion
  1. Ejecuta ./start.sh

Informacion adicional

El script start.sh está configurado para ejecutarse en modo detached, si deseas ver la salida completa para obtener la contraseña de administrador de Jenkins durante la instalación, realiza estos cambios en el archivo:

docker-compose up -d a docker-compose up

En caso de ejecutarse con el modo detached predeterminado, puedes acceder al contenedor Jenkins en la instancia y extraer la contraseña de administrador de la siguiente manera:

docker exec -it jenkins-master bash

Y luego imprima en pantalla la contraseña de administrador:

cat /var/jenkins_home/secrets/initialAdminPassword

Para imprimir el registro completo:

cat /var/log/jenkins/jenkins.log

Instale los (plugins) complementos que prefieras o usa la configuración predeterminada y listo. Ahora tienes un Jenkins ejecutándose en una instancia de la nube.