Guía para principiantes y para quienes no les gustó GitHub.

GitLab es un servicio para almacenar código, gestionar versiones y desarrollar software colaborativamente. En este artículo, examinaremos a detalle sus términos principales, comprenderemos para qué se utiliza y practicaremos en tu computadora.

¿Qué es GitLab?

GitLab es una plataforma web para gestionar proyectos y repositorios de código, basada en el popular sistema de control de versiones Git. Para entender sus capacidades y cómo ayuda a los desarrolladores, comencemos analizando los conceptos básicos.

El sistema de control de versiones Git se utiliza para almacenar versiones intermedias del código. Por ejemplo, cuando un desarrollador realiza cambios o añade nuevas partes, lo hace en Git mediante commits.

Imagen de primer plano de una pantalla de computadora que muestra la página web de GitLab en un navegador web. La URL about.gitlab.com es visible en la barra de direcciones.
Descubre GitLab: Control de versiones, CI/CD y mucho más en una sola plataforma.

También puedes leer: ¿Qué es Git?: explicación con diagramas

Un commit es un paquete de cambios que almacena información sobre los archivos de código añadidos, editados o eliminados. Gracias a esto, el código principal del proyecto siempre se puede restaurar a un estado funcional, recuperando versiones anteriores.

Repositorio: El lugar donde se almacena el código y los archivos adicionales necesarios para su funcionamiento o el diseño de las ventanas de la aplicación: iconos, imágenes, etc. Un repositorio es similar a una carpeta normal en tu computadora, pero con funciones adicionales. Por ejemplo, cada archivo que almacena tiene un historial de cambios.

Ramas (branch): Son líneas de desarrollo paralelas que existen independientemente unas de otras. En los sistemas Git, los desarrolladores escriben código en ramas separadas, evitando así conflictos entre los cambios realizados.

Cuando un desarrollador backend, frontend u otro especialista termina de trabajar en el código de su rama, crea una solicitud de fusión (merge request) con la rama principal (master o main), donde se encuentra el código principal del programa, para transferir sus cambios.

La fusión es el proceso de combinar dos o más ramas en una sola.

Otros desarrolladores pueden evaluar los cambios y comentarlos. Después de las pruebas y la aprobación del superior o líder de equipo, se ejecuta la solicitud de fusión. En GitLab, puedes configurar el proceso de desarrollo para que los cambios se integren automáticamente en la rama principal si se cumplen ciertas condiciones, por ejemplo, después de superar las pruebas correctamente.

¿Para qué sirve GitLab?

GitLab ayuda a los equipos a desarrollar software colaborativamente: planificar procesos, probar código, compilar proyectos y publicar versiones.

Planificación de la desarrollo:

En GitLab, puedes crear tareas y agruparlas en proyectos, asignando responsables y plazos. En este aspecto, se parece a Jira, «Bitrix24» y otras aplicaciones para gestores.

Con su ayuda, el líder de equipo o el desarrollador senior pueden verificar la velocidad a la que el equipo realiza las tareas. Esto es útil para planificar sprints, cuando se necesita determinar el tiempo necesario para desarrollar una determinada función en la aplicación.

Escritura de código

Los participantes pueden colaborar en un proyecto en GitLab gracias al sistema de repositorios y ramas. Los desarrolladores escriben código en paralelo sin preocuparse por la compatibilidad de las partes nuevas o modificadas del programa.

Después de escribir o actualizar una parte del código, el desarrollador envía una solicitud de fusión de su rama al repositorio principal del proyecto. Un desarrollador senior o el líder de equipo lo revisan y aceptan la solicitud de fusión o envían el código para su revisión, dejando comentarios.

Prueba de código

GitLab automatiza los procesos de prueba al realizar cualquier cambio en el código. Por ejemplo, cuando se añade una nueva función o se modifica una antigua, GitLab la envía al repositorio central, donde se ejecutan automáticamente las pruebas.

Normalmente, este proceso funciona de la siguiente manera:

  1. El sistema verifica el código en busca de errores de compilación.
  2. A continuación, se ejecutan las pruebas escritas por los desarrolladores: pruebas modulares para verificar partes individuales del código, pruebas de integración que verifican el funcionamiento del nuevo código con el antiguo, y otras. El objetivo de todas las pruebas es asegurarse de que los nuevos cambios no rompen la funcionalidad existente de la aplicación.
  3. El desarrollador recibe un informe sobre las pruebas superadas y, si es necesario, revisa el código. Cuando se realizan todos los cambios necesarios, GitLab los integra en el repositorio principal del proyecto.

