====== Gitlab - Repositorios GIT e integración continua ======
===== Descripción del servicio =====
Servidor de [[https://www.gitlab.com/|GitLab]], una herramienta que permite gestionar repositorios GIT de forma sencilla, muy similar a GitHub.
Tiene activado [[https://about.gitlab.com/gitlab-ci/|GitLab CI]] con un [[https://docs.gitlab.com/runner/executors/docker.html|runner de uso general de tipo Docker]] (y la posibilidad de añadir más runners) y [[https://docs.gitlab.com/ee/user/project/pages/index.html|Gitlab Pages]].
===== Alta en el servicio =====
Todos los usuarios del CITIUS pueden acceder a este servicio de forma automática.
===== Manual de usuario =====
==== Acceso a GitLab y primeros pasos ====
Se puede acceder en https://gitlab.citius.usc.es/. Debes usar tus credenciales del CiTIUS, en la pestaña llamada LDAP.
Una vez dentro, se pueden crear nuevos proyectos de forma sencilla. Una vez creado un proyecto, se muestran por pantalla los pasos necesarios para inicializar el repositorio.
Recuerda que si eliges acceder mediante SSH (la opción por defecto), solo podrás hacerlo desde la red interna del CiTIUS o conectandote a la VPN, y que tendrás que añadir una clave pública en las preferencias. Añadir una clave pública es muy sencillo y el propio Gitlab te explica cómo hacerlo. Es la opción recomendada si vas a trabajar desde la red del centro.
El acceso mediante HTTPS, por el otro lado, funciona con usuario y contraseña y también es accesible desde el exterior.
[{{ :centro:servizos:gitlab_ssh_https.png?nolink |Pulsando en el desplegable, puedes ver la dirección para acceder mediante HTTPS al repositorio}}]
==== GitLab CI ====
Desde la versión 8.0, Gitlab CI está integrado en Gitlab. Para comenzar a usarlo, basta con crear un archivo llamado ''.gitlab-ci.yml'' siguiendo la [[http://doc.gitlab.com/ce/ci/quick_start/README.html|guía de Gitlab CI]].
==== Gitlab Pages ====
Las páginas de Gitlab Pages se sirven en un subdominio de ''pages.citius.es'' (con un alias en ''citius.io''), y se crean a partir de un trabajo de Gitlab CI. Tienes una guía básica sobre el uso de Gitlab Pages en [[https://pages.citius.usc.es/]] y más información en la página de [[:centro:servizos:Aloxamento con Gitlab pages| alojamiento con Gitlab Pages]].
==== Creación de proyectos en grupos ====
Los proyectos de GitLab pueden crearse dentro de un usuario o dentro de un grupo. Si el proyecto va a ser en colaboración con otras personas, o es susceptible de ser traspasado a otra persona una vez termines el trabajo en él, entonces es preferible que crees el proyecto dentro de un grupo. Para hacerlo pulsa en el botón //Create a group// dentro de la página de //Groups//.
==== Archivos grandes (git lfs) ====
Los archivos mayores de 100MB no deben subirse al repositorio git de la forma habitual, sino usando ''git-lfs''. El procedimiento es el seguiente:
- Instalar el cliente de ''git-lfs'', disponible en el paquete ''git-lfs'' en la Ubuntu 14.04 del centro o [[https://packagecloud.io/github/git-lfs/install|aquí]] para otras distribuciones.
- En el directorio del repositorio, iniciar LFS: ''git lfs install''
- Indicar los archivos que serán manejados con LFS (pueden usarse comodínes): ''git lfs add "*.ova"''
- Añadir los archivos a commits, de la forma habitual: ''git add file.ova; git commit -m "Added big file"''
- LFS solo funciona a través de HTTPS, non de SSH. Si estás utilizando el //remote// por SSH, tienes que añadir también el de HTTPS con otro nombre antes de hacer //push//, por ejemplo: ''git remote add origin-https https://gitlab.citius.usc.es/grupo/proyecto.git''
- Por último, haz un //push// al //remote// HTTPS: ''git push origin-https master''
Para clonar el repositorio también hay que hacer pasos adicionales:
- Hacer el //clone// de la manera habitual por HTTPS: ''git clone https://gitlab.citius.usc.es/grupo/proyecto.git''
- Cambiar el directorio del repositorio y obtener los archivos del LFS: ''git lfs fetch''
===== Problemas y preguntas frecuentes =====
==== Al hacer un push, recibo el siguiente error: "error: RPC failed; result=22, HTTP code = 411" ====
Si recibes el ''HTTP code = 411'', necesitas configurar el comando Git para aumentar el tamaño del buffer HTTP
git config --global http.postBuffer 524288000 # permite ata 500MB
Si recibes el ''HTTP code = 413'', es porque el push es demasiado grande. El servidor acepta push de hasta 70MB por HTTP y cualquier push mayor dará ese error. Si necesitas hacer push mayores tienes que usar SSH con un par de llaves en lugar de por HTTP.
==== Al clonar el repositorio, recibo el siguiente error: "Agent admitted failure to sign using the key." ====
Si tienes la clave SSH correctamente configurada en el servidor, acabas de crearla y nunca la habías probado debes ejecutar el siguiente comando para añadirla al agente de autenticación local:
ssh-add