Configure una canalización de CI/CD simple con Github y Jenkins en una instancia de AWS EC2 Linux

Configure una canalización de CI/CD simple con Github y Jenkins en una instancia de AWS EC2 Linux

En este artículo veremos los pasos para implementar una canalización de CI/CD simple usando Jenkins. Usaremos un código Java de muestra y lo implementaremos en el servidor web Apache Tomcat como un archivo .war. Usaremos Maven como una herramienta de compilación. Puede encontrar el código Java de muestra en mi repositorio de Github (repo). Antes de continuar, comprendamos los conceptos básicos de las herramientas y tecnologías que usaremos para configurar la canalización de CI/CD.

  1. Instancia EC2: La instancia EC2 es una máquina virtual (VM) en la nube de AWS. Implementaremos Apache Tomcat y Jenkins en una instancia EC2.
  2. Apache Tomcat: Apache Tomcat es un servidor web de código abierto. Implementaremos nuestra aplicación Java de muestra en Apache Tomcat como un archivo .war.
  3. GitHub: Github es una plataforma de alojamiento de código. Básicamente es un sistema de gestión de control de versión/fuente. Tendremos nuestro código Java de muestra en Github.
  4. Webhook de Github: Github Webhook se utiliza para crear y configurar integraciones. Crearemos un webhook que activará un trabajo de Jenkins cada vez que se realice una nueva confirmación en el repositorio de Github.
  5. Jenkins: Jenkins es una herramienta de automatización gratuita de código abierto. Escribiremos un trabajo en Jenkins que creará e implementará un archivo .war del código de la aplicación Java de muestra en el servidor Apache Tomcat.
  6. Experto: Maven es una herramienta de automatización de compilación que se utiliza principalmente para crear proyectos Java.

requisitos previos

  1. Cuenta AWS (Crear si no tienes uno)
  2. Comprensión básica de Github.
  3. Comprensión básica de Jenkins.
  4. Comprensión básica del servidor y los comandos de Linux

¿Que haremos?

  1. Crear una instancia EC2
  2. Instalar Java
  3. Instalar Jenkins
  4. Configurar Apache Tomcat
  5. Bifurcar mi Github Repo
  6. Acceder y configurar Jenkins
  7. Configurar un trabajo de Jenkins para la implementación de .war
  8. Configurar Webhook en Github Repo
  9. Probar Auto Build en cada Confirmación

Crear una VM o una Instancia EC2

Para crear una instancia EC2, puede consultar el documento disponible aquí.

Aquí, he creado una nueva instancia EC2 en mi cuenta de AWS. Esta instancia tiene Ubuntu 18 OS.

Puedes ver que el instancia está en funcionamiento. Usaré esta instancia para instalar Java o las dependencias y Apache Tomcat y Jenkins también.

Instalar Java

Para instalar Java en su sistema Ubuntu 18, puede usar los siguientes comandos. El siguiente comando instalará Java 8. Una vez instalado, incluso puede verificar su versión.

sudo apt-obtener actualización
sudo apt instalar openjdk-8-jdk
Java -versión

Instalar Jenkins

Use los siguientes comandos para instalar Jenkins en su instancia.

sudo apt-obtener actualización
wget -q -O – https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key agregar –
sudo sh -c ‘echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’
sudo apt-obtener actualización
sudo apt-get install jenkins

Una vez que haya instalado Jenkins, use el siguiente comando para iniciarlo y verificar su estado.

sudo systemctl iniciar jenkins #Iniciar Jenkins
servicio estado de jenkins #Comprobar el estado de Jenkins

En la siguiente captura de pantalla, puede ver que se ha iniciado el servicio Jenkins. Este servicio de Jenkins se ha iniciado en el puerto 8080.

Configurar Apache Tomcat

Instalar Apache Tomcat

Antes de descargar e instalar Apache Tomcat, creemos un directorio donde podamos descargar el paquete Apache Tomcat.

Use los siguientes comandos para crear un directorio en /opt

cd /opt/
sudo mkdir Innovación

Cambie la propiedad del directorio usando el siguiente comando. Estamos cambiando la propiedad al usuario Ubuntu y al grupo Ubuntu para que el usuario de Ubuntu pueda iniciar el servicio Apache Tomcat y no necesitamos usar privilegios de root, usuario o sudo.

sudo chown -R ubuntu:innovación de ubuntu
cd Innovación/

Descargue y extraiga Apache Tomcat usando los siguientes comandos. Si desea utilizar cualquier otra versión de Apache Tomcat, puede descargarla y extraerla.

wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
tar -zxvf apache-tomcat-9.0.31.tar.gz
cd apache-tomcat-9.0.31/

Realice las configuraciones requeridas en Apache Tomcat usando el siguiente comando. Consulte las siguientes capturas de pantalla para conocer las configuraciones que deben realizarse. En las siguientes configuraciones, estamos asignando un usuario y una contraseña que se pueden usar para iniciar sesión en la aplicación de administración de Apache Tomcat. Tome nota de este nombre de usuario y contraseña, ya que necesitaremos estas credenciales más adelante.

Configurar Apache Tomcat

vim conf/tomcat-users.xml

Consulte la siguiente captura de pantalla y asegúrese de que su context.xml tenga la misma configuración.

vim webapps/manager/META-INF/context.xml

En server.xml, en el directorio conf, cambie el puerto en el que se ejecuta Apache Tomcat, es decir, cambie el puerto 8080 a 8090, ya que nuestro servicio Jenkins ya se está ejecutando en el puerto 8080.

vim conf/servidor.xml

También cambie la configuración localhost en el archivo server.xml con la IP del servidor para que se pueda acceder a su servidor desde Internet.

Inicie Apache Tomcat

Use el siguiente comando para iniciar el servicio Apache Tomcat.

bin/inicio.sh

En la siguiente captura de pantalla, puede ver que el servicio Apache Tomcat se está ejecutando en el puerto 8090 y en el puerto 8080 se está ejecutando el servicio Jenkins. Para verificar su sistema, use el siguiente comando.

netstat-tulpn

Inicie sesión en la aplicación Tomcat Manager

Para ver si podemos iniciar sesión en la aplicación de administrador de Apache Tomcat utilizando las credenciales que hemos especificado anteriormente, presione la URL de Apache Tomcat http://IP-de-Apache-Tomcat:8090/manager. Se le solicitará una pantalla de credenciales, simplemente ingrese el nombre de usuario ‘tomcat-manager’ y la contraseña que hemos configurado en conf/tomcat-users.xml.

Una vez que inicie sesión con éxito, verá la pantalla de la siguiente manera

Fork Github Repo

Puede bifurcar o clonar mi repositorio mencionado a continuación. Este repositorio contiene el código Java de muestra, puede usar este código o, si tiene su propio repositorio, también puede usarlo.

URL del repositorio: https://github.com/shivalkarrahul/Innovecture.git

Acceder y configurar Jenkins

Para acceder a Jenkins, presione la URL http://IP-de-Jenkins:8080.

Siga las pantallas que aparecen para desbloquear Jenkin e instalar los complementos sugeridos

Una vez que desbloquee Jenkin e instale los complementos sugeridos, verá la siguiente pantalla.

Debe ingresar el nombre de usuario y la contraseña que necesita configurar y hacer clic en guardar y continuar.

Instalar Complemento de autenticación de Github sin reiniciar

Una vez que inicie sesión con éxito, vaya a Administrar Jenkins > Administrar complementos. Bajo la Disponible pestaña Buscar git. Seleccione el complemento «GithubAuthentication» y haga clic en instalar sin reiniciar.

Instalar Complemento de integración de Maven sin reiniciar

De la misma manera, instale el complemento de integración maven e instálelo sin reiniciar

Instalar Implementar en el complemento del contenedor sin reiniciar

Para automatizar la implementación de un archivo .war en Apache Tomcat, necesitaríamos un complemento «Implementar en contenedor». Instale el complemento «Implementar en contenedor» de la misma manera que instalamos el complemento git y maven.

Configurar un trabajo de Jenkins para la implementación de .war

Ahora es el momento de crear un trabajo de estilo libre. Vaya al panel principal y haga clic en crear trabajo. Seleccione el trabajo de estilo libre y continúe.

Agregue Github Repo en la pestaña General

En la pestaña general, marque la casilla de verificación «Proyecto Github» y agregue la URL de su repositorio de código fuente o la URL del repositorio que bifurcó de mi repositorio.

Agregue la URL de Github en Administración de código fuente

En la pestaña de administración del código fuente, haga clic en el botón de opción «Git» y agregue la URL del repositorio como se muestra a continuación. Dado que mi repositorio no es privado y es público, no necesitaba agregar credenciales.

Elija Github gatillo de gancho

Seleccione «GitHub hook trigger for GitSCM polling» en la pestaña Build Triggers

Agregar pasos de compilación

En el entorno de compilación, haga clic en Agregar paso de compilación y seleccione «Invocar objetivos Maven de nivel superior»

Para los objetivos, especifique limpiar y empaquetar y guardar el trabajo.

Prueba de compilación

Para probar el trabajo si puede extraer y compilar nuestro código, haga clic en Generar ahora.

Agregar implementación Acciones posteriores a la compilación

