GitHub, Bitbucket o Gitlab

Una vez que comenzamos a recorrer el largo sendero del desarrollo, una de las primeras herramientas que debemos conocer y manejar son los controles de versiones. Junto con toda esta magia debemos elegir un servicio para compartir y guardar nuestro código en repositorios remotos.

La opción más lógica es usar GitHub que nos permite tener repositorios públicos ilimitados gratis, para repositorios privados y trabajar con un team tendremos que pagar cuotas mensualmente. La alternativa es bitbucket y nos proporciona repositorios privados y trabajar con un team de hasta 5 usuarios gratis, obviamente con limitantes de espacio y uso.

¿Qué ocurre si necesitamos trabajar en equipos más grandes y nuestros proyectos comienzan a crecer en tamaño? o ¿Si tenemos distintos equipos de trabajo con múltiples proyectos y necesitamos administrarlos bajo una organización ?. Evidentemente tendremos que pagar más en la plataforma elegida. Esta sería la opción más sensata si las cuotas se mantienen bajas y están dentro de nuestro presupuesto, en otros casos, podemos pensar en Gitlab.

Gitlab es una plataforma online que ofrece manejar nuestros repositorios y proyectos, con todas las ventajas de sus competidores, pero con la posibilidad de instalarse localmente en nuestro servidor, otorgandonos la ventaja de manejar nuestros equipos y tener repositorios privados y públicos.

Gitlab cuenta con dos versiones de su producto, Enterprise y Community Edition(CE), la primera de pago y con alternativa de almacenamiento en la nube y la otra gratuita mantenida por la comunidad, distribuida bajo open source. Ambas nos entregan herramientas para manejar nuestros repositorios y generar software de forma colaborativa.

Instalación de GitLab CE en un server Virtual

Gitlab nos permite instalarlo en diferentes sistema operativos y plataformas,la cantidad de usuarios que podremos manejar dependera de nuestro HW.

Lo instalaremos en un servidor virtual, proporcionado por Linode, utilizando un plan de 10 dólares mensuales. Con el siguiente hardware 2GB RAM 1 CPU Core 30GB SSD, se utilizó un swap de 2GB, con lo podemos manejar un máximo de 100 usuarios según los requerimientos oficiales.

El sistema operativo instalado es Ubuntu 17.04 y la arquitectura es x86_64. Debido a las limitaciones de HW se utilizara este server solo para Gitlab.

Preparación del servidor.

El primer paso es acceder a nuestro servidor virtual desde la terminal y configurar el acceso. Luego actualizar los paquetes y dependencias.

 

sudo apt get update

sudo apt get upgrade

 

¿Que versión instalar?

 Utilizaremos el tipo de instalación recomendada “Omnibus package installation”. El motivo, viene con todas las dependencias y servicios necesarios para el correcto funcionamiento de gitlab casi sin configuraciones adicionales.

Ingresa estos comandos en la consola.

sudo apt-get install -y curl openssh-server ca-certificates
sudo apt-get install -y postfix

El primer comando instala openssh y el segundo instalará postfix. Durante esta instalación nos saldrá una pantalla preguntando por la configuración, debemos seleccionar “Internet Site” y presionar enter. Donde nos consulte “mail name” debemos seleccionar “servers external DNS”. Si saltara otra pregunta, la dejamos con la opción por defecto y continuamos.

Instalando en Ubuntu 16.04 o 16.10

Debemos seguir los pasos de la guia oficial y añadir el repositorio

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

A continuación debemos instalar Gitlab y especificar cuál será la URL con la cual accederemos.

sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ce

Remplaza “http://gitlab.example.com” por la url del servidor VPS.

Una vez terminado el proceso accede a la url de tu servidor y serás redirigido a cambiar el password. Una vez ajustado este paso, podrás crear una cuenta con tú correo o simplemente acceder como root.

Estos pasos instalara la ultima versión de Gitlab CE.

Instalando en Ubuntu 17.04

Hasta la fecha que se escribió este articulo no esta añadido el repositorio de ubuntu 17.04 para la instalación automatica. Por lo que debemos descargar manualmente la imagen de Gitlab.

curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/xenial/gitlab-ce_10.1.0-ce.0_amd64.deb/download

Una vez terminada la descarga lo instalaremos:

sudo dpkg -i gitlab-ce_10.1.0-ce.0_amd64.deb

 

Una vez finalizado el proceso de instalación, debemos configurar la IP del servidor como External URL en la configuración de Gitlab. Esto se puede lograr con cualquier editor, con vim seria:

vim /etc/gitlab/gitlab.rb

 

Debemos buscar “External_url” e ingresar la IP de nuestro VPS:

Recordemos que en vim para insertar cambios en los documentos debemos presionar “ i ” para ingresar al modo insert, realizar los cambios y salir presionando la tecla “esc” escribir “ :wq ” para que guarde los cambios y salga del editor.

ahora solo debemos re configurar Gitlab :

sudo gitlab-ctl reconfigure

 

Esperamos que termine el proceso y al acceder a la IP del servidor podremos acceder a nuestro Gitlab.

Se instalara la version Gitlab CE 10.1.0, si necesitamos otra versión, podemos acceder al siguiente repositorio.

Primeros pasos en Gitlab

Con la configuración inicial, ya podemos comenzar a utilizar Gitlab sin problemas, creando repositorios privados o públicos o exportando proyectos desde otras plataformas.

Si fuera necesario alguna configuración personalizada debemos guiarnos con la siguiente documentación.

Principalmente todos los cambios referentes al servicio se hacen el archivo:

/etc/gitlab/gitlab.rb

Con las características del VPS donde instalamos Gitlab, podemos tener hasta 100 usuarios a un costo significativamente menor que en otros servicios, si aumentan los usuarios bastaría con aumentar nuestro HW, tarea fácil gracias a la consola de Linode.

Si decidimos utilizar Gitlab para nuestra empresa podemos reducir costos, pero debemos tener en consideración que las tareas de mantención y respaldo corren por nuestra cuenta, por lo tanto es recomendable generar un plan de respaldo para nuestro server Gitlab.