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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Experto: Maven es una herramienta de automatización de compilación que se utiliza principalmente para crear proyectos Java.
requisitos previos
- Cuenta AWS (Crear si no tienes uno)
- Comprensión básica de Github.
- Comprensión básica de Jenkins.
- Comprensión básica del servidor y los comandos de Linux
¿Que haremos?
- Crear una instancia EC2
- Instalar Java
- Instalar Jenkins
- Configurar Apache Tomcat
- Bifurcar mi Github Repo
- Acceder y configurar Jenkins
- Configurar un trabajo de Jenkins para la implementación de .war
- Configurar Webhook en Github Repo
- 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.