Ahora que estamos seguros de que nuestro código se está extrayendo y compilando, estamos listos para agregar una acción posterior a la compilación. Para agregar una acción posterior a la compilación, haga clic en la acción posterior a la compilación en el entorno de compilación y seleccione «Implementar guerra en un contenedor».

Luego agregue la URL del servidor tomcat junto con las credenciales. Para agregar credenciales, haga clic en «Agregar» y siga los pasos que ve y guarde el trabajo.

Prueba de compilación manual

Ahora pruebe si nuestro trabajo puede extraer, compilar e implementar el código en el servidor Apache Tomcat. Haga clic en construir ahora para probar nuestro trabajo.

Como en la captura de pantalla anterior, la compilación manual se realizó correctamente y se implementó en el servidor Apache Tomcat.

Para probar si la guerra realmente se ha desplegado, presione el Apache Tomcat http://IP-de-Apache-Tomcat:8090/manager para acceder a la aplicación del administrador.

Aquí puedes ver que el web_ex.war El archivo se ha implementado correctamente en el servidor Apache Tomcat.

Prueba Java de muestra Solicitud

Para probar si la aplicación Java se está ejecutando, presione la URL http://IP-de-Apache-Tomcat:8090/web_ex.

Configurar Webhook en Github Repo

Crear un webhook

Para crear un libro de chicas en la pestaña, visite su sitio web, inicie sesión en su cuenta y siga los pasos que se mencionan a continuación.

Vaya a la configuración de su repositorio, en el panel izquierdo, haga clic en ganchos web y luego haga clic en «Agregar webhook»

En la URL de carga útil, agregue http://Jenkins-URL:8080/github-webhook.

Puede elegir los eventos que le gustaría activar este Webhook o puede seleccionar «Enviarme todo» si desea activar el trabajo de Jenkins en cada evento, haga clic en actualizar Webhook para guardarlo.

Probar compilación automática al confirmar

Ahora estamos listos para probar nuestro trabajo de construcción automática.

Para probar si nuestro trabajo de Jenkins extrae el código de nuestro repositorio de github en cada confirmación, use los siguientes comandos.

Para clonar el repositorio localmente, he usado el siguiente comando. Si tiene su propio informe, llévelo a su sistema local.

clon de git https://github.com/shivalkarrahul/Innovecture.git
cd Innovación/

Realice algunos cambios en el repositorio para que podamos impulsarlos. Aquí, he agregado un nuevo archivo localmente que insertaré en mi repositorio remoto

toque LÉAME.md

Para configurar el nombre de usuario y la ID de correo electrónico para git, use los siguientes comandos.

git config nombre de usuario «Rahul Shivalkar»
git config usuario.email «[email protected]»

Para confirmar y enviar sus cambios, use los siguientes comandos

git commit -m «Compromiso de prueba»
empujar git

Tan pronto como insertemos nuestros cambios en el repositorio de Github, se activará nuestro trabajo de Jenkins que hemos agregado en Github Webhook.

Puede ver esto en «Registro de sondeo» del trabajo, consulte la siguiente captura de pantalla para ver lo mismo.

Si va a la salida de la consola del trabajo, puede ver que el trabajo se ha ejecutado correctamente y que la guerra se ha implementado en Apache Tomcat.

volver a probar

Ahora cambie el código para probar si el código más reciente se implementa o no. Cambiaré el mensaje que se muestra en el navegador.

Si está utilizando su propio informe, realice los cambios necesarios en su código, aquí solo estoy cambiando un archivo index.jsp de muestra que imprime el mensaje en el navegador.

vim src/main/webapp/index.jsp

Ahora veamos si el código modificado se refleja o no.

Confirme los cambios que ha realizado en su código utilizando los siguientes comandos.

git agrega src/main/webapp/index.jsp
git commit -m «¡Cambió el código a Hello World New!»
empujar git

Presione la URL de Apache Tomcat http://IP-de-Apache-Tomcat:8090/web_ex para acceder a nuestra aplicación de muestra.

Puede ver que el código más reciente se creó e implementó en Apache Tomcat, lo que significa que la aplicación se implementó correctamente y la canalización también se activó correctamente.

Si notó que mi código anterior mostraba solo «¡Hola mundo!» y ahora, cuando realicé cambios en mi index.jsp y lo confirmé, la última aplicación muestra «Hello World New!».

Conclusión

En este artículo, vimos los pasos para crear una canalización de CI/CD simple que puede extraer su código del repositorio de Github e implementarlo en el servidor Apache Tomcat en cada confirmación. También vimos los pasos para instalar Jenkins, Apache Tomcat, Java, complementos en Jenkins.

Deja una respuesta

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