Compilación del proyecto

GitLab tiene repositorios de contenedores: paquetes ejecutables autónomos que incluyen todo lo necesario para que la aplicación funcione: bibliotecas, archivos de configuración, etc. Gracias a esto, se ejecutan en cualquier sistema, independientemente de su entorno. Los contenedores se crean, implementan y gestionan en la plataforma Docker.

En el repositorio del proyecto, puedes almacenar diferentes versiones de los contenedores para tu aplicación y configurar su actualización automática cuando cambie el código.

Versión de la aplicación

Las herramientas integradas de integración continua (CI) e implementación continua (CD) automatizan todo el proceso, desde la compilación del código hasta la carga de la aplicación o su nueva versión en el entorno de ejecución: en un servidor web, un dispositivo móvil u otra plataforma.

El desarrollador puede definir el tipo de entorno, por ejemplo, seleccionando un servidor de producción, e implementar automáticamente la aplicación en él después de las pruebas.

GitLab incluye varias opciones de implementación listas para usar. Se seleccionan en función de las tareas:

  • Implementación azul-verde (blue-green deployment): Se utilizan dos entornos: uno de producción («azul») y otro de prueba («verde») para verificar el funcionamiento de la aplicación después de realizar los cambios. Cuando se verifica la nueva versión del código, se convierte en «verde».
  • Implementación canaria (canary deployment): Primero, la nueva versión de la aplicación se implementa para un pequeño grupo de usuarios. De esta manera, se prueba en condiciones reales con una audiencia limitada y luego se convierte en la principal para todos.
  • Implementación progresiva (rolling deployment): La aplicación se sustituye por una nueva versión sin interrumpir su funcionamiento. Si el equipo tiene varios servidores, actualiza el código en uno de ellos, luego en el siguiente, y así sucesivamente.

Estas estrategias reducen los riesgos que surgen al instalar nuevas versiones de la aplicación, por ejemplo, los relacionados con su incompatibilidad con dispositivos de usuario específicos. En el caso de una implementación azul-verde o canaria, puedes volver rápidamente a la versión estable de la aplicación.

Y esto no es todo. GitLab tiene plantillas CI/CD listas para usar. Son conjuntos de instrucciones o configuraciones para la compilación, prueba e implementación automatizadas del código. En lugar de crear una configuración desde cero cada vez, los desarrolladores pueden utilizar una plantilla lista para usar y configurar sus parámetros para su aplicación.

Monitoreo

GitLab recopila varias métricas del proceso CI/CD y el rendimiento de la aplicación: tiempo de compilación, porcentaje de pruebas exitosas, número de errores detectados y otros. Si no son suficientes, puedes integrar herramientas de monitoreo externas, como Prometheus o Grafana.

¿Cómo GitLab facilita el desarrollo en equipo?

GitLab no solo proporciona a los desarrolladores un repositorio de código con un sistema de control de versiones Git integrado, sino que también facilita el trabajo con funciones adicionales.

  • Configuraciones flexibles de acceso a los repositorios de código: Un proyecto puede tener varias decenas de especialistas. GitLab permite configurar sus derechos de acceso a los repositorios: determinar quién puede leer, editar o descargar el código. Por ejemplo, los usuarios con acceso de invitado al repositorio pueden verlo, pero no realizar cambios. Esto aumenta la seguridad del proyecto y facilita la gestión del desarrollo.

Puedes configurar el acceso a ramas individuales y crear grupos de usuarios que participan en varios proyectos simultáneamente.

  • Herramientas de gestión de CI/CD: La integración continua (CI) y la implementación continua (CD) son un enfoque en el desarrollo de software que automatiza los procesos de compilación, prueba e implementación de la aplicación.

La integración continua (CI) es una práctica en la que el código se fusiona regularmente, a menudo varias veces al día, en un repositorio común con una compilación automatizada del proyecto. Gracias a esto, puedes identificar rápidamente errores en el código y problemas de compatibilidad con la base de código existente.

La implementación continua (CD) es una continuación de la CI. Cuando el código supera las pruebas después de la fusión, el sistema implementa automáticamente los cambios en el entorno de producción. Esto significa que la nueva versión de la aplicación estará inmediatamente disponible para los clientes y usuarios.

  • Base de conocimientos: GitLab tiene herramientas para crear páginas wiki con la documentación del proyecto. Admite varios formatos: texto, imágenes, videos y tablas.

