GitLab para principiantes: por qué es necesario en un mundo donde existe GitHub
Introducción a GitLab: para qué se utiliza, cómo utilizarlo, qué comandos tiene y cómo crear rápidamente tu propio proyecto. Y, por supuesto, compararlo en detalle con su principal competidor, GitHub.
¿Qué es GitLab y para qué se utiliza?
GitLab es un servicio para almacenar y gestionar repositorios de Git. Al igual que su competidor más conocido, GitHub, facilita en gran medida el trabajo colaborativo de los desarrolladores, permitiéndoles escribir y editar código, así como probarlo e implementarlo sin problemas adicionales.
Se puede trabajar con GitLab de diferentes maneras: a través de la línea de comandos, Web IDE (un IDE integrado para trabajar en el navegador) o a través de clientes de Git de terceros. Debo decir que no hay una forma correcta: cada uno trabaja como le resulta más conveniente, según las tareas y los dispositivos disponibles.
GitLab vs GitHub
Para empezar, ambos servicios hacen lo esencial de la misma manera. La diferencia principal está en el modelo de desarrollo. GitLab publica su edición Community como código abierto y ofrece además una edición comercial, y permite instalar la plataforma en tu propio servidor (opción self-managed). GitHub es una plataforma propietaria, aunque aloja millones de proyectos de código abierto y recibe contribuciones de la comunidad en ellos. Otra diferencia práctica es que GitLab integra CI/CD y herramientas de DevOps en la propia plataforma, mientras que GitHub destaca por su comunidad, GitHub Actions y su Marketplace.
Desde 2018, Microsoft es el propietario de GitHub, lo cual fue percibido de manera ambigua por la comunidad, dada la reputación de este gigante. Sin embargo, GitHub es más popular que GitLab: no ha tenido competidores desde 2008. Pocos conocían a GitLab en ese momento: apareció solo en 2011 y no comenzó a desarrollarse activamente de inmediato.
¿Qué elegir para un desarrollador principiante?
Ambos servicios funcionan bien para la mayoría de las tareas de desarrollo. Tanto GitHub como GitLab ofrecen repositorios privados gratuitos, así que el código privado ya no es un criterio para elegir. En el plan gratuito de GitHub los repositorios privados son ilimitados y los colaboradores también, con un conjunto limitado de funciones. En el plan gratuito de GitLab.com, los grupos privados admiten hasta 5 usuarios y se incluyen 400 minutos de CI/CD al mes. Estos límites cambian con el tiempo, por eso conviene revisar las páginas de precios de GitHub y GitLab antes de decidir.
La diferencia práctica está en el ecosistema.
- GitLab es una buena opción si te interesa un DevOps integrado en una sola plataforma o si necesitas instalar la plataforma en tu propio servidor. Por eso es habitual en equipos y empresas que prefieren controlar dónde vive su código.
- GitHub es ideal para programadores que desean compartir su código con la comunidad mientras trabajan en diferentes proyectos de código abierto. También es elegido por aquellos que desean construir un portafolio de autoridad, ya que fomenta las páginas personales (incluso tiene logros correspondientes).
Ambos proyectos son adecuados para el desarrollo web, ya que ambos tienen sus propias Pages. Aquí tienes los enlaces para GitLab y para GitHub.
Características clave de GitLab
- Compatibilidad. GitLab es compatible con plataformas y servicios populares como Docker, Kubernetes, Jira, servicios de Google, y también tiene herramientas para integrarse con casi cualquier aplicación. Esto significa que GitLab se puede integrar fácilmente en un entorno corporativo.
- Etiquetas y documentación. Tiene un sistema de etiquetas conveniente que facilita el proceso de desarrollo al permitir clasificar errores o solicitudes. También se puede utilizar para rastrear cambios realizados en proyectos propios o ajenos. El sistema de documentación en GitLab está estructurado de tal manera que cada proyecto se documenta en un repositorio separado.
- Adaptabilidad — Configuración de acceso flexible. El acceso a los repositorios se configura según el grupo al que pertenezca el usuario. Las ramas privadas se crean utilizando un módulo incorporado que permite configurar permisos para cada usuario. Y gracias a su propio sistema de protección contra amenazas cibernéticas, GitLab ofrece autenticación segura.
- Accesibilidad — Importación y exportación de datos sencilla. El servicio permite importar fácilmente grandes volúmenes de datos de diferentes fuentes. Esto se logra mediante la integración con soluciones populares como Jira. También hay herramientas disponibles para sincronizar código.
- Integración con Kubernetes. GitLab se integra con Kubernetes (por ejemplo, con el agente de GitLab para Kubernetes y Auto DevOps), lo que resulta conveniente para quienes desarrollan y prueban aplicaciones en contenedores. No es obligatorio, y puedes desplegar tu aplicación donde prefieras.
- Espacio en la nube con plan gratuito. GitLab.com ofrece alojamiento de proyectos en la nube con un plan gratuito, que permite crear repositorios públicos y privados. El plan gratuito tiene límites de usuarios, minutos de CI/CD y almacenamiento (consulta la página de precios).
- Herramientas de análisis y planificación. Las herramientas de análisis de GitLab permiten realizar un seguimiento del tiempo dedicado a cada tarea, planificar el trabajo futuro y monitorear la actividad de cada desarrollador. Y a aquellos que utilizan la metodología de desarrollo de sprint les gustará la herramienta Burndown Chart.
- Actualizaciones regulares. GitLab se actualiza mensualmente, prestando especial atención a la facilidad de uso y la seguridad.
GitLab Runner
GitLab Runner es un agente que ejecuta los trabajos (jobs) definidos en los archivos de tu repositorio. En GitLab.com puedes usar los runners compartidos, que en el plan gratuito requieren verificar una tarjeta, o instalar tu propio runner si planeas configurar la integración y entrega continuas (CI/CD) para tu proyecto. Docker es uno de los ejecutores posibles, una plataforma de contenedores que se utiliza para crear imágenes y desplegar contenedores, pero no es un requisito.
GitLab CI/CD
CI/CD es una tecnología de integración y entrega continua. CI/CD ayuda a automatizar y escalar proyectos, lo que reduce significativamente el tiempo de desarrollo. GitLab CI/CD es una herramienta que convierte GitLab en una plataforma completa de DevOps con todas las funciones necesarias.
GitLab CI/CD permite gestionar configuraciones a través de archivos YAML, ejecutar de forma estable en diferentes entornos, compilar y ejecutar en diferentes sistemas operativos. Además, esta herramienta permite la integración con clústeres de Kubernetes y trabajar con tareas en entornos Docker.
A continuación, compararemos GitLab CI/CD con una herramienta similar de GitHub, GitHub Actions.
GitLab CI/CD vs GitHub Actions
Para que los principiantes no tengan dificultades al cambiar de GitHub Actions a GitLab CI/CD, analicemos las principales diferencias entre estas herramientas.
- En CI/CD, los scripts en las tareas se ejecutan utilizando la clave script, mientras que en Actions se utiliza la clave run.
- Las tareas en diferentes plataformas en CI/CD se ejecutan utilizando la clave tags, mientras que en Actions se utiliza runs-on.
- Ambas herramientas pueden trabajar con tareas en imágenes Docker y especificar contenedores adicionales. En CI/CD se utiliza la clave image, mientras que en Actions se utiliza container.
- Para ejecutar tareas condicionales, CI/CD utiliza la clave rules, mientras que Actions utiliza if.
- Para ordenar tareas con dependencias, CI/CD agrupa los trabajos en etapas con la clave stages (la etapa siguiente empieza cuando termina la anterior), mientras que Actions no tiene etapas y recrea ese orden con la clave needs. En GitLab también existe needs para definir dependencias entre trabajos sin esperar a que termine toda la etapa.
Puedes ver ejemplos de código para cada servicio y conocer algunas diferencias menos significativas en la documentación oficial de GitHub sobre este tema. Aunque las instrucciones se titulan "Migración de GitLab CI/CD a GitHub Actions", también son útiles para migrar de Actions a CI/CD.
Un poco de práctica con tu primer proyecto en GitLab
Para crear un proyecto en GitLab, debes seguir algunos pasos sencillos:
- Crear una cuenta y un grupo de trabajo
- Crear un repositorio
- Subir archivos
- Agregar claves de autenticación.
Ahora, veamos cada uno de estos pasos en detalle.
Crear una cuenta y un grupo de trabajo en GitLab
Después de hacer clic en el botón Login en el sitio web del proyecto, aparecerá un botón de registro. Al hacer clic en él, se abrirá un formulario en el que deberás completar algunos campos estándar y luego confirmar el registro desde el correo electrónico que el servicio enviará a la dirección de correo electrónico proporcionada.
Una vez que hayas creado tu cuenta con éxito, puedes comenzar a configurar GitLab. Para ello, ve a tu perfil y completa los campos necesarios, incluido el nombre del grupo. También se te pedirá que indiques si trabajarás solo o en equipo.
Crear un repositorio en GitLab
Después de crear un grupo, aparecerá un ícono con un signo más en la barra superior. Haz clic en el menú desplegable junto a él y selecciona New project o New project/repository. A continuación, elige el nivel de privacidad. Si no quieres que tu código sea visible para otros usuarios, selecciona Private en el menú desplegable. Ahora puedes comenzar a cargar archivos en el repositorio Git que se creará junto con el proyecto.
Subir archivos a GitLab
Los archivos se pueden cargar de tres formas:
- A través de la interfaz web haciendo clic en el botón Upload File
- A través de la línea de comandos utilizando el programa git
- A través de un cliente de Git de terceros, como Sublime Merge o Tower.
También puedes utilizar el Web IDE, diseñado para trabajar en el navegador.
Agregar claves de autenticación
Para generar una clave, debes ingresar en la terminal el comando ssh-keygen -t ed25519 -C "tu_correo@ejemplo.com" (Ed25519 es el tipo de clave recomendado actualmente). Puedes dejar el directorio donde se almacenarán las claves con la configuración predeterminada. Luego, el servicio te pedirá que ingreses una contraseña y luego copies la clave del archivo (que puedes encontrar por su extensión .pub) y la pegues en el sitio web de GitLab. Haz clic en SSH-keys en el menú de la izquierda.
Asistentes de IA en GitLab y GitHub
Ambas plataformas incluyen asistentes de IA para programar. GitHub ofrece GitHub Copilot, que sugiere código en el editor y ayuda en la revisión de cambios. GitLab ofrece GitLab Duo, que en GitLab.com se contrata como complemento de pago mediante créditos y no forma parte del plan gratuito. No los necesitas para empezar. Si los usas, lee y entiende cada sugerencia antes de guardarla en tu repositorio, porque el código generado puede tener errores. Los detalles de cada servicio cambian con frecuencia, así que revisa la documentación oficial.
Trabajo posterior
La configuración inicial de GitLab está completa. Ahora puedes comenzar a trabajar con las ramas del proyecto, agregar nuevos usuarios y realizar muchas otras acciones (como enviar informes de errores). Aquí están algunas de las funciones útiles:
-
Para crear una nueva rama, ve al repositorio, abre el menú con el signo más y selecciona New Branch. Aquellos que usen clientes de Git pueden hacer lo mismo con el comando git checkout o utilizando una interfaz gráfica.
-
Para fusionar ramas del proyecto en una sola (este proceso se llama "merging"), haz clic en el botón Create merge request y completa los campos necesarios. Deberás escribir un comentario explicativo, indicar el autor de la solicitud, el revisor y agregar etiquetas, y luego confirmar la fusión.
-
Agregar nuevos usuarios se realiza a través del menú izquierdo. Selecciona Project information y luego Members. En el formulario que se abre, además del nombre de usuario y la dirección de correo electrónico, debes indicar el rol del usuario y la fecha en la que expirarán sus permisos y será excluido del proyecto. Siempre puedes extender este tiempo.
-
Para notificar a tus colegas y usuarios sobre problemas, como errores, selecciona Issues en el menú izquierdo. Luego, haz clic en New Issue y se abrirá un formulario en el que deberás indicar el título y agregar una descripción del problema, así como asignar a alguien como responsable Assignee`.