En la actualidad, ya es raro no participar en un proyecto de desarrollo donde no aparezca el término DevOps o Integración Continua.
Este término se ha puesto muy de moda y, es verdad, que las aplicaciones basadas en microservicios son más complejas de gestionar y administrar. Y más aún cuando hablamos de aplicaciones en la nube en servidores como los de Clouding.io.
Por eso, como el desarrollo y el diseño web no para de evolucionar, y ahora se utilizan herramientas como Java, Spring, contenedores, y mucha virtualización, pues es necesario disponer de herramientas potentes para mantener toda la arquitectura integrada.
También te puede interesar:
Mi análisis de los Servidores VPS de Clouding.io
Cómo instalar un servidor web en un NAS Synology
Curso de Diseño Web con Divi
7 Trucos para posicionar un post en tu web
Tabla de contenidos
Jenkins como herramienta de integración continua
Jenkins es una herramienta muy útil para crear procesos automáticos. Te permite crear jobs de tus aplicaciones para el mantenimiento de datos de tu aplicación, pero también tiene otras funciones que son muy útiles para la integración continua que te permite enlazar dichos procesos automáticos para crear procesos más complejos.
Dichos procesos, son los pipeline. Que te permiten crear trabajos para realizar tareas tan complejas como:
- Descarga del código fuente desde repositorios
- Compilación del código fuente
- Realizar pruebas unitarias
- Realizar análisis de código estático con Sonar
- Despliegue de la aplicación (con integración con Ansible por ejemplo)
Una vez que ya conocemos las ventajas de Jenkins como herramienta de integración continua, veamos cómo se instala para que podamos hacer uso de ella.
Crear una máquina virtual en Clouding
Antes de nada, necesitamos crear una máquina virtual en nuestra nube de servidores de Clouding.
Es suficiente con utilizar una plantilla de Centos para poder practicar con nuestro entorno de integración continua.
Instalación de Java
Usaremos Open Java para nuestro entorno, que podemos descargar desde aquí:
http://openjdk.java.net/install/
yum install java-1.8.0-openjdk
Confirmamos la versión de java con el comando:
java -version
Y configuramos la variable de entorno JAVA_HOME con el valor que obtengamos de:
find /usr/lib/jvm/java-1.8* | head -n 3
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-[valor obtenido el comando anterior]
Añadimos la variable a la variable PATH:
export JAVA_HOME
PATH=$PATH:$JAVA_HOME
Y para que no se pierda, la añadimos a nuestro profile:
vi ~/.bash_profile
Si comprobamos de nuevo la versión de Java:
java -version
Debemos obtener algo como esto:
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
Instalar Jenkins
La instalación de Jenkins es más sencilla aún.
Instalamos primero el comando wget por si lo tenemos:
yum -y install wget
Descargamos el paquete de Jenkins:
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
Ejecutamos el siguiente comando para traernos la key del paquete. Si ya la tuviéramos de antes, daría error, y podríamos ignorar el error:
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
Y con el siguiente comando iniciamos la instalación de jenkins:
yum -y install jenkins
Arrancar Jenkins
Durante la instalación, Jenkins se instaló cómo servicio. Por lo que podremos arrancarlo, pararlo y reiniciarlo como cualquier servicio:
service jenkins start
Para que se inicie siempre cuando se reinicie la máquina, hacemos lo siguiente:
chkconfig jenkins on
El acceso a jenkins es a través del puerto 8080 por defecto:
http://YOUR-SERVER-PUBLIC-IP:8080
Configuración de Jenkins
Inicia sesión en Jenkins.
El usuario por defecto es: admin
La contraseña por defecto se encuentra en: /var/lib/jenkins/secrets/initialAdminPassword
Puedes saltarte la instalación de plugins. Lo puedes hacer más adelante.
Modifica la contraseña por defecto:
- Admin > Configure > Password
Configura el path de Java:
- Manage Jenkins > Global Tool Configuration > JDK
Y crea otro usuario administrador por seguridad y elimina el usuario admin.
Crear un Job de prueba
- Crear “new item”
- Introducir un nombre para el job: Mi primer Job en Jenkins
- Elije proyecto Freestyle
- Debajo de la sección de construcción en Execute shell ponemos el siguiente comando para que se ejecute:
echo "Bienvenido a Jenkins"
- Salvamos nuestro job
- Le damos a construir job
- Y comprobamos que en la salida de la consola vemos el mensaje que hemos configurado.
Plugins necesarios para crear pipelines
Si queremos crear un pipeline en Jenkins para automatizar nuestro entorno de integración continua, necesitamos instalar algunos plugins.
Aquí tenéis una lista de posibles plugins que pueden seros necesarios en función de vuestra aplicación.
- Maven Integration Plugin
- SonarQube Scanner for Jenkins
- NodeJS
- Git plugin
- GitLab plugin
- SSH Build Agents
- Publish Over SSH
- SSH Agent
- SSH
Todos no os serán necesarios, pero por ejemplo si usáis GitLab, pues necesitaréis esos plugins. Si también necesitáis ejecutar comandos por SSH, pues igual. Pero si vuestra aplicación no tiene NodeJS, pues ese no os será necesario.
Este es solo un ejemplo de algunos plugins que puede que lleguéis a necesitar.
Crear nuestro primer Pipeline
Creamos un nuevo job del tipo Pipeline
Le asignamos un nombre.
Podemos activar desechar ejecuciones antiguas: para que rote las ejecuciones y no guardamos información de todas ellas para siempre ya que ocupan espacio.
Podemos añadir parámetros. Los parámetros son útiles para que puedas personalizar propiedades de los pipeline, como puede ser la rama del repositorio que queremos desplegar, checkbox para seleccionar si solo queremos compilar, o solo desplegar, o ambas, seleccionar si se quiere hacer un backup o no, etc. Si hemos instalado el plugin de GitLab, tendremos una sección para seleccionar el repositorio de GitLab del cual debe descargarse el código.
Si hemos instalado el plugin de SSH, igualmente, tendremos una sección para ello y podremos ejecutar un script de comandos para por ejemplo si estamos usando ansible.
Al final, la idea es que podamos lanzar nuestras aplicaciones de forma automatizada y podamos tener en un mismo job de jenkins varias tareas encadenadas como se muestra en la imagen de ejemplo:
En esta imagen se puede ver por ejemplo en qué fase de la integración ha fallado para poder depurar:
Conclusiones
La nube se está convirtiendo en una herramienta indispensable para no tener que disponer de infraestructura tecnológica propia. Es por eso que en Clouding podéis disponer de los mejores servidores para vuestro negocio. Crearse una cuenta en Clouding y empezar a crear máquinas virtuales con pocos clics de ratón es muy sencillo. Además, si te registras en la website de Clouding, te regalan 5€ de saldo gratis para probar la plataforma cloud sin ningún compromiso.