====== Gitlab - Repositorios GIT e integración continua ======
===== Descrición do servizo =====
Servidor de [[https://www.gitlab.com/|GitLab]], unha ferramenta que permite xestionar repositorios GIT de forma sinxela, moi similar a GitHub.
Ten activado [[https://about.gitlab.com/gitlab-ci/|GitLab CI]] cun [[https://docs.gitlab.com/runner/executors/docker.html|runner de uso xeral de tipo Docker]] (e a posibilidade de engadir máis runners) e [[https://docs.gitlab.com/ee/user/project/pages/index.html|Gitlab Pages]].
===== Alta no servizo =====
Todos os usuarios do CITIUS poden acceder a este servizo de forma automática.
===== Manual de usuario =====
==== Acceso a GitLab e primeiros pasos ====
Pódese acceder por https://gitlab.citius.usc.es/. Deberás utilizar o teu usuario e contrasinal do CiTIUS, na pestaña que pon LDAP.
Unha vez dentro, podes crear novos proxectos de forma sinxela. Unha vez creado un proxecto, mostraranse por pantalla os pasos necesarios para inicializar o repositorio.
Recorda que se elixes acceso mediante SSH (a opción por defecto), só poderás facelo dende a rede do centro ou conectado á VPN, e que deberás engadir unha chave pública nas preferencias. Engadir unha chave pública é moi doado, e o propio Gitlab explica como facelo. É a opción recomendada se vas a traballar dende a rede do centro.
O acceso mediante HTTPS, pola contra, funciona con usuario e contrasinal, e tamén é accesible dende o exterior.
[{{ :centro:servizos:gitlab_ssh_https.png?nolink |Pulsando no desplegable, podes ver a dirección para acceder mediante HTTPS ao repositorio}}]
==== GitLab CI ====
Dende a versión 8.0, Gitlab CI está integrado en Gitlab. Para comezar a usalo, basta con crear un arquivo chamado ''.gitlab-ci.yml'' seguindo a [[http://doc.gitlab.com/ce/ci/quick_start/README.html|guía de Gitlab CI]].
==== Gitlab Pages ====
As páxinas de Gitlab Pages sérvense nun subdominio de ''pages.citius.usc.es'' (cun alias en ''citiususc.io''), e créanse a partir dun traballo de Gitlab CI. Tes unha guía básica sobre o uso de Gitlab Pages en [[https://pages.citius.usc.es/]] e máis información na páxina de [[:centro:servizos:Aloxamento con Gitlab pages|Aloxamento con Gitlab Pages]]
==== Creación de proxectos en grupos ====
Os proxectos de GitLab poden crearse dentro dun usuario ou dentro dun grupo. Se o proxecto vai a ser en colaboración con outras persoas, ou é susceptible de ser traspasado a outra persoa unha vez remates o traballo nel, é preferible que cres o proxecto dentro dun grupo. Para facelo, pulsa no botón //Create a group// dentro da páxina de //Groups//.
==== Arquivos grandes (git lfs) ====
Os arquivos maiores de 100MB non deben subirse ó repositorio git da forma habitual, senon usando ''git-lfs''. O procedemento é o seguinte:
- Instalar o cliente de ''git-lfs'', dispoñible no paquete ''git-lfs'' na Ubuntu 14.04 do centro ou [[https://packagecloud.io/github/git-lfs/install|nesta páxina]] para outras distribucións.
- No directorio do repositorio, iniciar o LFS: ''git lfs install''
- Indicar os arquivos que serán manexados co LFS (poden usarse comodíns): ''git lfs add "*.ova"''
- Engadir os arquivos a commits, da forma habitual: ''git add file.ova; git commit -m "Added big file"''
- O LFS só funciona a través de HTTPS, non de SSH. Se estás a utilizar o //remote// por SSH, tes que engadir tamén o de HTTPS con outro nome antes de facer //push//, por exemplo: ''git remote add origin-https https://gitlab.citius.usc.es/grupo/proxecto.git''
- Por último, fai un //push// ó //remote// HTTPS: ''git push origin-https master''
Para clonar o repositorio, tamén hai que facer pasos adicionais:
- Facer o //clone// da maneira habitual por HTTPS: ''git clone https://gitlab.citius.usc.es/grupo/proxecto.git''
- Cambiar ó directorio do repositorio e obter os arquivos do LFS: ''git lfs fetch''
===== Problemas e preguntas frecuentes =====
==== Ó facer un push, recibo o seguinte erro: "error: RPC failed; result=22, HTTP code = 411" ====
Se recibes o ''HTTP code = 411'', precisas configurar o comando git para aumentar o tamaño do buffer HTTP:
git config --global http.postBuffer 524288000 # permite ata 500MB
Se recibes o ''HTTP code = 413'', é porque o push é demasiado grande. O servidor acepta push de ata 70MB por HTTP e calquera push maior dará ese erro. Se precisas facer pushes maiores, tes que usar SSH cun par de chaves en vez de HTTP.
==== Ó clonar o repositorio, recibo o seguinte erro: "Agent admitted failure to sign using the key." ====
Se tes a chave SSH correctamente configurada no servidor, acabas de creala e nunca a probaches, debes executar no teu equipo o seguinte comando para engadila ó axente de autenticación local:
ssh-add