Manual Criação de Novo Repositório
Versão do documento: 4.0, 02/01/2025
Introdução
Objetivo
Este documento objetiva apresentar todos os passos necessários para que os interessados em realizar a criação de um novo repositório sejam capazes de, seguindo as instruções, chegarem ao resultado esperado, de uma forma correta e padronizada.
Escopo
Considera-se no escopo deste documento abordar todas as etapas e procedimentos, que são necessários para a criação efetiva de um repositório remoto, englobando desde a conexão com a máquina até o commit inicial com a estrutura de pastas padrão de novos projetos da empresa.
Não Escopo
Está fora do limite definido como escopo deste tutorial as informações inerentes à configuração e conexão da VPN da Basis, bem como de acesso remoto aos servidores internos.
Definições, Acrônimos e Abreviações
-
Repositório Git: espaço, local ou remoto, para armazenamento de arquivos e controle dos mesmos, quanto à versão;
-
Commit: submeter o repositório às novas ações realizadas em suas pastas;
-
VPN: rede privada de comunicação, que busca assegurar a confidencialidade e integridade na troca de informações pela rede.
Criação do Repositório Git via SGO
Por padrão, a criação de repositórios deve ser feita de maneira automatizada a partir das ocorrências dos respectivos sistemas no SGO.
Acessar Ocorrência do Sistema
A princípio, nenhum repositório de sistema deve ser criado sem uma ocorrência do tipo Tarefa com essa requisição, encaminhada para o departamento de Configuração. Para iniciar a criação, basta entrar nessa ocorrência, e na aba Dados do Sistema, clicar na ocorrência repassada em "Ocorrências do Sistema".

Aplicar transição "Criar Repositórios"
Dentro da ocorrência do sistema, nas transições de fluxo de trabalho, selecionar a transição "Criar Repositórios".

Uma janela pop-up deve aparecer na ocorrência, com os dados do sistema e campos para especificar quais repositórios serão criados. Caso nada seja escrito, por padrão, e seguindo o Guia de Gerência de Configuração, são criados os repositórios "codigo_fonte", "documentacao" e "gravacoes". O nome do sistema é preposto ao nome de cada repositório, ou seja, caso se escreva "backend", o nome do repositório será "sistema_backend".
Os repositórios por padrão são criados usando a estrutura padrão estabelecida para cada tipo de repositório, tendo um commit inicial apropriado. Entretanto, caso o repositório precise ser migrado de algum cliente e o projeto precise ser criado vazio, basta marcar o campo "Repositórios Migrados do Cliente". Todos serão criados sem qualquer commit, ficando a responsabilidade de popular o repositório para quem for importar o projeto do cliente.

A transição desencadeará as seguintes ações via webhook:
-
Criação do grupo no Gitlab relativo ao próprio contrato, caso não exista;
-
Criação do grupo relativo ao sistema no AD Basis, caso não exista;
-
Criação dos repositórios dentro do grupo;
-
Associação dos repositórios à ocorrência do SGO e ao grupo do AD, via aplicação de custom attributes no repositório;
-
Commits iniciais para cada tipo de repositório (caso o campo "Repositórios Migrados do Cliente" não esteja marcado);
-
Criação de hooks nas pastas dos repositórios para filtrar os commits realizados no mesmo.
Finalizada a transição, os repositórios serão listados ao fundo aba Cadastro do Sistema, juntamente ao grupo relacionado no AD.

Aplicar transição "Associar Usuários a Repos"
Caso também exista, requisitado via tarefa no SGO, um pedido para associar usuários específicos aos repositórios, é necessário realizar outra transição. Dentro da ocorrência do sistema, nas transições de fluxo de trabalho, selecionar a transição "Associar Usuários a Repos".

A janela da transição apresentará dois campos para preenchimento, sendo um para usuários que terão acesso de escrita e outro que terá usuários cujo acesso será de somente leitura. Preencher com o nome de usuário de cada um, separado com vírgulas (o próprio sistema auxilia auto-completando nomes), e realizar a transição.

Realizado este passo, os usuários serão associados ao grupo relativo ao sistema no AD Basis. Um serviço periódico de sincronização de usuários, executando em paralelo ao Gitlab, será responsável por associar esses usuários também aos repositórios do próprio Gitlab. O acesso, portanto, não é imediato, mas deve ser atualizado em menos de uma hora. A lista de usuários com acesso pode ser visualizada na seção Pessoas, à direita da ocorrência do sistema, no campo "Equipe Git".

Adicionalmente, existem grupos no AD cujos membros possuem acesso a todos os repositórios do cliente (“nomecliente_all” para escrita e “nomecliente_all_ro” para leitura). Caso haja requisição no SGO para acesso a todos os repositórios de determinado cliente, o acesso precisa ser dado diretamente nesses grupos, a partir do gerenciamento de usuários do próprio SGO ou do AD.
Criação do Repositório Git via Gitlab
Se, por alguma razão, não houver a possibilidade de criar o repositório diretamente pelo SGO, é possível também criar o mesmo pelo próprio Gitlab.
Conectar ao Repositório Gitlab
Na tela do Sistema de Gestão de Ocorrências (SGO) da Basis, acessar o menu no topo esquerdo da tela, e selecionar "Repositório Git", ou acessar diretamente o link https://gitlab.basis.com.br/. Se o login já estiver realizado via SSO no próprio SGO, o acesso será automático. Do contrário, a tela de login será apresentada. As credenciais de acesso são as mesmas do SGO.
Criar novo grupo
Na página inicial após o login, clicar em "Grupos" para visualizar os clientes disponíveis e selecionar o desejado que receberá o novo repositório. Caso seja um novo cliente, clicar no botão "Novo Grupo" acima dos existentes.

Entrar com a chave do cliente, atribuir um avatar e editar a URL se necessário. Vale constar que a chave por padrão é a mesma usada na alocação do contrato no SGO, e não pode conter espaços ou caracteres especiais. Além disso, o nível de visibilidade deve ser marcado como Privado.

Criar novo repositório
Na tela do grupo, no canto direito da tela, clicar em "Novo projeto".

Entre com o nome que o repositório receberá, seguindo o padrão:
-
Código: nomedosistema_codigo_fonte
-
Documentação: nomedosistema_documentacao
-
Gravações: nomedosistema_gravacoes
Vale constar que o nome não pode conter espaços ou caracteres especiais.

Uma vez criado, o projeto terá as configurações padrão do sistema aplicados a si. Salvo exceções especificadas pelos próprios gestores e clientes, não é necessário alterá-las. Contudo, essas mesmas configurações impedem que equipes possam fazer alterações nos repositórios se não houver uma branch inicial, portanto faz-se necessário criar um primeiro commit.
Commit inicial do repositório de código
Dentro do próprio Gitlab, é possível já criar um único arquivo de commit para base do repositório. No projeto vazio, clicar em Novo Arquivo.

Preencher o caminho do arquivo com o seguinte nome:
.gitlab/merge_request_templates/basis_template.md
Preencher o conteúdo do arquivo com o seguinte texto:
De acordo com a [Estratégia de Verificação, Validação e Integração](https://foundation.basis.com.br/gerencia_configuracao.html#estrat%C3%A9gia-de-verifica%C3%A7%C3%A3o-valida%C3%A7%C3%A3o-e-integra%C3%A7%C3%A3o) definida no Foundation, os seguintes itens de check-list devem ser validados para aceitação do Merge Request: - [ ] `liquibase` Não usar SQL nas migrações - [ ] `liquibase` Edição de changeset já aplicado - [ ] `config` Níveis de logs nos arquivos de configuração globais - [ ] `config` Configuração externalizada (vs fixa no código) - [ ] `config` Dependências desnecessárias - [ ] `qualidade` Nomenclatura REST - Uri Design - [ ] `qualidade` Complexidade dos algoritmos - [ ] `qualidade` Nomes das variáveis/métodos/classes - [ ] `qualidade` Reinvenção de roda - classes Utils (usar commons, guava, lodash, ...) - [ ] `qualidade` Código testável - [ ] `qualidade` Pesquisa dentro de estrutura de repetição (Banco, WS, etc.)
Por fim, preencher o campo de mensagem de commit, substituindo a chave de ocorrência pela chave relativa à Tarefa de criação do repositório, ou sistema associado:
Criação do repositório com template de Merge Request. BASIS-XXXXX

Estando tudo de acordo, como na imagem, clicar em Commit abaixo. O arquivo estará então aplicado ao código, permitindo commits da equipe e merge requests seguindo o padrão Basis.
Criação da estrutura de pastas do repositório de documentação
A partir do Gitlab, clonar o novo repositório de documentação seguindo as instruções de Como efetuar o clone do Manual de _Git.
Dentro da pasta local clonada do repositório vazio, colar e executar o arquivo: mkdirsgit.bat (ou mkdirsgit.sh caso o sistema seja Linux).

Se o script rodou corretamente, a pasta agora possui oito novas pastas na sua raiz. Apagar ou mover para fora o arquivo mkdirsgit.bat ou mkdirsgit.sh.

Clicar com o botão direito na pasta raiz do repositório e selecionar "Git commit → master…".

Se surgir uma mensagem informando que o nome de usuário e E-mail precisam ser setados, clicar em Yes, preencher o formulário seguinte com seu nome de usuário e E-mail Basis, selecionar "Save as Global" e clicar em Ok.

Marcar todos os arquivos da lista (vários .gitignore para manutenção das pastas), comentar e executar o commit.
Mensagem de commit sugerida:
Criação da estrutura de pastas de acordo com o Guia de Gerência de Configuração. [CHAVE-OCORRÊNCIA]

Quando finalizar o commit, clicar em Push logo abaixo.

Clicar em OK, digitar sua senha e aguardar a finalização.

Ao terminar de enviar o push, o repositório estará configurado e já poderá receber os documentos do sistema.
Caso um commit ou push dê errado, faz-se necessário realizar um Pull para manter o repositório local atualizado e estável. Clicar com o botão direito na pasta raiz do repositório e selecionar "Git Sync…".

Na janela resultante, selecionar Pull. Entrar com sua senha e aguardar a finalização.

Nessa janela, também é possível realizar commits e pushes, se for conveniente. Lembrando que, após o pull, o push deve ser executado novamente. Um novo commit não é necessário, exceto se tiver conflitos em arquivos do repositório que precisem ser resolvidos.
Concessão de acesso aos repositórios
Nos casos em que o repositório seja criado via SGO, os acessos serão concedidos pelo mesmo, como já orientado acima. Estando associado ao grupo no AD, o mesmo será concedido no Gitlab via serviço de sincronização periódico.
Alternativamente, caso não haja associação com o SGO ou com grupos no AD, os acessos devem ser concedidos manualmente dentro do próprio Gitlab. No projeto ou no grupo, selecionar a seção Membros no menu esquerdo.

Na tela que segue, listar os nomes usuários que deverão ter acesso ao repositório, bem como qual tipo de acesso deverão ter, e clicar em Convidar. Para referência:
-
Maintainer: acesso de gerenciamento;
-
Developer: acesso de escrita;
-
Reporter: acesso de leitura;

Em todos os repositórios criados, deve ser realizada por padrão a liberação de acesso para os seguintes usuários:
-
Cédric Lamalle;
-
Miguel Negrelli;
-
Leonardo Lopes;
-
Arquitetos;
-
Gerente do Projeto;
-
Gerentes GCO.