Descubriendo GitLab

Hoy en día, muchos usuarios utilizan Git para llevar a cabo el control de versiones y GitHub para subir el software desarrollado. Estaba claro que en la FIB necesitábamos un servidor para que los estudiantes y profesores pudiesen usar una herramienta tan potente como git.

Tras ver las distintas opciones que había para tener nuestro propio servidor de Git, nos decantamos por GitLab.

En este artículo explicaremos los pasos seguidos al instalarlo y lo que nos ha propiciado disponer de este software. De hecho, el servicio ya está en funcionamiento y está accesible a través del enlace: https://gitlab.fib.upc.edu utilitzando las cuentas de usuario de la facultad.

¿Qué es Git?

git icon Git es un Software de control de versiones no centralizado, orientado al mantenimiento de versiones de aplicaciones con ficheros de código. Actualmente es, probablemente, el sistema de control de versiones más utilitzado. En el pasado, Subversion había adquirido cierta importancia (también hay otras herramientas como Mercurial o Bazaar) pero parece que Git se ha impuesto con fuerza en este sector por los siguientes motivos:

  • su eficiencia, eficacia y sencillez
  • su capacidad de ser usado de forma básica por los que acaban de adentrarse en su mundo
  • su capacidad de ser usado de formas muy complejas y elaboradas por los expertos
  • su continua oferta de potencial y cantidad de prestaciones y control sobre el proyecto

 

¿Qué es GitLab?

gitlab iconGitLab, a su vez, es un repositorio de gestión de proyectos dotado de interfaz web. Como podemos deducir del nombre, está construido sobre Git, y básicamente nos proporciona el código para generar un servidor y gestionar los clientes, sus opciones y los servicios afrecidos.

A través de GitLab, podemos gestionar grupos, personas y los permisos que queremos que tengan los usuarios dentro de los grupos o proyectos a los que pertenezcan. También nos permite llevar a cabo un seguimiento del estado actual y del histórico de los proyectos pudiendo, así, ver todos los cambios y modificaciones producidas en el tiempo de desarrollo, además de gráficos, otros datos de interés de los proyectos y servicios que van más allá del control de versiones. Ejemplos de estos servicios serían los comentarios de usuarios sobre un proyecto, herramientas de planificación, issues (utilizados para reportar o avisar de errores), requests (para facilitar a la comunidad de proyectos compartidos, se permite que la gente haga peticiones de actualización con su código y que, si al propietario del proyecto le parece adecuado, puedan aceptarse), etc.

¿Qué nos ofrece GitLab?gitlab icon

Gitlab es software libre y gratuito, con una buena comunidad que lo va mejorando y actualuizando, y que crece y nos ofrece diversas funcionalidades interesantes que listamos a continuación:

  • Opción de autentificar contra servicios como LDAP; Un punto interesante, ya que otros servicios similares a GitLab no nos ofrecían esta opción de autentificación.
  • Distintos tipos de acceso y permisos (uso de roles y grupos); Restringiendo proyectos a ciertos usuarios y permitiendoles acceder a ciertos contenidos limitados o realizar ciertas acciones concretas. Los usuarios pueden acceder al protyecto a través de la web y pot SSH (con intercambio de claves pública-privada).
  • Seguminento de incidencias y comentarios de un proyecto; A partir de la interfaz web, los usuarios podrán comentar aspectos del proyecto que vean conveniente discutir. Nos ofrece un servicio de tiqueting para hacer el seguimiento de incidencias u objetivos del proyecto y se puede habilitar un wiki para la documentación que se quiera hacer.
  • Código del servidor fácilmente accesible remotamente; Trabajando con el servidor proporcionado en nuestra máquina, podemos asegurar la coneión desde el exterior, aislando así un punto de dependencia respecto a un servicio externo. Al tratarse de un servicio de nuestro servidor, podemos activar filtros para limitar el acceso a un rango de redes particular.
  • Gestión de grupos y proyectos; Nos permite gestionar proyectos y grupos de usuarios para realizar proyectos concretos, controlando los permisos de los integrantes y la libertad que estos tienen. Estas funciones son prácticas par apoder trabajar en equipo con conjuntos de usuarios sin tener que definir restricciones individuales para cada uno de ellos, permitiendo así mayor rapidez en la creación y definición de permisos y una mayor facilidad, flexibilidad y rapidez si han de hacerse cambios.
  • Capacidad para importar repositorios ya existentes; Puesto que GitLab es un sistema relativamente nuevo y mucha gente ha trabajado ya en otros sistemas como GitHub o en servidores externos al usar GitLab, nos permite crear repositorios a partir de otros ya creados con anterioridad.
  • Cómoda interfaz web; Práctica interfaz web para interaccionar con GitLab que nos permite trabajar más intuitivamente y que nos da un feedback más elevado que el terminal además de simplificar el uso del sistema y la revisión de proyectos.
  • Copias ed seguridad; Al tener el servicio en el servidor, a persar de trabajar con copias locales en el ordenador en el que nos hallamos, si perdiésemos alguna parte de nuestro proyecto, disponemos siempre de copias del sistema que no hayan sido comprometidas gracias a funcionar usando Git.
  • Historial de modificaciones del proyecto; Especialmente práctico en trabajos en grupo debido a que, cuando alguien hace alguna modificación, nos permite verla clare e intuitivamente ahorrandonos largas explicaciones o investigación sobre el código.

Además, al poder trabajar con un servidor propio, podemos gestionar el espacio cedido a los usuarios (como por ejemplo, poner un control de cuotas), regular el acceso al servicio y activar/desactivar servicios según interese.

¿Qué utiliza GitLab?

Para poder instalar y utilizar Gitlab, necesitaremos tener en nuestro servidor ciertos programas y librerías. Sin entrar demasiado en detalles, comentamos sobre qué tecnologías trabaja:

  • Python.
  • Ruby.
  • Git.
  • Mysql (mysqlserver mysqlclient).
  • Nginx.
  • El propio código de GitLab.
  • Llibrerías externas.
  • SecureShell.

Además, nos hará falta el servidor en el que queremos instalar el servicio y la conexión a través de la cual los usuarios puedan acceder a estos servicios, ya que, al tratarse de un servidor de repositorios, lo que nos interesará será el acceso remoto.

Además, nosotros mantenemos un sistema de autentificación, aparte del propio de GitLab, que trabaja con LDAP.

De todas formas, con las actualizaciones se añaden y se retiran dependencias, así que si estáis planteandoos utilizar este sistema, os recomendamos la documentación oficial, que está bastante bien trabajada (https://about.gitlab.com/documentation/).

Consideraciones

En nuestro caso, hemos limitado el acceso de personas externas y no se podrá utilizar este servicio ya que las cuentas de usuario están restringidas a personal interno. Ha sido planteado así, pero estamos en contínua evolución y crecimiento, y si lo viesemos necesario y que la gente lo usase, podría estudiarse aplicar otra política.

De cualquier modo, para colaborar en proyectos con entidades externas, siempre se pueden usar plataformas externas (como GitHub) con espléndidos servicios.

Segueix-nos a

Els nostres articles del bloc d'inLab FIB

         
         

inLab FIB incorpora esCert

Icona ESCERT

First LogoCSIRT Logo

inLab es miembro de

inLab és centre TECNIO

ACCIO