Usando um “Github” onpremise

Usando um github onpremise

Com a popularização do GitHub, desenvolvedores e empresas encontraram uma plataforma robusta para gerenciar repositórios, colaborar em projetos e implementar pipelines de integração contínua, entre outros recursos avançados. No entanto, nem sempre a centralização na nuvem é ideal, especialmente quando segurança, controle de dados e personalização são prioridades. É aí que o Gitea se destaca, oferecendo uma solução similar ao GitHub, mas projetada para ser implementada localmente. Então, o artigo Usando um “Github” onpremise explora o uso prático do Gitea em um ambiente Docker.

Bom, além desse artigo, aqui no blog também temos diversos outros artigos sobre kubernetes, desenvolvimento, gestão, devops, etc. Veja alguns exemplos: Diferenças entre Paradigmas, Axiomas e HipótesesDesenvolver na empresa ou comprar prontoFuja da otimização prematura, entre outros.

Github não é Git

Sei que para muitos isso é claro e cristalino, mas ainda assim vale destacar: github não é git. o Git é um sistema distribuído de gerenciamento de versão de códigos de sistemas. Ele é muito poderoso e, embora tenha sido criado pelo próprio Linus Torvalds (criador do Linux), é amplamente utilizado em sistemas Windows.

Já o Github é uma rede social de controle de códigos fonte. Após você criar uma conta no github você pode criar um profile, criar códigos públicos, ajudar em códigos de terceiros, ter repositórios de código privados para você e seus clientes e etc. Ele expande as potencialidades de git e funciona muito bem em parceria. Você pode utilizar o git na sua estação de trabalho e definir o github como um git remoto para controle central dos códigos de sua equipe. Você só não pode confundir o git com o github.

O projeto Gitea

Bacana, mas o github tem ainda outras capacidades que vão além do comum do git. Por exemplo, eu posso ter uma gestão de issues (problemas), pull requests (requisições para consolidação de código), integração contínua, implantação automática em produção, etc. São recursos muito interessantes que não fazem sentido no git puro.

Pois bem, o Gitea (mistura de git com chá [tea em inglês]) é uma solução OpenSource que oferece recursos análogos ao github, mas para uso local ou onpremise. Desse modo, você pode ter um “github” corporativo, instalado na sua própria infraestrutura e sob sua própria manutenção, se for conveniente.

Instalando o Gitea com Docker

Para instalar o Gitea com o docker é algo realmente muito fácil. Na verdade estou utilizando o seguinte arquivo docker-compose como base:

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.22.3
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
Tela do VSCode executando o docker-compose para criar containers do Gitea

Depois de salvar esse código sob o nome ‘docker-compose.yaml’, basta rodar a linha de comando:

docker-compose up

Agora deve-se fazer a configuração inicial no produto, encontrando-o através do link http://localhost:3000/ . Para fins de teste não vou alterar nada muito relevante, com a exceção da senha de administrador. Escolha um usuário e senha que fazem sentido para você.

Tela incial de configuração do Gitea

A imagem a seguir mostra a entrada do nome do administrador: ele não pode se chamar admin. O endereço de e-mail, usuário e senha. Essa é a base para o funcionamento e manutenção da plataforma.

Tela de configuração de usuário e senha do Gitea

Usando um “Github” onpremise: Clonando o repositório Gitea localmente

Vamos avançar fazendo um uso real do sistema. Vamos criar uma organização, que normalmente é o nome de sua empresa. Mas poderia ser uma divisão de clientes ou mesmo áreas internas. No caso criei a organização anselme.com.br. Note que ela tem diversos repositórios, projetos, pacotes, membros e equipes. Além disso, ele tem uma estrutura de configuração bem semelhante a do próprio github com: webhooks, tags, secrets, etc.

Tela de uma Organização criada no Gitea

Para nosso cenário vamos apenas criar um repositório. Criei um chamado AnselmeBlog e veja que há pouquíssimas diferenças do que você já está acostumado do github. A partir de agora você deve fazer um ‘git clone’ e acessar o repositório a partir de seu git local.

Tela de um repositório criado no Gitea

A tela a seguir mostra a execução do comando git clone. Note que ele dá um warning indicando que o repositório ainda está vazio. Nesse caso, devemos fazer um primeiro commit apenas para validar o funcionamento.

git clone http://localhost:3000/anselme.com.br/AnselmeBlog.git
Cloning into 'AnselmeBlog'...
warning: You appear to have cloned an empty repository

A partir do meu vscode criei um arquivo ‘novo-arquivo.txt’, dei commit e push para o repositório remoto. E pronto, posso ficar tranquilo que meu repositório e minha instalação do gitea está funcionando.

Tela do VSCode onde faço commit e push para um repositório do gitea

Conclusão de Usando um “Github” onpremise

Em resumo, o Gitea proporciona às organizações uma solução poderosa para a hospedagem e gestão de repositórios de código localmente, com funcionalidades similares às do GitHub. Assim, através da simplicidade de instalação e configuração usando Docker, as empresas podem contar com um ambiente seguro e personalizado para controle de versão e colaboração em projetos. Então, a utilização do Gitea permite à equipe manter o controle dos dados e configurações sob sua própria infraestrutura, oferecendo uma alternativa robusta para quem busca uma experiência de GitHub corporativo com flexibilidade e independência.


Thiago Anselme
Thiago Anselme - Gerente de TI - Arquiteto de Soluções

Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.