Búsqueda de sitios web

Ejecutando Jenkins Server en Docker Container con Systemd


Jenkins es un servidor de automatización de código abierto que se utiliza para automatizar tareas repetitivas que a menudo se encuentran en la integración y entrega continua de software. En esta guía, veremos cómo ejecutar el servidor Jenkins en un contenedor Docker administrado a través del sistema de inicio Systemd.

Si prefiere ejecutar Jenkins en una instancia de CentOS 7 o Ubuntu 18.04, utilice las siguientes guías.

  • Cómo instalar Jenkins en Ubuntu
  • Instale Jenkins Server estable en CentOS 7
  • Instale el servidor Jenkins en CentOS 8

Esta guía es específica para los usuarios de Docker a quienes les gusta contener aplicaciones y cualquier herramienta de administración de infraestructura.

Cómo ejecutar el servidor Jenkins en el contenedor Docker

La ejecución de Jenkins Server en Docker tiene pocas dependencias que deberá satisfacer.

  • Linux o macOS
  • Docker Engine instalado y ejecutándose
  • Una cuenta de usuario con privilegios sudo

Paso 1: Instale el motor Docker

Comience instalando el motor Docker en su sistema operativo base. Puede utilizar nuestra guía anterior para la instalación de Docker.

  • Instale Docker CE en Ubuntu/Debian/Fedora/Arch/CentOS

Después de la instalación, puede confirmar la versión instalada ejecutando:

$ docker version
Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.7
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:58 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.7
  Git commit:       3056208
  Built:            Tue Oct 25 17:59:49 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.9
  GitCommit:        1c90a442489720eec95342e1789ee8a5e1b9536f
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Paso 2: agregar usuario jenkins

Lo siguiente es agregar el usuario del sistema Jenkins a su servidor. Este usuario administrará el servicio Jenkins.

sudo groupadd --system jenkins
sudo useradd -s /sbin/nologin --system -g jenkins jenkins
sudo usermod -aG docker jenkins

Asegúrese de que este usuario esté agregado al grupo de Docker.

$ id jenkins
uid=999(jenkins) gid=998(jenkins) groups=998(jenkins),999(docker)

Extraiga la versión de la imagen acoplable LTS de Jenkins

sudo docker pull jenkins/jenkins:lts

Confirme que la descarga de la imagen fue exitosa.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins/jenkins     lts                 9cff19ad8c8b        3 weeks ago         730MB

Paso 3: cree un directorio y contenedor de datos de Jenkins

Necesitamos un almacenamiento persistente para los datos de Jenkins para garantizar que los datos permanezcan intactos y, por lo tanto, puedan reutilizarse en caso de que el contenedor se cierre o falle.

sudo mkdir /var/jenkins
sudo chown -R 1000:1000 /var/jenkins

Paso 4: crear un servicio Jenkins Container Systemd

Cree un nuevo archivo de unidad de servicio systemd para Jenkins.

sudo vim /etc/systemd/system/jenkins-docker.service

Agregar :

[Unit]
Description=Jenkins Server
Documentation=https://jenkins.io/doc/
After=docker.service
Requires=docker.service

[Service]
Type=simple
User=jenkins
Group=jenkins
TimeoutStartSec=0
Restart=on-failure
RestartSec=30s
ExecStartPre=-/usr/bin/docker kill jenkins-server
ExecStartPre=-/usr/bin/docker rm jenkins-server
ExecStartPre=/usr/bin/docker pull jenkins/jenkins:lts
ExecStart=/usr/bin/docker run \
          --name jenkins-server \
          --publish 8080:8080 \
          --publish 50000:50000 \
          --volume /var/jenkins:/var/jenkins_home \
          jenkins/jenkins:lts
SyslogIdentifier=jenkins
ExecStop=/usr/bin/docker stop jenkins-server

[Install]
WantedBy=multi-user.target

Vuelva a cargar systemd e inicie el servicio jenkins

sudo systemctl daemon-reload
sudo systemctl start jenkins-docker

Al verificar el estado, debería recibir un mensaje en ejecución.

$ systemctl status jenkins-docker
jenkins-docker.service - Jenkins Server
     Loaded: loaded (/etc/systemd/system/jenkins-docker.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-10-30 00:56:54 EAT; 9s ago
       Docs: https://jenkins.io/doc/
    Process: 8962 ExecStartPre=/usr/bin/docker kill jenkins-server (code=exited, status=1/FAILURE)
    Process: 8967 ExecStartPre=/usr/bin/docker rm jenkins-server (code=exited, status=1/FAILURE)
    Process: 8972 ExecStartPre=/usr/bin/docker pull jenkins/jenkins:lts (code=exited, status=0/SUCCESS)
   Main PID: 8983 (docker)
      Tasks: 5 (limit: 9460)
     Memory: 9.7M
        CPU: 89ms
     CGroup: /system.slice/jenkins-docker.service
             └─8983 /usr/bin/docker run --name jenkins-server --publish 8080:8080 --publish 50000:50000 --volume /var/jenkins:/var/jenkins_home jenkins/jenkins:lts

Oct 30 00:57:02 jammy jenkins[8983]: *************************************************************
Oct 30 00:57:02 jammy jenkins[8983]: *************************************************************
Oct 30 00:57:02 jammy jenkins[8983]: *************************************************************
Oct 30 00:57:02 jammy jenkins[8983]: Jenkins initial setup is required. An admin user has been created and a password generated.
Oct 30 00:57:02 jammy jenkins[8983]: Please use the following password to proceed to installation:
Oct 30 00:57:02 jammy jenkins[8983]: 77917c89e52e4f6087c311d04023833d
Oct 30 00:57:02 jammy jenkins[8983]: This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
Oct 30 00:57:02 jammy jenkins[8983]: *************************************************************
Oct 30 00:57:02 jammy jenkins[8983]: *************************************************************
Oct 30 00:57:02 jammy jenkins[8983]: *************************************************************

Paso 5: Desbloquee la instalación del servidor Jenkins

Busque la URL para acceder al asistente de instalación web:

 http://[serverip|hostname]:8080

Cuando accede por primera vez a una nueva instancia de Jenkins, se le solicita que la desbloquee mediante una contraseña generada automáticamente.

Obtener la contraseña de

# cat /var/jenkins/secrets/initialAdminPassword 
eec851b6f1ff43ce9f374a5e50d82fad

Copie y pegue la contraseña alfanumérica generada automáticamente en el campo Contraseña de administrador y haga clic en Continuar.

En la página siguiente, instale los complementos recomendados o los complementos que se adapten al uso que desee de Jenkins. Si no está seguro, seleccione la instalación de complementos recomendados.

Lo siguiente es crear una cuenta de usuario administrador utilizada para administrar el servidor Jenkins.

Después de una instalación exitosa, accederá a la consola de administración de Jenkins.

Disfrute automatizando sus trabajos con Jenkins. Para obtener más información, consulte la documentación oficial.

Consulte también:

  • Cómo administrar usuarios y roles en Jenkins
  • Configure Jenkins detrás del proxy inverso Nginx y Let's Encrypt SSL
  • Cómo configurar la autenticación LDAP de Jenkins FreeIPA

Artículos relacionados: