14 octubre, 2024
Qué es GitLab, qué le diferencia de sus competidores como GitHub
o Bitbucket y qué herramientas engloba, además de los repositorios
remotos Git, para gestionar los proyectos de desarrollo.

GitLab nació como un sistema de alojamiento de repositorios Git, es
decir, un hosting para proyectos gestionados por el sistema de versiones
Git. Sin embargo, alrededor de esta herramienta han surgido muchas
otras herramientas muy interesantes para programadores y equipos de
desarrollo, que envuelven todo el flujo del desarrollo y el despliegue
de aplicaciones, test, etc.

Sin duda, para dar una idea de lo que es GitLab, lo más rápido sería
compararlo con uno de sus competidores, GitHub, pues éste último es
especialmente conocido en el mundo del desarrollo de software. Todos más
o menos estamos familiarizados con lo que ofrece, la gestión de
repositorios, las issues, los pull request, GitHub Pages, etc. GitLab
sería algo muy similar a lo que encontramos en GitHub, aunque a veces
con otros nombres. Otras alternativas de programas o servicios para Git
como Bitbucket están muy por detrás en posibilidades.

Aunque GitHub es un mounstruo, en cuanto a número de repositorios y
funcionalidad, GitLab ha conseguido llegar aún más lejos, ofreciendo un
conjunto más amplio de servicios que harán las delicias no solo de
desarrolladores, sino también de devops.


Instalar en tu servidor o usarlo como servicio web

La principal diferencia entre GitLab y sus competidores es que GitLab
se ofrece como un software libre que puedes descargar e instalar en
cualquier servidor. Esta posibilidad permite usar GitLab para una
empresa, profesional u organización en sus propios servidores, sin
ningún coste adicional.

Nota:
Obviamente, si instalas tu propio GitLab para usarlo en tu propia
empresa, te obliga a mantener el servidor, configurarlo, actualizar el
software, etc. Trabajo que no deja de representar un gasto de tiempo, lo
que al final se traduce en dinero. Es el motivo por lo que muchas
empresas prefieren acabar pagando para disfrutar de GitLab como
servicio.

La otra alternativa es usar GitLab directamente de GitLab.com,
pagando por el servicio. Esto permite disponer de todo el poder de
GitLab y sus herramientas colindantes, sin invertir tiempo en
configuración, aprovechando sus ventajas desde el primer minuto. Además,
las versiones del servicio “en la nube” tienen muchas herramientas
adicionales, funcionalidades que superan con diferencia a la versión que
se ofrece para instalar como software libre.

Por último, GitLab también se ofrece sin coste para publicar
repositorios de software libre, igual que su competidor GitHub. En este
caso, aunque GitLab pueda disponer de algunos servicios extra que
justifiquen trabajar con la herramienta, lo cierto es que GitHub sigue
siendo el sitio preferido donde ubicar un proyecto, dado que diversos
sistemas de gestión de dependencias, como npm, Composer, etc., trabajan
directamente contra ellos.

Nota:
Para quien desee aprovechar las ventajas de GitLab en un proyecto
publicado en GitHub existe la posibilidad de hacer un espejo del
repositorio. GitLab, cada vez que el repo se actualiza en GitHub es
capaz de traerse los cambios. Los desarrolladores desde GitLab, con el
repositorio siempre actualizado, pueden realizar uso de los servicios
extra, como los procesos de integración continua o despliege continuo.

En resumen, si queremos usar GitLab gratis, para alojar en remoto un
repositorio Git en general, la mejor alternativa es que lo instalemos
gratuitamente en una de nuestras máquinas. Sin embargo, si queremos
ahorrarnos tiempo y no nos importa pagar un poco, la versión en la nube
está mucho más completa y nos permite olvidarnos del servicio y
concentrarnos en el desarrollo de nuestros programas.

Cómo usar GitLab

GitLab es una herramienta basada en Git, que usas de la misma manera
que cualquier otra herramienta similar. Generalmente usas Git a través
de la línea de comandos, o a través de programas de interfaz gráfica, o
del propio editor de código. Toda esa operativa que ya conoces y que
hemos explicado en el Manual de Git, no cambia.

Además del hosting remoto para repositorios GitLab ofrece una interfaz
web para controlar el repositorio y muchas otras herramientas. Ofrece
la posibilidad de examinar el código en cualquiera de sus versiones,
realizar acciones relacionadas con el sistema de repositorios como
mergear el código de versiones de proyecto o gestionar las “pull
request” (que en GitLab se llaman “merge request”), gestionar
problemática de tu software diversa, automatizar procesos como el
despliegue o la ejecución de pruebas del software, etc. Toda esta
operativa la realizas, o configuras, en GitLab por medio de una web.

Por tanto, para usar GitLab simplemente necesitas las mismas
herramientas que ya utilizas en tu día a día, el terminal o un programa
de interfaz gráfica para gestionar tu repositorio, así como el navegador
web para acceder a el ecosistema de herramientas disponible en el sitio
de GitLab. Por supuesto, todas estas herramientas las puedes usar desde
cualquier ordenador conectado a Internet, independientemente de su
sistema operativo.

Nota:
ya, si nos referimos a cómo usar nuestra propia instalación de GitLab,
y qué necesitamos para instalar el software libre en nuestros propios
servidores, la respuesta es que lo más normal es que instales GitLab en
un servidor Linux, ya que es su entorno natural. Generalmente instalar
GitLab es tan sencillo como instalar cualquier otro software en Linux,
solo que necesitarás configurar además una serie de programas
adicionales, que usa GitLab por debajo, para que el servicio funcione de
manera fina. Esta parte puede que no sea tan fácil para una persona que
no tenga conocimientos sólidos de administración de sistemas.

Funcionalidades de GitLab

En GitLab podemos gestionar principalmente proyectos, Grupos y
Sinppets. Los proyectos son los protagonistas del sistema, básicamente
repositorios de software gestionados por GitLab y todo el ecosistema
GitLab. Los grupos son básicamente empresas y usuarios. Los snippets por
su parte son como pedazos de código que puedes dejar para hacer
cualquier cosa.

Como decimos, dentro de los proyectos es donde se aglutinan la mayoría de las funcionalidades que vamos a resumir:

Overview:

Es un listado de todo el proyecto, los archivos, los README.md. Es
parecido a lo que vemos cuando accedemos a un proyecto con GitHub. Te da
el resumen del repositorio, archivos, commits, etc.

Luego tiene dos subsecciones: En Activity del proyecto te ofrece toda
la actividad, de una manera estadística. En Cycle Analytics además te
ofrece algo muy novedoso, no disponible en otras herramientas.
Básicamente informa el tiempo que se tarda en realizar una
funcionalidad, desde que tienes la idea hasta que se incorpora al
software, de modo que cualquier persona, incluso sin conocimientos de
programación, puede saber el tiempo que ocupó el hacer las tareas. Una
información muy valiosa que puede ayudar a futuro a estimar mejor el
tiempo de trabajo necesario para nuevas funcionalidades. Obviamente,
cuantas más issues tengas en el sistema, más datos tendrás para saber el
tiempo que necesitas para las próximas tareas.

Repository:

Dentro de la sección “Repository” tenemos varias opciones diversas que afectan al repositorio del proyecto.

Tenemos “Files”, donde se puede navegar por los directorios y
archivos, cuyo código podemos ver, e incluso editar los ficheros. Está
disponible una visualización por ramas y dispone de utilidades diversas
para poder hacer cosas relacionadas con el repositorio remoto, ahorrando
la necesidad de lanzar comandos. Tiene un buscador de archivos muy
potente.

En “Commits” encontramos un listado de todos los commits realizados
contra el repositorio, junto con datos específicos de cada uno de ellos.

Las ramas “Branches” sirven para ver las ramas que tenemos en el repositorio.

La siguiente sección, “Tags”, es importante también, pues es el
mecanismo disponible en Git para definir puntos del estado del código,
correspondientes a cada release.

Además esta sección tiene otras áreas también importantes, que os
dejamos para vuestra propia investigación. Especialmente sería
destacable la parte de “Locked files”, disponible solo en GitLab como
servicio, que es algo que no ofrece el propio sistema de control de
versiones Git pero que han implementado dentro de GitLab, que permite
bloquear un fichero para que solo ciertas personas lo puedan editar.

Issues:

Este es otra de las grandes utilidades de GitLab, que permite definir
cualquier problema que se detecta en el software y darle seguimiento.
Seguro que las conocemos porque es una de las partes fundamentales de
GitHub y habremos navegado por ellas en decenas de ocasiones.

Básicamente nos permite ver las issues generadas en un proyecto,
mantener discusiones sobre ellas, y controlar los flujos de trabajo para
su resolución, permitiendo definir las personas que deben resolverla,
el tiempo estimado y el usado, la fecha límite, el peso de las tareas,
etc.

En GitLab han publicado otra interesante innovación que es un tablero
de issues (Issue Boards), que permite visualizar las tareas, de una
manera similar a los boards de Trello. Como gestores somos capaces de
definir los tableros y las etiquetas. GitLab, por medio de la gestión de
las Issues, es capaz actualizar el estado de las tareas, permitiendo
visualizar su evolución por medio de los tableros.

Otra cosa muy interesante es el “Service desk”, que te ofrece un email
que lo puedes proporcionar al cliente. Sin que el cliente se registre
en GitLab, ni tenga acceso al proyecto, puede enviar mensajes a ese
email, adjuntando texto, imágenes y archivos. GitLab, al recibir el
correo, da de alta automáticamente una issue con ese contenido.

Merge Request:

Son como las Pull Request de GitHub. Te permiten controlar todas las
solicitudes de combinación o unión de código de distintas ramas o forks.
Es muy importante que los merges se resuelvan mediante la interfaz
gráfica, ya que nos ofrece muchas posibilidades interesantes, como
automatización de tests, la posibilidad de revisión de los cambios por
parte de componentes del equipo, implementar diversas políticas de
control sobre el código del proyecto, etc.

CI/CD:

Es una de las maravillas que dispone GitLab, una herramienta sencilla y
muy útil para los procesos de integración continua y despliegue
continuo. Existen muchas herramientas que se pueden integrar para
automatizar los procesos y llegar a crear flujos de trabajo
completamente automatizados. De modo que se lancen los test y si todo va
bien se puedan realizar una serie de tareas definida, que pueden llegar
a producir el despliegue automático de las aplicaciones.

Solo disponer de esta sección es suficiente motivo para pasarse a
GitLab. No llega la complejidad de herramientas específicas como
Jenkins, pero resuelve de manera muy potente problemas similares.

GitLab es mucho más

Gitlab no se queda aquí, existen decenas de herramientas para hacer un
montón de procesos, plugins, integraciones con diversos servicios
útiles en el día a día de los equipos de desarrollo, etc.

Tenemos un vídeo en el que explicamos con mucho más detalle todas las
posibilidades de GitLab y lo comparamos con otros sistemas similares.

Puedes dar una vuelta por GitLab y examinar las opciones y
posibilidades. Al ritmo que van, seguro que cuando entres habrán sacado
novedades representativas. Pero si quieres que te guiemos en esa visita,
puedes consultar el siguiente vídeo. También encontrarás en este vídeo
un resumen de lo que se denomina el “GitLab Flow“,
un conjunto de prácticas que son aconsejables para mantener un flujo
adecuado en todo lo que sería el desarrollo de software, que nos asegure
la calidad y facilidad de mantenimiento y trabajo en equipo.

Fuente: https://desarrolloweb.com/articulos/introduccion-gitlab.html

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *