Crear un trabajo de construcción en Jenkins para automatizar implementaciones web

Construir y desplegar una aplicación puede ser una tarea difícil. ¿Por qué no utilizar un Trabajo de Construcción de Jenkins para automatizar todo el proceso? Te concentras en construir mientras Jenkins se encarga del despliegue del código.

En este tutorial, aprenderás cómo automatizar el despliegue de tu código utilizando Jenkins para ahorrar tiempo, de modo que puedas concentrarte en otras tareas simultáneamente.

¿Listo? ¡Es hora de sumergirse!

Prerrequisitos

Este tutorial incluye demostraciones prácticas. Si deseas seguir, asegúrate de tener lo siguiente:

Aunque el repositorio mostrado en las capturas de pantalla a continuación difiere ligeramente del enlace de arriba, una vez bifurcado, también utilizarás una URL de repositorio diferente.

Creación de un trabajo de construcción en Jenkins

Jenkins es un servidor de automatización de código abierto que ayuda en la automatización del ciclo de vida del desarrollo de software. Este ciclo incluye la construcción, prueba e implementación, lo que facilita la integración continua y la entrega continua.

En esta demostración, aprenderás cómo crear un trabajo de construcción en Jenkins. Un trabajo de construcción es típicamente una configuración para ejecutar tareas de forma autónoma para la construcción/empaquetado de software.

  1. Abre tu navegador favorito, ve a http://localhost:8080/ e inicia sesión en tu panel de control de Jenkins. El puerto 8080 es el puerto predeterminado para acceder al panel de control de Jenkins.

2. En el Panel de control de Jenkins, haz clic en el botón Nuevo elemento en el panel izquierdo para iniciar la creación de un trabajo de construcción. Al hacerlo, el navegador se redirige a una nueva página de trabajo.

Creating a new Jenkins Job

3. A continuación, introduce un nombre de proyecto que prefieras para el trabajo de construcción en el campo de entrada que se muestra a continuación. En este ejemplo, el nombre del proyecto es webDeploy.

Selecciona la opción de proyecto Freestyle para habilitar la creación de trabajos, acciones de post-compilación de scripts y configurar disparadores de compilación del proyecto, luego haz clic en Aceptar. Serás redirigido a la página de configuración del trabajo que verás en el próximo paso.

Creating a Jenkins project

4. Haz clic en la pestaña General, y marca la casilla de Proyecto de GitHub para enlazar un gestor de código fuente para que Jenkins sepa de dónde obtener tu código. Esta demostración utiliza Git como gestor de código fuente para el proyecto de muestra alojado en GitHub que bifurcaste anteriormente. Pega la URL del repositorio de GitHub desde tu cuenta de GitHub en el campo de URL del proyecto a continuación.

Linking Jenkins to a source code manager

5. Por último, haz clic en la pestaña de Gestión de código fuente, luego selecciona Git, que es tu gestor de código fuente.

