GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Jenkins en CentOS y conectarlo a GitHub

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

Verificar 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á los siguientes resultados.

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

Luego ejecute el siguiente comando para agregar la clave de 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, compruebe el servicio de Jenkins y actívelo 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 cortafuegos.

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.

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.

Complete todos los detalles 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.

Ahora nuestro Jenkins guardado y listo para usar.

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.

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 sobre SSH
Git
Complemento de GitHub
Complemento de cliente de 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 las credenciales del servidor en Jenkins.

Vaya al panel de Jenkins → credenciales → sistema →Credenciales globales (sin restricciones) → 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.

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://ip_address:8080/configure en el navegador web, esto abrirá Configure Systems 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.

Después de realizar los cambios, haga clic en "Probar configuración" y deberíamos 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 activadas por solicitud 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 configurar el 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 "Permitirme 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.

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 panel de control de Jenkins y selecciona Nuevo artículo. luego Ingrese un nombre de elemento seleccione Proyecto Freestyle .

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 Github project. Aquí ingrese nuestra URL de GitHub para el proyecto.

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, haga clic en el menú desplegable y seleccione 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.

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

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

Editores SSH --> Transferencias --> Conjunto de transferencias --> Comando Exec --> comando

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".

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 panel de Jenkins y luego haga clic en nuestro proyecto Jenkins-test.

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.

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

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

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


Cent OS
  1. Cómo instalar y configurar Nginx en CentOS 7

  2. Cómo instalar dig en CentOS 7 y 8

  3. Cómo instalar Node.js y NPM en CentOS 7

  4. Cómo instalar Jenkins en CentOS 7

  5. Cómo instalar Node.js y NPM en CentOS

Cómo instalar y configurar Samba en CentOS 8

Cómo instalar y usar Terraform en CentOS 8

Cómo instalar Jenkins en CentOS 8/RHEL 8 y CentOS 7/RHEL 7

Cómo instalar y configurar Jenkins en CentOS 8 / RHEL 8

Cómo instalar y configurar Jenkins en Rocky Linux/Centos 8

¿Cómo instalar Jenkins en CentOS 7?