Cómo configurar Gitlab para la integración y el despliegue continuos en CentOS

En este tutorial explicaré cómo configurar un servidor local de Gitlab para el funcionamiento de CI (Integración Continua) / CD (Despliegue Continuo). Para quien aún no lo conozca, GitLab es una plataforma completa de DevOps que se entrega como una única aplicación. Desde la planificación del proyecto y la gestión del código fuente hasta la monitorización y la seguridad, pasando por el CI/CD. Permite a los equipos colaborar y trabajar en una sola conversación en lugar de gestionar varios hilos en varias herramientas. Al proporcionar un único repositorio de datos, una interfaz de usuario y un modelo de autorización a lo largo del ciclo de vida de DevOps, los equipos pueden colaborar de forma significativa, reducir el tiempo del ciclo y centrarse exclusivamente en construir rápidamente cada aplicación.

A medida que cada enfoque empresarial se hace más grande y más completo, todos los productos deben tener características más destacadas que sus competidores. Para conseguirlo, hay que introducir múltiples módulos y desarrollarlos una vez que estén listos, llevarlos rápidamente al mercado y probarlos y verificarlos completamente. En este sentido, ayudaría mucho a alcanzar el hito si Gitlab fuera la única fuente de aplicaciones que pudiera facilitar el proceso de transición a la práctica DevOps.

1. Cómo funciona la Integración Continua y el Despliegue Continuo

Existe una secuencia lógica de posibles acciones a realizar a lo largo del ciclo de vida del proceso de desarrollo de software, utilizando GitLab como plataforma para su código. El objetivo es apoyar a los equipos de forma coherente y eficaz desde la primera fase de implementación de un nuevo producto hasta la fase final de implementación en producción. La imagen siguiente muestra un resumen del flujo de trabajo:

Integración continua (IC)

Dado que el alcance de DevOps es bastante amplio, este tutorial se centra en la configuración del servidor Gitlab en condiciones locales. Utilizaremos la edición comunitaria de Gitlab para configurarlo en nuestro entorno local.

2. Fase de instalación

Para la fase de instalación, primero empezaremos por configurar el servidor con los prerrequisitos, asumiendo que cada servidor está bajo una configuración mínima de servidor. A continuación se detallan los pasos:

 [root@MyGitLab ~]# cat /etc/resolv.conf 
[root@MyGitLab ~]# yum updateinstall -y curl policycoreutils-python openssh-server

Hacer lo anterior es opcional, sólo para asegurar que nuestra instalación y revisión funcionen sin problemas. Una vez hecha la instalación, tendrás la captura de pantalla como la siguiente

A continuación, inicia el servicio postfix como se requiere. A continuación, el comando.

 [root@MyGitLab ~]# systemctl start postfix 
[root@MyGitLab ~]# systemctl status postfix
[root@MyGitLab ~]# systemctl enable postfix

Una vez hecho, tendrás la captura de pantalla como la siguiente

A continuación tenemos que instalar wget para tomar el script de automatización proporcionado por el propio GitLab para la instalación. También puedes utilizar otra forma de realizar la instalación como por ejemplo utilizando Curl, etc, para este ejercicio utilizaré wget para descargar el script en su lugar. Una vez instalados los paquetes de wget, descargaremos el script desde aquí y lo pondremos en nuestro servidor local. A continuación se muestran los pasos:

 [root@MyGitLab ~]# yum install -y wget 
[root@MyGitLab ~]# wget https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh
[root@MyGitLab ~]# chmod +x script.rpm.sh
[root@MyGitLab ~]# ./script.rpm.sh

El proceso será como el siguiente:

A continuación, empezaremos a preparar el servicio GitLab y a configurar sus dependencias. Los pasos son como los siguientes:

 [root@MyGitLab ~]# EXTERNAL_URL="http://10.124.12.133:80" 
[root@MyGitLab ~]# echo $EXTERNAL_URL
http://10.124.12.133
[root@MyGitLab ~]# yum install -y gitlab-ce

Una vez que todo esté hecho, verás el progreso como se muestra a continuación

Genial! Ahora que todo está bajo control, vamos a continuar el proceso de instalación del servicio y sus dependencias. Como GitLab era una aplicación sólida para que los DevOps se ingeniaran juntos, habrá varios paquetes y se configurarán. Por lo tanto, es normal que el tiempo de instalación sea más largo que el de cualquier servicio normal. Antes de comenzar la instalación, vamos a confirmar que la URL principal se ha configurado como se esperaba. A continuación se indican los pasos :-

 [root@MyGitLab ~]# cat /etc/gitlab/gitlab.rb 