Copia y pega esta URL del repositorio de GitHub (https://github.com/Claradev32/webDeploy.git) en el campo de entrada. Haz clic en el botón Guardar para guardar tus configuraciones actuales.

Linking Jenkins to Source Code Manager (Git)

Creación de credenciales para un proyecto de Jenkins

Tal vez prefieras mantener tu repositorio privado, lo cual es común para proyectos de clientes. Si es así, necesitarás crear credenciales para autorizar a Jenkins a clonar tu proyecto desde GitHub.

Para crear credenciales para tu proyecto de Jenkins, primero debes generar y agregar una clave SSH a tu cuenta de GitHub:

1. Abre tu terminal de Ubuntu y ejecuta el siguiente comando para generar una clave SSH con ed25519 como tipo de clave. Reemplaza [email protected] con tu dirección de correo electrónico de GitHub para agregarlo como un comentario a la clave SSH que generarás.

ssh-keygen -t ed25519 -C "[email protected]"

2. Guarda tu clave SSH pública con el siguiente comando:

  • Especifica una ubicación para guardar la clave SSH y presiona Enter. Si no lo haces, el comando guardará la clave SSH en una ubicación predeterminada, como se muestra a continuación.
  • Ingresa una contraseña segura para la clave SSH, presiona Enter para confirmar la contraseña y verás la salida de tu clave SSH pública.
  • Toma nota de la ubicación de tu clave SSH generada, ya que la agregarás a tu cuenta de GitHub en los siguientes pasos.
Adding a Passphrase to the SSH key

3. Inicia sesión en GitHub en tu navegador web y ve a la página de Configuración de tu cuenta.

4. Haz clic en el enlace Claves SSH y GPG en el panel izquierdo y luego haz clic en Nueva Clave SSH, como se muestra a continuación, para configurar tu nueva clave SSH.

Creating a Github SSH key

5. Finalmente, ingresa el título que prefieras para la clave SSH. El título es solo para fines de documentación interna. Pega tu clave SSH, desde el archivo guardado anteriormente, en el campo de entrada Clave y haz clic en Añadir Clave SSH para guardar la clave.

Recuerda que esta es tu clave pública y no tu clave privada.

Saving New SSH Key

Añadiendo la Clave Privada SSH a las Credenciales de Jenkins

Ahora que ha creado su par de claves SSH para usar como credencial de Jenkins, también debe agregar su clave privada SSH a las credenciales de Jenkins para autorizar el acceso de Jenkins a su repositorio de GitHub. Pero primero, tome nota de la URL SSH de su repositorio de GitHub.

1. Vaya a la página de su repositorio de GitHub, haga clic en Código → SSH, y haga clic en el icono de copiar que se muestra a continuación para copiar la URL SSH al portapapeles.

Noting Down GitHub SSH URL

2. A continuación, vaya a su tablero de Jenkins, luego haga clic en Administrar Jenkins para acceder a la página de configuración de su proyecto.

Accessing Jenkins Settings

3. Desplácese hacia abajo, luego haga clic en la opción Administrar credenciales bajo la sección Seguridad para ver la lista de sus credenciales de Jenkins.

Accessing Jenkins Credentials

4. Haga clic en Jenkins en la página de Credenciales que se muestra a continuación para acceder a la página “Sistema” donde puede agregar nuevas credenciales.

Accessing System Page to Add Credentials

5. Ahora, en la página Sistema, coloque el mouse sobre la opción Credenciales globales (sin restricciones) para mostrar el menú desplegable y haga clic en el icono de flecha hacia abajo.

Haga clic en Agregar credenciales en el menú desplegable. La página se redirige a un formulario donde configurará las nuevas credenciales que se muestran en el próximo paso.

System Page

6. Seleccione Nombre de usuario SSH con clave privada en el primer campo de entrada y ingrese un nombre de usuario del proyecto en el campo Nombre de usuario. Para este ejemplo, el nombre de usuario es CI/CD.

En este caso, el nombre de usuario es puramente para documentación interna y no se utiliza para la autenticación.

Setting a Username for Jenkins Global Credentials

7. Ejecute el siguiente comando para ver su clave privada SSH, cambiando la ubicación a donde se encuentra su clave, como se muestra a continuación (la clave a continuación se encuentra en el directorio principal). Tome nota de su clave privada SSH ya que la agregará a las credenciales de su Jenkins en el siguiente paso.

cat ~/.ssh/id_ed25519
Viewing Secret Key

8. Una vez que haya tomado nota de su clave privada SSH, regrese a la página de Credenciales globales (sin restricciones).

Ingrese la frase de contraseña que configuró en la sección “Creación de credenciales para un proyecto de Jenkins” (paso dos) en el campo de entrada Frase de contraseña, y haga clic en Aceptar. Al hacerlo, autoriza el acceso de Jenkins a su repositorio de GitHub.

Si no incluyó una contraseña al crear la clave SSH, haga clic en Introducir directamente y luego en el botón Agregar. Ingrese su clave privada SSH en el campo de entrada Clave, como se muestra a continuación, y presione el botón Aceptar para guardar las credenciales.

Adding GitHub SSH key to Jenkins Credentials

8. Vuelva a su panel de control de Jenkins, coloque el mouse sobre su proyecto y haga clic en el ícono de flecha hacia abajo, luego elija Configurar, como se muestra a continuación. La página se redirige a la página de configuración de su proyecto.

Configuring Jenkins Project

10. Finalmente, selecciona el nombre de usuario de las credenciales en el campo desplegable (del paso seis de la sección “Añadir Clave Secreta a las Credenciales de Jenkins”). Jenkins aplica el principio CID por defecto para garantizar la integración continua y el despliegue de tu proyecto.

Connecting Jenkins to GitHub

Configuración de Desencadenadores de Compilación y Acciones Post Compilación

Ahora has creado exitosamente el esqueleto de un trabajo de compilación. Pero, ¿si haces cambios regularmente en tu proyecto, tendrás que volver a implementar manualmente cada vez? ¿Por qué no configurar desencadenadores de compilación? Los desencadenadores de compilación vuelven a implementar automáticamente los cambios de tu proyecto que se empujan a GitHub.

1. En la página de configuración de tus proyectos, haz clic en la pestaña de Desencadenadores de Compilación, y marca la opción de Desencadenador de Gancho GitHub para Sondeo GITScm. Esta opción te permite volver a implementar automáticamente los cambios de tu proyecto.

Configuring build triggers

2. Haz clic en la pestaña de Compilar, haz clic en Agregar paso de compilación, y selecciona Ejecutar shell para crear un script que se ejecutará cada vez que Jenkins descargue una nueva versión de tu código.

Creating a Build Script

El script de shell que creas depende de tu entorno de desarrollo. Si estás en Windows, Windows ejecutará el script; lo mismo ocurre para otros sistemas operativos.

3. Escribe los siguientes comandos de shell y haz clic en Guardar para guardar el script de compilación. Después de guardar los cambios, la página se redireccionará de nuevo al tablero de tu proyecto.

Las siguientes instrucciones realizan (pull) la extracción de tu código desde la ubicación remota de tu fuente de código (origin master) y con NodeJS NPM install (npm install) instalan las dependencias necesarias para ejecutar tu proyecto. Estos comandos se ejecutan cada vez que realizas una solicitud de envío a tu gestor de código fuente.

Este proyecto en particular utiliza NodeJS para las dependencias, pero tu proyecto en particular puede no hacerlo.

git pull origin master
npm install
Adding Commands to the Automated Build Script

4. Ahora, en el panel de control de tu proyecto, haz clic en Build Now para ejecutar la compilación.

Running the Build

5. Desplázate hacia abajo hasta el historial de compilaciones para ver el estado de la compilación. Si la compilación fue exitosa, verás una salida similar a la captura de pantalla a continuación.

Viewing Successful Build

Si la compilación falla, verás la salida que se muestra a continuación.

Failed build history

6. A continuación, desplázate hacia arriba y haz clic en Configure para configurar las acciones posteriores a la compilación del proyecto.

Configuring Project’s Post Build Actions

7. Haz clic en la pestaña de Post Build Actions, luego haz clic en Add post-build action y elige Git publisher. La página expande la sección de configuración de Git Publisher (siguiente paso).

Accessing Git Publisher Post-Build Action

8. Finalmente, habilita la opción de Push Only If Build Succeeds y haz clic en el botón de Save para guardar los cambios. Habilitar esta opción le indica a Jenkins que despliegue el código solo cuando una ejecución de compilación tiene éxito.

Adding Post-Build Actions

Conclusión

En este tutorial, has pasado por el proceso de conectar Jenkins a tu sistema de gestión de código fuente. También has creado un script de compilación que se ejecuta automáticamente cuando Jenkins descarga una nueva versión de tu código y has configurado desencadenadores de compilación para automatizar despliegues web.

Ahora, ¿por qué no ahorrarte tiempo automatizando el despliegue de tu aplicación con un trabajo de compilación en Jenkins?

Source:
https://adamtheautomator.com/jenkins-build-job/