GNU/Linux >> Tutoriales Linux >  >> 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. Github Webhook: 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 compilará e implementará un archivo .war del código de la aplicación Java de muestra en el servidor Apache Tomcat.
  6. Maven : Maven es una herramienta de automatización de compilación que se utiliza principalmente para compilar proyectos Java.

Requisitos previos

  1. Cuenta de AWS (cree si no tiene una)
  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

¿Qué haremos?

  1. Cree 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. Prueba la compilación automática en cada confirmación

Crea 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 la instancia está en funcionamiento. Usaré esta instancia para instalar Java o las dependencias y también Apache Tomcat y Jenkins.

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 puedes comprobar su versión.

sudo apt-get update
sudo apt install openjdk-8-jdk
java -version

Instalar Jenkins

Use los siguientes comandos para instalar Jenkins en su instancia.

sudo apt-get update
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/> /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

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


sudo systemctl start jenkins #Iniciar Jenkins
estado del servicio jenkins #Comprobar el estado de Jenkins

En la siguiente captura de pantalla puedes ver que el servicio de Jenkins se ha iniciado. 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 de Apache Tomcat.

Use los siguientes comandos para crear un directorio en /opt

cd /opt/
sudo mkdir Innovación

Cambia 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:ubuntu Innovecture
cd Innovecture/

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 porque nuestro servicio Jenkins ya se está ejecutando en el puerto 8080.

vim conf/servidor.xml

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

Iniciar 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 

Iniciar sesión en la aplicación Tomcat Manager

Para ver si podemos iniciar sesión en la aplicación de administración de Apache Tomcat utilizando las credenciales que especificamos anteriormente, presione la URL de Apache Tomcat http://IP-of -Apache-Tomcat:8090/administrador. 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 siguiente pantalla

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-of-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 correctamente, vaya a  Administrar Jenkins> Administrar complementos. En 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 Complemento de implementación en 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.



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

Agregar Github Repo en la pestaña General

En la pestaña general, marque la casilla de verificación "Github project" y agregue la URL de su repositorio de código fuente o la URL del repositorio que ha bifurcado de mi repositorio.

Agregar 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 activador 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 objetivos, especifique limpiar y empaquetar y guardar el trabajo.

Compilación de prueba

Para probar el trabajo si es capaz de extraer y construir nuestro código, haga clic en Build Now.

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.

Compilación manual de prueba

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 fue exitosa y se implementó en el servidor Apache Tomcat.

Para probar si la guerra realmente se ha implementado, acceda a Apache Tomcat http://IP-of-Apache-Tomcat:8090/manager para acceder a la aplicación de administrador.

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

Prueba Ejemplo de Java Solicitud

Para probar si la aplicación Java se está ejecutando, presione la URL http://IP-of-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 webhooks y luego haga clic en "Agregar Webhook"

En la URL de la carga añade 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 Auto Build on Commit

Ahora estamos listos para probar nuestro trabajo de compilació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, acceda a él a su sistema local.

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

Haz 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 usuario.nombre "Rahul Shivalkar"
git config usuario.email "[email protected]"

Para confirmar y enviar sus cambios, use los siguientes comandos

git commit -m "Prueba de confirmación"
git push

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

Puede ver esto en "Registro de sondeo" del trabajo, consulte la siguiente captura de pantalla para ver el mismo.

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

Volver a probar

Ahora cambie el código para probar si se implementa o no el código más reciente. 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 usando los siguientes comandos.

git add src/main/webapp/index.jsp
git commit -m "¡Cambió el código a Hello World New!"
git push

Haga clic en la URL de Apache Tomcat http://IP-of-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 aplicación más reciente muestra "Hello World New!".

Conclusión

En este artículo, vimos los pasos para crear una canalización 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.


Linux
  1. Ponga en funcionamiento podman en Windows usando Linux

  2. Cómo crear y agregar un volumen de EBS en una instancia de AWS (EC2)

  3. Cómo lanzar una instancia AWS EC2 usando Terraform

  4. Cree una instancia EC2 en AWS usando Terraform

  5. Usando kbhit() y getch() en Linux

Seguridad de CI/CD:cómo proteger su tubería de CI/CD

Instalación y configuración de Jenkins en Linux

Cómo instalar Rocky Linux 8 en la instancia Amazon AWS Ec2

Configurar el flujo de trabajo de CI/CD con acciones de GitHub

Cómo instalar Jenkins CI/CD en Ubuntu Linux

Cómo configurar el servidor y el cliente VPN de Linux usando OpenVPN