Gracias a la base de conocimientos sobre el proyecto, los nuevos empleados pueden entender rápidamente cómo configurar el entorno de trabajo, qué versiones de las bibliotecas utilizar, etc.

  • Proyectos y tareas: GitLab implementa un sistema de gestión del desarrollo. En él, puedes crear tareas para los miembros del equipo, seleccionando a los responsables y estableciendo plazos, y describiendo los resultados del trabajo.
  • Integración con otras herramientas: GitLab admite la integración con plataformas y servicios populares utilizados en el desarrollo: Docker, Kubernetes, Jira, Slack y otros.

En general, GitLab es un lugar centralizado no solo para almacenar código, sino también para gestionar proyectos, mantener una base de conocimientos y automatizar los procesos de desarrollo.

¿En qué se diferencia GitLab de GitHub?

GitLab y GitHub son dos servicios web populares para alojar proyectos utilizando el sistema de control de versiones Git. Exteriormente son muy similares, pero existen algunas diferencias:

  • GitHub es un servicio en la nube que pertenece a Microsoft, donde puedes almacenar y gestionar tus proyectos. A diferencia de él, GitLab se puede implementar en tu propio servidor.
  • En GitHub, para trabajar con CI/CD, deberás utilizar una herramienta adicional: GitHub Actions. GitLab es una solución completamente integrada con herramientas CI/CD integradas.
  • En la versión gratuita de GitHub, en los repositorios privados se utilizan dos niveles de acceso: propietario (owner) y colaborador (collaborator). GitLab no tiene estas limitaciones. El número de usuarios con diferentes niveles de acceso no está limitado.

En general, tanto GitLab como GitHub ofrecen un conjunto similar de funciones. La diferencia radica en que en GitHub algunas de ellas están disponibles a través de integraciones con aplicaciones de terceros, mientras que en GitLab están disponibles de forma predeterminada.

Cómo trabajar con GitLab

Trabajar con GitLab consta de varios pasos: crear una cuenta y un repositorio, añadir usuarios y ramas, cargar archivos del proyecto, realizar cambios en el código y fusionar ramas.

Cómo crear una cuenta y un proyecto

Si aún no tienes una cuenta en GitLab, comienza creando una cuenta en el sitio web oficial y completa el formulario de registro:

  • Nombre de usuario: un nombre de usuario único.
  • Correo electrónico: correo electrónico personal o profesional.
  • Contraseña: una contraseña segura.

Después del registro, confirma tu cuenta a través del enlace del correo electrónico enviado a tu correo electrónico. Ahora tu cuenta en GitLab está creada y lista para usar.

Cómo crear un repositorio

En la página principal o en el panel lateral, haz clic en el icono «+» y selecciona «New project/repository«:

Captura de pantalla de la interfaz de GitLab mostrando la sección "Projects". El menú lateral muestra la opción "New project/repository", y la sección principal indica que el usuario aún no ha contribuido a ningún proyecto.
Comienza a gestionar tus proyectos de software con GitLab.

Puedes crear un proyecto en GitLab de varias maneras: desde cero, basándote en una plantilla, importándolo de otro servicio o computadora o utilizando CI/CD. Comenzaremos con un proyecto vacío, así que selecciona «Crear proyecto en blanco» y completa la información:

  • Project name: el nombre del proyecto.
  • Project URL se determina automáticamente en función del Project name.
  • Visibility Level: Público (para todos) o Privado (solo para ti y los colaboradores seleccionados del proyecto).
  • Initialize repository with a README: creará automáticamente un README en tu repositorio. Este es un archivo de texto que contiene información sobre el proyecto: descripción de sus tareas, principios de funcionamiento, instrucciones de instalación y configuración.
Captura de pantalla del formulario de creación de un nuevo proyecto en GitLab.
Aprende a crear proyectos en GitLab y comienza a colaborar.

Después de completar los datos, haz clic en el botón «Create project«. Ahora el repositorio está listo para usarse:

Captura de pantalla de la vista de un proyecto recién creado en GitLab llamado "MiPrimerProyecto"
Visualiza un proyecto recién creado en GitLab y su configuración inicial.

Cómo añadir claves SSH

Las claves SSH se utilizan para autenticar tu computadora en un servidor remoto, en este caso, en el servidor GitLab. Gracias a esto, puedes confirmar tu identidad sin introducir una contraseña.

