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.
- 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.
- 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.
- Maven : Maven es una herramienta de automatización de compilación que se utiliza principalmente para compilar proyectos Java.
Requisitos previos
- Cuenta de AWS (cree si no tiene una)
- Comprensión básica de Github.
- Comprensión básica de Jenkins.
- Comprensión básica del servidor y los comandos de Linux
¿Qué haremos?
- Cree 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
- 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.