Git é o sistema de controle de versão mais popular na área de desenvolvimento de software. É de código aberto e mantido ativamente desde 2005 por Linus Torvalds, o famoso criador do Linux. Hoje, um número impressionante de projetos de software (incluindo os comerciais) usa o Git para gerenciamento de versão.
O Git segue uma arquitetura distribuída, tornando-o um exemplo perfeito de um DVCS (Sistema de Controle de Versão Distribuído). Usando o Git, podemos gerenciar tanto um repositório local quanto um remoto simultaneamente. Neste guia, demonstraremos como configurar uma implantação automática de um projeto Git com um VPS.
Pré-requisitos
Neste guia, haverá um repositório local e um repositório remoto no VPS. O repositório local enviará as alterações para o repositório remoto. A partir do repositório remoto, podemos enviar as alterações para a branch beta ou live . Para conseguir isso, há alguns pré-requisitos dos quais você precisa cuidar primeiro.
- Uma máquina local e um servidor remoto, ambos usando o Ubuntu como sistema operacional. Este guia mostra como configurar e instalar servidores Ubuntu.
- Ambas as máquinas estão configuradas com o Git.
Para estabelecer uma conexão segura com o VPS, usaremos SSH. Felizmente, o Git também suporta SSH como um protocolo para se conectar a repositórios remotos. Este guia explora a configuração do SSH para se conectar a servidores remotos no Ubuntu.
Configurando o VPS
No nosso servidor remoto, teremos a seguinte configuração:
- Diretório live: /var/www/dummy-domain.com
- Repositório do servidor: /var/repo/site.git
A partir da máquina local, o Git enviará as atualizações para o repositório do VPS. A partir do repositório do VPS, configuraremos um script que o Git usará para enviá-las automaticamente para o diretório live. Também é possível configurar um repositório para versões beta .
-
Criando os Repositórios
Conecte-se ao VPS e crie os locais dos repositórios:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
Em seguida, inicialize o repositório Git:
|
1 |
sudo git init --bare |
Aqui, a flag --bare descreve que não haverá arquivos de origem, apenas os componentes de controle de versão.
-
Hooks
Em seguida, configuraremos os hooks para o repositório. Todo repositório Git contém uma pasta chamada hooks. Ela contém arquivos de exemplo que servem como modelo para hooks e várias ações personalizadas.
De acordo com a documentação oficial do Git, existem três tipos de hooks:
- pre-receive: É executado assim que o servidor recebe uma solicitação de push.
- post-receive: É executado quando uma solicitação de push é concluída.
- update: Semelhante ao pre-receive. No entanto, ele é executado uma vez por branch.
A partir do local do repositório, execute o comando ls :
|
1 |
ls -l |
Altere o diretório atual para hooks:
|
1 |
cd hooks/ |
Agora, crie o script post-receive :
|
1 |
sudo nano post-receive |
Dentro do script, insira o seguinte código. Certifique-se de alterar os locais dos diretórios de acordo:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
Salve o arquivo e feche o editor. Defina o arquivo como um executável:
|
1 |
sudo chmod +x post-receive |
Agora, toda vez que um push for concluído, o Git examinará o script post-receive e colocará os arquivos no lugar correspondente.
Configurando a Máquina Local
A máquina remota está pronta para aceitar atualizações de projetos Git recebidas. Em seguida, configuraremos o repositório local para usar o VPS como o servidor Git remoto.
Vamos criar um diretório de projeto Git de exemplo:
Agora, inicialize o repositório:
|
1 |
sudo git init |
Temos que declarar o caminho remoto do repositório. Aqui, vamos nos referir ao local remoto como a branch live . Em seguida, execute o seguinte comando:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
Vamos testar. Adicionamos um script shell ao diretório do projeto:
Em seguida, adicione o arquivo ao projeto e faça um commit:
|
1 2 |
sudo git add . sudo git commit -m "commit aleatório" |
No próximo comando, enviaremos o projeto para o live servidor:
|
1 |
sudo git push live master |
O Git se conectará ao VPS usando SSH. Se a conexão SSH foi configurada para usar uma senha, o Git solicitará a senha de autenticação.
Repositório Beta
E se o projeto não for implantado em uma única etapa? Talvez ele precise de mais testes dentro de um beta diretório. Usando o método descrito até agora, podemos criar outra branch no VPS, referida como a beta branch.
-
Configurando a Branch Beta no VPS
Primeiro, precisamos criar os diretórios para o VPS. Conecte-se ao VPS e crie um diretório sob /var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
Agora, precisamos de um repositório Git que funcionará como a beta branch:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
Inicialize o repositório:
|
1 |
sudo git init --bare |
Assim como antes, implemente um post-receive script:
|
1 2 |
cd hooks sudo nano post-receive |
Depois disso, insira o seguinte código:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
Salve o arquivo e feche o editor. Marque post-receive como um arquivo executável:
|
1 |
sudo chmod +x post-receive |
-
Adicionando o Repositório Beta na Máquina Local
Agora estamos prontos para adicionar o repositório beta ao nosso repositório local. De dentro do diretório do projeto local, execute o seguinte comando Git:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
Voilà! O repositório local agora está configurado com o repositório remoto beta. Tente enviar as alterações:
|
1 2 3 |
sudo git add . sudo git commit -m "versão beta" sudo git push beta master |
-
Movendo de Beta para Live no VPS
Digamos que todas as alterações estejam acumuladas no beta repo. Como você envia as alterações para o live repo? É muito simples. Dentro do beta repo no VPS, adicionamos o live repo local. Depois, simplesmente enviamos a beta versão para o live repo.
Conecte-se ao VPS e execute os seguintes comandos:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
Depois, você pode enviar a versão beta para o live:
|
1 |
sudo git push live master |
Considerações Finais
Este guia demonstra com sucesso como configurar e usar um VPS como um repositório remoto para o seu projeto Git. O VPS pode implantar automaticamente os códigos e arquivos mais recentes sem qualquer processo complexo. Ele também pode atuar como o centro de colaboração entre várias equipes de desenvolvimento.
Com a ajuda do Git, você pode estabelecer um mecanismo simples para implantação automática. Para um gerenciamento de projeto adequado, no entanto, é recomendável usar algo como o GitLab. O guia a seguir mostra a instalação e implantação do GitLab em um VPS que gerencia múltiplos projetos. Você também pode conferir como configurar pipelines de Integração Contínua (CI) do GitLab no Ubuntu 20.04.
Boa computação!















Comentários
Nenhum comentário ainda. Seja o primeiro.