Para crear una clave, abre un terminal o una línea de comandos e introduce el comando para generar claves ssh-keygen. Si deseas generarlas en una carpeta específica, introduce la ruta a ella.

Captura de pantalla de una terminal en macOS mostrando el proceso de generación de un par de claves SSH usando el comando ssh-keygen.
Aprende a generar claves SSH en tu Mac para acceder a repositorios remotos de forma segura.

Al generar la clave, puedes especificar una contraseña, pero no es obligatorio.

Ahora, en la carpeta especificada, aparecerán dos archivos con claves: una privada y una pública. Para crear claves en GitLab, necesitas la segunda: un archivo con la extensión .pub. Ábrelo en un editor de texto y copia el contenido al portapapeles.

Ve a tu repositorio en el sitio web de GitLab, haz clic en el botón «Add SSH key» (o si ya tienes una, ve aquí, en Add new key):

Captura de pantalla del formulario de GitLab para agregar una clave SSH.
Asegura el acceso a tus repositorios GitLab con claves SSH.

Pega la clave copiada en el campo «Key» y dale un nombre significativo, por ejemplo, que coincida con el nombre del repositorio.

Cómo cargar archivos

Puedes cargar los archivos existentes del proyecto en tu repositorio o crear nuevos. Para ello, haz clic en «+» y selecciona «New file» o «Upload file».

Captura de pantalla de la interfaz de GitLab mostrando un menú desplegable con opciones para agregar nuevos archivos a un proyecto.
Añade archivos a tu proyecto en GitLab de forma sencilla.

Ahora puedes editar el código directamente en la interfaz web. Para ello, haz clic en el botón «Edit«:

Captura de pantalla que muestra la interfaz de GitLab con un archivo suma_dos_numeros.py seleccionado.
Edita tus archivos de código directamente desde la interfaz web de GitLab
Captura de pantalla del IDE online de GitLab mostrando un archivo Python llamado suma_dos_numeros.py
Ejemplo sencillo de código Python para sumar dos números, editado en el IDE online de GitLab.

Puedes clonar el repositorio en tu computadora y trabajar en un editor o IDE cómodo. Más detalles sobre esto se describirán más adelante.

Cómo trabajar con ramas

Cada rama representa una dirección de trabajo independiente. En ellas, los desarrolladores crean nuevas funciones, corrigen errores, prueban cambios y realizan experimentos que no afectan al proyecto principal ni a otras ramas. Después de terminar el trabajo en una rama, se fusiona con la rama principal.

De forma predeterminada, un nuevo repositorio tiene una rama: main. Normalmente, no se trabaja directamente con el código en main, sino que se realizan cambios mediante la fusión con otras ramas.

Para crear una nueva rama, haz clic en «+» y selecciona «New branch» en el menú.

Menú desplegable en la interfaz de GitLab mostrando opciones para añadir un nuevo archivo, subir un archivo, crear un nuevo directorio, una nueva rama ("New branch") o una nueva etiqueta ("New tag") a un repositorio.
Aprende a crear nuevas ramas en tu repositorio de GitLab fácilmente. Esta imagen muestra el menú para crear una nueva rama.

La nueva rama contiene copias de todos los archivos del proyecto. Ahora puedes realizar cambios en el código, añadir nuevas funciones al software, corregir errores, y esto no afectará al código principal.

Fusión de ramas

Para transferir el nuevo código a la rama principal, haz clic en el botón «Commit changes» (Confirmar cambios) en la parte inferior de la página.

Ventana de GitLab para confirmar cambios ("Commit changes").
El último paso antes de guardar tus cambios en GitLab. Aquí se escribe el mensaje del commit y se selecciona la rama.

Y luego haz clic en el botón «Create merge request«, creando una solicitud de fusión.

Interfaz de GitLab mostrando las opciones para crear una solicitud de fusión ("Merge Request").
Integra tus cambios en la rama principal con una solicitud de fusión.

En la página que se abre, introduce el nombre de la fusión, descríbela, indicando qué has cambiado, y selecciona a los responsables de la verificación. Ahora haz clic en el botón «Crear solicitud de fusión» en la parte inferior de la página.

Formulario de GitLab para crear una nueva solicitud de fusión ("New merge request").
Crea solicitudes de fusión profesionales y claras en GitLab.

