Cómo instalar Jenkins en CentOS y conectarlo a GitHub

Desbloquear Jenkins

Jenkins proporciona herramientas de CI/CD de código abierto ampliamente utilizadas. En este artículo, aprenderemos cómo instalar Jenkins y configurarlo con Github para enviar archivos al servidor usando SSH.

Instalación de Jenkins:

Jenkins es una aplicación basada en JAVA, por lo que antes que nada, debemos instalar JAVA. El siguiente comando instalará JAVA en centos 7.

sudo yum install java-1.8.0-openjdk-devel

Verifica la versión de Java

[[email protected] ~]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

Ahora configure el repositorio de Jenkins usando los siguientes comandos.

curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo

Esto mostrará las siguientes salidas.

[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1

Luego ejecute el siguiente comando para agregar la clave Jenkins.

sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

Ahora hemos configurado el repositorio de Jenkins y estamos listos para instalar Jenkins usando los siguientes comandos simples.

sudo yum install jenkins

Una vez completada la instalación, verifique el servicio de Jenkins y habilítelo al reiniciar el sistema.

sudo systemctl start Jenkins
sudo systemctl enable jenkins

Ahora reinicie el sistema y asegúrese de que el servicio jenkins se esté ejecutando con el siguiente comando.

sudo systemctl enable jenkins

Ahora permita a Jenkins en el firewall.

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

Configurar ajustes:

No podemos usar Jenkins directamente, necesitamos escribir el nombre de dominio o la dirección IP en el navegador web seguido del número de puerto predeterminado de Jenkins 8080.

Desbloquear Jenkins

En la captura de pantalla anterior, debemos escribir la contraseña generada automáticamente por Jenkins una vez. Ejecute el siguiente comando para obtener una contraseña.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Esto dará una salida como 2179c452db3b45f98cf9e4c4961ab635

Después de la contraseña, necesitamos instalar complementos en el sistema Jenkins. Para eso, simplemente seleccione el complemento sugerido instalado para instalar todos los complementos predeterminados.

Crear usuario administrador

Rellene todos los datos y haga clic en guardar y continuar.

Ahora solicitará la configuración de la instancia, donde también podemos cambiar el número de puerto predeterminado.

Configurar la instancia de Jenkins

Ahora nuestro Jenkins guardado y listo para usar.

Jenkins está listo

Felicitaciones, la nueva configuración de Jenkins se completó con éxito y está lista para usar.

La siguiente captura de pantalla muestra el tablero predeterminado para Jenkins.

Tablero de Jenkins

Configuración de Jenkins:

Instalar complementos:

Antes de continuar con los siguientes pasos, asegúrese de instalar los siguientes complementos.

Vaya a Administrar Jenkins -> Administrar complemento -> Disponible -> filtro -> busque el siguiente complemento que se necesita para la integración con GitHub.

Publicar a través de SSH
Git
Complemento de GitHub
Complemento de cliente Git

Aquí, se necesita el complemento Publish Over SSH para enviar nuestros archivos al servidor a través de SSH.

Añadir credenciales:

Necesitamos agregar credenciales de servidor en Jenkins.

Vaya a Panel de Jenkins → credenciales → sistema → Credenciales globales (sin restricciones) → Agregar credenciales

Agregar credenciales

Podemos seleccionar el tipo de credenciales que queremos instalar. Aquí agregamos el nombre de usuario y la contraseña de la credencial de GitHub para su uso posterior.

Ingrese las credenciales de GitHub

ssh en el servidor Jenkins.

Jenkins puede conectarse a un servidor remoto mediante ssh y puede ejecutar secuencias de comandos, comandos o copiar archivos de un servidor a otro.

Para este propósito, necesitamos crear una conexión ssh entre el servidor Jenkins y el servidor remoto.

El siguiente paso agrega las credenciales SSH en Jenkins que queremos conectar con el servidor Jenkins.

Queremos conectarnos a un servidor web de Jenkins con usuario raíz. Por ejemplo, nuestro servidor web es 138.197.151.144 y usuario raíz, por lo que debemos iniciar sesión en ese servidor usando ssh.

ssh [email protected]

Ahora vaya al directorio de inicio y cd a la carpeta .ssh.

cd ~/.ssh

El siguiente paso será generar una clave privada y una clave pública para el usuario root en nuestro servidor web.

ssh-keygen -t rsa -f private_key_for_jenkins

Después de ejecutar el comando anterior, solicitará «Ingresar frase de contraseña», no necesitamos ingresar la frase de contraseña. Así que haga clic en entrar dos veces y generará dos claves en el servidor web private_key_for_jenkins y private_key_for_jenkins.pub.

Aquí private_key_for_jenkins es la clave privada de 138.197.151.144 y necesitamos usar el contenido de este archivo en nuestro servidor Jenkins.

Tenemos el segundo archivo llamado private_key_for_jenkins.pub que es la clave pública del servidor web. Necesitamos copiar sus datos a otro archivo llamado Authorised_keys ubicado en el mismo directorio.

En la mayoría de los casos, los archivos Authorised_keys están presentes en la carpeta ~/.ssh/, pero a veces faltan y necesitamos generar nuevos archivos Authorised_keys. Simplemente ejecute el siguiente comando para copiarlo en Authorised_keys, este comando también genera nuevas Authorised_keys si está disponible.

cat private_key_for_jenkins.pub > authorized_keys

Ahora inicie sesión en el servidor Jenkins y luego vaya a Administrar Jenkins -> Configurar sistemas

Una alternativa que podemos escribir directamente http://dirección_ip:8080/configure en el navegador web, esto abrirá Configurar sistemas para configuraciones ssh.

Ahora, busque la sección Servidor de servidores SSH en «Configurar Jenkins». Tenga en cuenta que esta sección solo está disponible si tenemos instalado el ‘Complemento de credenciales SSH’ en el servidor Jenkins.

Vaya a la sección Publicar a través de SSH, vaya a la clave y pegue el contenido de private_key_for_jenkins

Ahora, en la opción Servidores SSH, haga clic en el botón Agregar e ingrese los detalles del Servidor SSH. Podemos cambiar el puerto ssh y otras configuraciones desde la opción Avanzada.

Detalles del servidor SSH

Después de realizar los cambios, haga clic en ‘Probar configuración’ y debería recibir un mensaje de éxito como se muestra en la captura de pantalla anterior si todas las configuraciones son correctas.

Tenga en cuenta que podemos agregar varios servidores según nuestros requisitos para publicar el mismo código en varios servidores mediante ssh.

Para eso, necesitamos generar la clave privada para cada servidor como mencionamos anteriormente y agregar su clave privada al servidor Jenkins.

Finalmente, haga clic en el botón ‘Guardar’ y guarde nuestros cambios. Hemos creado con éxito una conexión ssh a un servidor remoto. Ahora podemos enviar el archivo al servidor remoto y también podemos ejecutar cualquier comando o script en ese servidor.

Configuración de Jenkins con Github

Para la automatización de compilaciones desencadenadas por solicitudes PUSH y PULL, se debe agregar un WebHook de Jenkins a cada repositorio de GitHub o webhooks de organización.

Pasos para configurar webhook desde el repositorio de Github.

1. Inicie sesión en sus cuentas de GitHub

2. Haga clic en el repositorio en el que necesitamos establecer webhook

3. vaya a la opción de configuración para ese repositorio

4. Haga clic en Webhooks y agregue la URL de carga útil, parece http://jenkins_ip:8080/github-webhook/

5. Seleccione «aplicación/json» como tipo de codificación en Tipo de contenido

6. Deje «Secreto» en blanco (a menos que se haya creado y configurado un secreto en la sección «Configurar sistema -> Complemento de GitHub» de Jenkins)

7. Seleccione «Permítame seleccionar eventos individuales»

8. Habilite el evento PUSH y Pull Request

9. Asegúrese de que «Activo» esté marcado

10. Haga clic en el botón «Agregar webhook» por fin.

Consulte la siguiente captura de pantalla para obtener más información.

Agregar webhook

Configuración de webhook

Jenkins ahora recibirá notificaciones de solicitud push y pull para ese repositorio y las compilaciones relacionadas se activarán automáticamente.

Creando el primer trabajo en Jenkins

Ahora ve a nuestro tablero de Jenkins y selecciona Nuevo artículo luego Ingrese un nombre de elemento seleccione Proyecto de estilo libre.

Agregar trabajo en Jenkins

Después de hacer clic en Aceptar, será redirigido a la sección de configuración.

Estamos en la pestaña general en este momento, como se muestra en la siguiente captura de pantalla. En general, haga clic en la pestaña para dar la descripción del proyecto y haga clic en Proyecto Github. Aquí ingrese nuestra URL de GitHub para el proyecto.

Configuración general

Ahora vaya a la administración del código fuente, luego haga clic en Git e ingrese la URL de nuestro repositorio desde donde queremos tomar los códigos.

Ya agregamos la credencial de GitHub, hacemos clic en el menú desplegable y seleccionamos el nombre de usuario y la contraseña de GitHub.

Luego, vaya a Sucursales para construir y seleccione */sucursal maestra, podemos agregar cualquier sucursal según los requisitos de nuestro proyecto.

Gestión de código fuente

Ahora vaya a la pestaña Build Trigger y seleccione Github hook trigger para la opción de sondeo GITScm, esto automáticamente
build cada vez que hacemos cambios en el repositorio de GitHub.

Activadores de compilación

Ahora vaya a compilar Entorno y seleccione Enviar archivos o ejecutar comandos a través de SSH después de que se ejecute la compilación.

Esto enviará archivos al servidor remoto después de que se ejecute la compilación.

Ir a SSH Publishers –> SSH Server –> seleccionar el nombre del servidor en el menú desplegable

Aquí también podemos configurar el parámetro Avanzado, pero actualmente vamos con la configuración básica.

Ahora debemos agregar qué tipo de archivo queremos copiar a través de ssh. Aquí seleccionamos todas las carpetas y archivos de nuestro repositorio de GitHub. Para agregar archivos y seleccionar carpetas, simplemente agregue **/* en los archivos de origen.

De manera similar, podemos dar cualquier comando en el cuadro de texto del comando Exec, que se ejecutará en nuestro servidor remoto.

Luego especifique el directorio remoto en el que necesitamos copiar nuestros archivos. Esta es una opción opcional.

Editores SSH –> Transferencias –> Conjunto de transferencias –> Archivos de origen –> agregar **/*

Editores SSH –> Transferencias –> Conjunto de transferencias –> Directorio remoto –> /jenkins-test

Publicadores SSH –> Transferencias –> Conjunto de transferencias –> Comando Exec –> Comando

Entorno de construcción

Por defecto, Jenkins excluirá ciertos archivos como .git .svn .gitignore, etc. Aquí queremos copiar todos los archivos al servidor remoto. Para eso, haga clic en el botón Avanzado justo debajo del comando Exec y marque la opción «Sin exclusiones predeterminadas».

Configuración del entorno

Eso es todo, tenemos muchas opciones en Acciones posteriores a la construcción que podemos usar de acuerdo con las necesidades de nuestro proyecto.

Prueba de compilación

Es hora de probar nuestra configuración.

Vaya al tablero de Jenkins y luego haga clic en nuestro proyecto Jenkins-test.

Prueba de compilación

Luego haga clic en la opción Build Now para la compilación. Si el proceso de compilación falla, se mostrará el número de versión de la compilación con un icono amarillo.

Verifiquemos nuestro proceso de compilación, simplemente haga clic en el número de compilación como se muestra en la captura de pantalla.

Integración de GitHub Jenkins probada con éxito

Ahora haga clic en Salida de consola. Aquí podemos ver todos los procesos en modo detallado.

Por último, veremos la línea «Terminado: ÉXITO» al final de la salida de la consola.

¡Felicidades! nuestro Jenkins se integró con éxito con GitHub ahora y está listo para usar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *