Git
Chapters ▾ 2nd Edition

4.8 Git no Servidor - GitLab

GitLab

Embora o GitWeb seja bastante simplista, se estiveres a procurar por um servidor Git mais moderno e completo, existem algumas soluções de código aberto lá fora que podes instalar em vez deste. Como o GitLab é um dos mais populares, vamos cobrir a instalação e usá-lo como um exemplo. Este é um pouco mais complexo do que a opção GitWeb e provavelmente requer mais manutenção, mas é uma opção muito mais completa.

Instalação

O GitLab é um aplicativo da Web baseado em banco de dados, por isso a sua instalação é um pouco mais trabalhosa do que alguns outros servidores Git. Felizmente, este processo é muito bem documentado e apoiado.

Existem alguns métodos que tu podes seguir para instalar o GitLab. Para obter algo em execução rapidamente, podes descarrear uma imagem de máquina virtual ou um instalador de um clique em https://bitnami.com/stack/gitlab e ajustar a configuração para que corresponda ao teu ambiente particular.. Um toque agradável que Bitnami incluiu é o ecrã de login (acedida digitando alt-→); Ele informa o endereço IP e o nome de utilizador e senha padrão para o GitLab instalado.

O ecrã de login da máquina virtual Bitnami GitLab.
Figure 50. O ecrã de login da máquina virtual Bitnami GitLab.

Para qualquer outra coisa, sigue as orientações no readme do GitLab Community Edition, que pode ser encontrado em https://gitlab.com/gitlab-org/gitlab-ce/tree/master. Lá encontrarás assistência na instalação do GitLab usando receitas do Chef, a máquina virtual no Digital Ocean, e os pacotes RPM e DEB (que, no momento em que este texto foi escrito, estava na versão estável Omnibus, para os sistemas operacionais Ubuntu 14.04, Ubuntu 16.04, Debian 7, Debian 8, CentOS 6, CentOS 7, OpenSUSE 42.1 e Raspberry PI 2 em Raspbian). Há também guias com orientações “não oficiais” para que o GitLab funcione em sistemas operacionais e bases de dados diferentes dos citados acima, um script para instalação completamente manual e muitos outros tópicos.

Administração

A interface de administração do GitLab é acedida através da web. Basta apontar o teu navegador para o nome do host ou endereço IP onde o GitLab está instalado e efetuar login como um utilizador admin. O nome de utilizador padrão é admin@local.host e a senha padrão é 5iveL!fe (que tu serás solicitado a alterar assim que entrares nele). Depois de efetuares o login, clica no ícone “Área de administração” no menu no canto superior direito.

O item Área de administração no menu GitLab.
Figure 51. O item “Área de administração” no menu GitLab.

Utilizadores

Utilizadores no GitLab são contas que correspondem a pessoas. As contas de utilizador não têm muita complexidade; A conta de utilizador é uma coleção de informações pessoais anexadas aos dados de login. Cada conta de utilizador vem com um namespace, que é um agrupamento lógico de projetos que pertencem a este utilizador. Se o utilizador jane tivesse um projeto chamado project, o URL do projeto seria http://servidor/jane/project.

O ecrã de administração de utilizadores do GitLab.
Figure 52. Ecrã de administração de utilizadores do GitLab.

Remoção de um utilizador pode ser feito de duas formas. “Bloquear” um utilizador que os impede de logar na instância do Gitlab, mas todos os dados sob o namespace do utilizador serão preservados, e os commits assinados com o e-mail do utilizador ainda irão direcionar para o perfil do mesmo.

“Destruir” um utilizador, por outro lado, remove o remove completamente da base de dados e do sistema de arquivos. Todos os projetos e dados no namespace são removidos, e qualquer outro grupo que ele possua também será removido. Isto é obviamente uma ação muito mais permanete e destrutiva, e o uso disso é raro.

Grupos

Um grupo GitLab é um conjunto de projetos, juntamente com dados sobre como os utilizadores podem acederr estes projetos. Cada grupo tem um espaço para nome de projeto (da mesma forma que os utilizadores), então se o grupo training tiver um projeto materials, tua url seria http://servidor/training/materials.

O ecrã de administração de grupos do GitLab.
Figure 53. O ecrã de administração de grupos do GitLab.

Cada grupo está associado a um número de utilizadores, cada um com um nível de permissões para os projetos do grupo e para o próprio grupo. Estes variam de “Convidado” (problemas e bate-papo somente) a “Proprietário” (controle total do grupo, seus membros e seus projetos). Os tipos de permissões são muito numerosos para listar aqui, mas o GitLab tem um link útil no ecrã de administração.

Projetos

Um projeto GitLab corresponde de grosso modo a um único repositório Git. Cada projeto pertence a um único namespace, a um utilizador ou a um grupo. Se o projeto pertence a um utilizador, o proprietário do projeto tem controle direto sobre quem tem acesso ao projeto; Se o projeto pertence a um grupo, as permissões de nível de utilizador do grupo também terão efeito.

Cada projeto também tem um nível de visibilidade, que controla quem tem acesso de leitura às páginas desse projeto e ao repositório. Se um projeto for Privado, o proprietário do projeto deve conceder explicitamente acesso a utilizadores específicos. Um projeto Interno é visível para qualquer utilizador logado, e um projeto Público é visível para qualquer pessoa. Observa que isto controla tanto o acesso git fetch quanto o acesso à interface web do utilizador a este projeto.

Ganchos

O GitLab inclui suporte para ganchos (hooks), tanto a nível de projeto como de sistema. Para qualquer um destes, o servidor GitLab executará um HTTP POST com algum JSON descritivo sempre que ocorrerem eventos relevantes. Esta é uma ótima maneira de conectar os teus repositórios Git e a instância GitLab ao resto de sua automação de desenvolvimento, como servidores CI, salas de bate-papo ou ferramentas de implantação.

Uso Básico

A primeira coisa que vais querer fazer com o GitLab é criar um novo projeto. Isto é feito clicando no ícone “+” na barra de ferramentas. Ser-te-á pedido o nome do projecto, a qual namespace ele deverá pertencer e que nível de visibilidade deverá ter. A maior parte do que tu especificas aqui não é permanente e pode ser reajustada posteriormente através da interface de configurações. Clica em “Criar projeto” e pronto.

Uma vez que o projeto exista, provavelmente vais querer conectá-lo com um repositório Git local. Cada projeto é acessível através de HTTPS ou SSH, sendo que ambos podem ser usados para configurar um Git remoto. As URLs estão visíveis na parte superior da página inicial do projeto. Para um repositório local existente, este comando criará um remoto chamado gitlab para o local hospedado:

$ git remote add gitlab https://servidor/namespace/project.git

Se não tens uma cópia local do repositório, podes simplesmente fazer isto:

$ git clone https://servidor/namespace/project.git

A interface do utilizador da Web fornece o acesso a várias visualizações úteis do próprio repositório. A página inicial de cada projeto mostra as atividades recentes e os links ao longo do topo levam-te a exibições dos arquivos do projeto e do log de commits.

Trabalhando juntos

A maneira mais simples de trabalhar juntos num projeto GitLab é dar a outro utilizador acesso direto de push (envio de commits) ao repositório Git. Podes adicionar um utilizador a um projeto indo para a seção “Membros” das configurações deste projeto e associando o novo utilizador com um nível de acesso (os diferentes níveis de acesso estão um pouco descritos em Grupos). Ao fornecer a um utilizador um nível de acesso de “Desenvolvedor” ou superior, este utilizador pode empurrar branches e ramificações diretamente para o repositório.

Outra maneira mais dissociada de colaboração é usar solicitações de mesclagem. Este recurso permite que qualquer utilizador que possa ver um projeto contribua para ele de forma controlada. Os utilizadores com acesso direto podem simplesmente criar uma ramificação, empurrá-la para ele e abrir uma solicitação de mesclagem do seu ramo de volta para master ou qualquer outra ramificação. Os utilizador que não têm permissões push para um repositório podem "fork" (criar sua própria cópia), push commit para aquela cópia e abrir uma solicitação de mesclagem de sua bifurcação de volta para o projeto principal. Este modelo permite que o proprietário esteja no controle total do que entra no repositório e quando, embora permita contribuições de utilizadores não confiáveis.

Os pedidos de mesclagem e os problemas são as principais unidades de discussão de longa duração no GitLab. Cada solicitação de mesclagem permite uma discussão linha a linha da alteração proposta (que suporta um tipo leve de revisão de código), bem como um tópico geral de discussão geral. Ambos podem ser atribuídos a utilizador ou organizados em marcos.

Esta seção é focada principalmente nos recursos relacionados ao Git do GitLab, mas como um projeto maduro, ele fornece muitos outros recursos para ajudar a tua equipa a trabalhar em conjunto, como wikis de projeto e ferramentas de manutenção do sistema. Um benefício para o GitLab é que, uma vez que o servidor está configurado e em execução, tu raramente precisarás ajustar um arquivo de configuração ou aceder o servidor via SSH; A maior parte da administração e o uso geral podem ser realizados através da interface no navegador.