Para aceptar los cambios en la siguiente página, haz clic en los botones «Approve» y «Merge»:


23:37





Aquí tienes el texto SEO para la imagen que muestra la aprobación y fusión de un commit y una rama en GitLab:

Texto alternativo (alt text): Captura de pantalla de GitLab mostrando una solicitud de fusión ("Merge Request") ya fusionada ("Merged").
¡Cambios integrados correctamente! Esta imagen muestra el resultado exitoso de una fusión de rama en GitLab.

En la práctica, es probable que otra persona, por ejemplo, tu líder de equipo, sea quien apruebe y realice la fusión.

Cuando se realiza la fusión de las ramas, la información sobre ella aparecerá en la descripción:

Cómo añadir usuarios a proyectos

Puedes añadir participantes a tu proyecto con diferentes niveles de acceso. Para ello, selecciona «Members» en el panel izquierdo.

Panel de administración de miembros de un proyecto en GitLab. Muestra una lista de miembros con sus roles, fechas de expiración y actividad reciente.
Administra eficientemente los miembros de tu proyecto en GitLab. Controla permisos y fechas de expiración.

En la nueva ventana, haz clic en «Invite member«, introduce el nombre de usuario o la dirección de correo electrónico del usuario, selecciona su rol y haz clic en el botón «Invite«.

Cómo clonar un repositorio y trabajar con commits

La mayor parte del tiempo escribirás código localmente, en tu editor o IDE favorito, y no en el panel de GitLab. Para ello, deberás clonar el repositorio; después de terminar el trabajo, también podrás fusionarlo con el repositorio principal.

Cómo trabajar localmente:

  1. Copia la URL del repositorio. En tu computadora, abre una línea de comandos o un terminal y ejecuta el comando git clone <URL del repositorio> para descargar el repositorio a tu máquina local.
  2. En el clon creado del repositorio, realiza cambios en los archivos del proyecto o añade nuevos.
  3. Después de terminar de trabajar con el código, abre una línea de comandos o un terminal en la carpeta de tu proyecto. Ejecuta el comando git add . para añadir todos los cambios al área de preparación. El área de preparación (staging area) en Git es un lugar donde se recopilan los cambios antes del commit. Si deseas añadir solo archivos específicos, utiliza el comando git add <nombre_del_archivo>.
  4. Para ver qué archivos están en el área de preparación y qué cambios están listos para el commit, utiliza el comando git status.
  5. Para crear un commit, escribe el comando git commit -m "Tu comentario sobre los cambios". Entre comillas, puedes escribir un comentario corto, por ejemplo: «Se han añadido nuevas funciones» o «Se han corregido errores».
  6. Para enviar el commit al servidor, utiliza el comando git push.

Cómo eliminar un proyecto

Un administrador del proyecto o un usuario con los derechos de acceso correspondientes puede eliminar un proyecto en GitLab.

Inicia sesión en GitLab y ve al proyecto que deseas eliminar. Abre la sección «Settings» y selecciona «General». Desplázate hacia abajo hasta la sección «Advanced» y ábrela. En la parte inferior, verás el botón «Delete project». Haz clic en él y confirma que realmente deseas eliminar el proyecto.

Captura de pantalla de la configuración general de un proyecto en GitLab, mostrando la opción "Delete project".
Elimina de forma segura tus proyectos en GitLab. Recuerda que la eliminación es permanente tras 7 días.

Listo. El proyecto se ha eliminado de forma irreversible.

En resumen

Repasemos lo que hemos aprendido hoy:

  • GitLab es una herramienta cómoda y útil para equipos que se dedican al desarrollo de software. Permite trabajar en equipo en el código y guardar sus versiones intermedias, a las que se puede acceder si es necesario.
  • Los desarrolladores que utilizan GitLab escriben código en ramas o clones de repositorios separados en sus computadoras. Después de añadir, modificar o eliminar código, crean un commit que contiene todos los cambios que se integrarán en el repositorio principal. Un superior o líder de equipo los revisa y los acepta o los envía para su revisión.
  • GitLab incluye herramientas integradas de integración continua (CI) e implementación continua (CD), que automatizan los procesos de prueba, compilación de la aplicación e implementación.
  • GitLab se diferencia de GitHub por su herramienta integrada para CI/CD, la posibilidad de implementar el servicio en tu propio servidor y la ausencia de limitaciones en el número de grupos de usuarios con diferentes niveles de acceso.

Categorizado en:

Fundamentos,