Get it on Google Play
12-11-2018
 

Formación DevOps: Proceso de integración/despliegue continuo con Gitlab

Este artículo aporta contenido extra al vídeo «Proceso de integración/despliegue continuo con Gitlab» de mi canal de Youtube. Para tener la mejor experiencia ver el vídeo y leer el artículo.

Gitlab es una de las herramientas DevOps mas usadas ya que nos permite gestionar el código, crear procesos CI/CD(Integración continua y despliegue continuo) y se integra con herramientas como SonarQ para evaluar la calidad del código, Docker, etc.

En este post voy a ir poniendo las instrucciones que he ido siguiendo para completar el ejercicio:

Instalar Gitlab en un contenedor Docker

Lo primero que hemos hecho ha sido desplegar un contenedor Docker con Gitlab. Para hacer esto solo hemos tenido que escribir la siguiente instrucción:

sudo docker run gitlab/gitlab-ce

Esto despliega automáticamente una instalación de Gitlab operativa. También hemos creado un nuevo proyecto.

Clonar proyecto en local y hacer un push

Las instrucciones que hemos seguido para clonar nuestro proyecto y añadirle un fichero ‘index.html’ son las siguientes(Requiere tener instalado git):

# Clonamos el proyecto en local
git clone <URL del repositorio>

# Creamos nuestro fichero index.html
echo “Hola mundo” > index.html

# Añadimos el fichero al proyecto
git add *
# Hacemos el commit
git commit -m “Comentario del commit”
# Hacemos el push al repositorio central
git push

Ahora ya tenemos nuestro proyecto en el repositorio y el siguiente paso ha sido instalar nuestro servidor(Dentro de un contenedor Docker) y clonar el proyecto.

Instalar servidor web

Ahora vamos a crear un contenedor Docker con Ubuntu, vamos a instalar el servidor web apache y git. Después vamos a clonar el proyecto:

# Arrancamos el contenedor con Ubuntu
sudo docker run -it ubuntu:latest

# Una vez dentro del contenedor, instalamos las dependencias
apt-get update
apt-get install wget
apt-get install apache2
apt-get install git
service apache2 start

# Ahora que ya tenemos funcionando apache limpiamos la carpeta con la web y clonamos nuestro proyecto
cd /var/www/html
rm *
git clone <URL del proyecto> /var/www/html

Ya tenemos nuestro proyecto funcionando en un servidor web!

Configuración del proceso de despliegue

La configuración del proceso de despliegue o ‘pipeline’ se configura creando un fichero llamado ‘.gitlab-ci.yml’ en la raíz del proyecto. Este fichero debe contener algo parecido a esto(Lo explico en el vídeo):

stages:
  - init
  - despliegue

hello:
  stage: init
  script:
    - echo "Hello world!"

deploy:
  stage: despliegue
  script:
    - cd /var/www/html
    - git pull http://<username>:<password>@<url del repositorio>

Este es el fichero de despliegue que hemos usado donde básicamente tiene dos ‘stages’ y un ‘job’ en cada ‘stage’. El primer job escribe ‘hola mundo’ y el segundo hace un pull del código.

Atención! Aseguraos que añadís el fichero al repositorio, al ser un fichero oculto hay que añadirlo específicamente(No vale con hacer un git add*).

Configuración del proceso ‘runner’

Para que se ejecuten las tareas configuradas en el pipeline deberemos configurar un proceso llamado ‘runner’ en el servidor que, básicamente, estará siempre escuchando si hay trabajos pendientes y los ejecutará.

Primero hemos instalado el cliente ‘gitlab-runner’:

wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

chmod 777 /usr/local/bin/gitlab-runner

Después hay que ir al proyecto, seleccionar ‘settings’ del menú lateral y seleccionar ‘CI/CD’. Una vez aquí desplegamos ‘Runners’ donde no mostrará la URL del servidor y un ‘Token’ que vamos a necesitar.

Con esta información registramos el runner:

gitlab-runner register

y después arrancamos el proceso:

gitlab-runner run

Si todo ha ido bien, veremos en la sección ‘Runners’ anterior(Consultad el vídeo) veremos el runner.

Ya podemos probar el proceso

A partir de ahora ya podemos hacer modificaciones al proyecto, hacer un ‘push’ y ver como los cambios se despliegan solos.

Ánimos! Y ya sabéis: Like, comentar y compartir 😀

Gitlab

Gitlab

Si te ha servido, por favor comparte
 

Leave a Reply