external_url='http://10.124.12.133'

[root@MyGitLab ~]# gitlab-ctl reconfigure

Si el progreso se realiza sin problemas, obtendrás la siguiente captura de pantalla

Ahora que todo está hecho en la parte de la instalación, vamos a hacer el toque final que es habilitar el puerto para que Gitlab sirva. Estos son los pasos :-

 [root@MyGitLab ~]# firewall-cmd --permanent --add-service ssh 
[root@MyGitLab ~]# firewall-cmd --permanent --add-service http
[root@MyGitLab ~]# firewall-cmd --reload
[root@MyGitLab ~]# iptables -L -n

Abajo está la captura de pantalla

Ahora que ya hemos hecho la instalación de GitLab, podemos empezar a entrar en nuestro propio servidor de GitLab y hacer la configuración del proyecto según sea necesario. Como resultado final, puedes ver tu servicio de GitLab a través del navegador mediante la URL que hemos configurado anteriormente, en nuestro caso es http://10.124.12.133 . Te redirigirá automáticamente a la página principal, y a continuación establecerás tu contraseña inicial de administrador según sea necesario. En este caso el usuario administrador por defecto es root. A continuación se muestra el ejemplo :-

3. Fase de pruebas

Como todo está hecho, vamos a actuar como un usuario bajo un equipo que define un proyecto que utiliza GitLab como repositorio de desarrollo del proyecto. Primero vamos a crear un nuevo proyecto, haz clic en Crear un Proyecto y define los detalles que necesites. El ejemplo es el siguiente :-

Una vez hecho esto, serás redirigido a la página principal del proyecto como se indica a continuación

Ahora, como proyecto habrá varios usuarios aportados a este repositorio. Para recrear el escenario, vamos a crear un usuario que luego contribuirá a este proyecto. Vuelve a la página principal y haz clic en Añadir personas. Serás redirigido a la página de creación de miembros como la siguiente. Crea un usuario y rellena lo que necesites.

Ahora, una vez hecho esto, vuelve a la página principal del proyecto, ve a la configuración y haz clic en miembros. A continuación se muestra el ejemplo :-

Te llevará a la página de miembros del proyecto, incluye el nuevo usuario que has creado y define los roles que se le darán al usuario como en el ejemplo de abajo. Para cada definición de los roles y privilegios, puedes hacer clic en Leer más para obtener más detalles

Una vez hecho esto, verás la lista de miembros del equipo concedidos como en el ejemplo de abajo :-

Ahora, vamos a probar la contribución al flujo de trabajo del proyecto accediendo desde otro servidor e iniciando la sesión como el nuevo usuario que hemos creado y creando un nuevo archivo para ser consignado en el proyecto. En primer lugar, vamos a tomar la URL del proyecto para clonarlo desde otro servidor o estación de trabajo. Puedes tomar el enlace de la URL del proyecto del ejemplo siguiente :-

Como todo está preparado, vamos a entrar en una estación de trabajo de prueba y clonar el proyecto para que pueda acceder otro usuario. Estos son los pasos :-

 [root@Test1 ~]# yum install -y git 
[root@Test1 ~]# git clone http://10.124.12.133/root/my-first-project.git

Tendrás que dar acceso al usuario para clonar el proyecto, utiliza el nuevo usuario creado ahora mismo como se muestra en el ejemplo :-

Una vez hecho esto, se creará una nueva carpeta con el nombre del proyecto en tu estación de trabajo. Ahora entra en la carpeta y crea un archivo vacío. Esto es sólo para probar que el proyecto puede ser contribuido por cualquier miembro del equipo desde cualquier estación de trabajo y el repositorio del proyecto siempre se actualizará de forma sincronizada. Estos son los pasos :-

 [root@Test1 ~]# cd ls 
anaconda-ks.cfg my-first-project
[root@Test1 ~]# cd my-first-project/
[root@Test1 my-first-project]# ls
README.md
[root@Test1 my-first-project]# touch myfile.txt

Como todo está hecho, vamos a confirmar nuestros cambios para que se sincronicen con el repositorio principal del proyecto. Estos son los pasos :-

 [root@Test1 my-first-project]# git add myfile.txt 
[root@Test1 my-first-project]# git commit -m "added new file"
[root@Test1 my-first-project]# git push -u origin master

Una vez que el comando anterior proceda, el proceso se mostrará como en el ejemplo de abajo :-

Genial! Como todo está hecho, volvamos al navegador y actualicemos la página. Verás que el nuevo archivo confirmado por el usuario shahril se muestra en la página principal del proyecto

También te podría gustar...