Como configurar um pipeline CI/CD simples com GitHub Actions para deploy no VPS
Olá, querido(a) desenvolvedor(a)!
Seja bem-vindo(a) ao seu primeiro passo rumo à automação e produtividade no mundo do desenvolvimento. Aqui, na GeHost, acreditamos que todo projeto merece um caminho claro, simples e humano — e é exatamente isso que vamos construir juntos hoje.
Imagine: você faz um commit no GitHub, e em poucos segundos, seu site é atualizado automaticamente no servidor. Sem precisar se lembrar de enviar arquivos manualmente. Isso é o que chamamos de CI/CD — Continuos Integration e Continuous Deployment. E o melhor? Você pode fazer isso com ferramentas gratuitas e poderosas, como o GitHub Actions.
Este guia vai te mostrar, passo a passo, como configurar um pipeline simples para deploy no seu VPS (servidor dedicado ou dedicado compartilhado), mesmo que você seja novo nisso. Vamos lá?
Pré-requisitos: o que você precisa ter
- Um repositório no GitHub com seu projeto (HTML, CSS, JS, PHP, etc.).
- Um servidor VPS com acesso SSH (seu servidor pode ser da GeHost ou de outra empresa).
- Chave SSH pública gerada no seu computador (vamos usar para autenticar o acesso).
- Permissão de acesso ao servidor via SSH (usuário e senha ou chave).
Dica do Sensei: Se você não tem um VPS ainda, pode começar com um plano de hospedagem da GeHost (como o Plus ou Médio), que já inclui acesso ao cPanel e FTP. Mas para CI/CD com GitHub Actions, é melhor ter um VPS com SSH ativado.
Passo 1: Gerar uma chave SSH no seu computador
Abra o terminal (ou Git Bash no Windows) e digite:
ssh-keygen -t ed25519 -C "seu-email@dominio.com"
Pressione Enter em todos os prompts para aceitar os valores padrão. Isso criará duas chaves:
~/.ssh/id_ed25519— sua chave privada (não compartilhe!)~/.ssh/id_ed25519.pub— sua chave pública (vamos usar isso no servidor)
Abra a chave pública com:
cat ~/.ssh/id_ed25519.pub
Copie todo o conteúdo (começa com ssh-ed25519 e termina com seu e-mail).
Passo 2: Adicionar a chave pública ao seu VPS
Entre no seu servidor via SSH (usando o terminal ou cliente como PuTTY). Você pode usar o painel do seu provedor (como o painel da GeHost) para acessar o servidor.
Depois de logado, vá para o diretório do usuário (geralmente /home/seu-usuario) e crie a pasta .ssh:
mkdir -p ~/.ssh
Abra o arquivo authorized_keys com um editor de texto (como nano):
nano ~/.ssh/authorized_keys
Cole a chave pública que você copiou anteriormente. Salve com Ctrl + O, depois Enter, e saia com Ctrl + X.
Defina as permissões corretas:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Pronto! Agora seu servidor aceita conexões SSH com a chave pública.
Passo 3: Criar um arquivo de pipeline no GitHub
No seu repositório no GitHub, crie uma nova pasta chamada .github/workflows. Dentro dela, crie um arquivo chamado deploy.yml.
Abra esse arquivo e cole o seguinte conteúdo:
name: Deploy to VPS
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /home/$USERNAME/public_html
git pull origin main
echo "Deploy realizado com sucesso!"
Essa é a base do seu pipeline. Ele vai rodar sempre que você fizer um push no branch main.
Passo 4: Adicionar as credenciais no GitHub
Volte ao seu repositório no GitHub. Vá em Settings → Secrets and variables → Actions.
Clique em New repository secret e crie três variáveis:
- HOST: o IP ou domínio do seu servidor (ex:
123.45.67.89ouseu-servidor.com.br) - USERNAME: o nome do usuário SSH no servidor (ex:
meuusuario) - SSH_KEY: a chave privada (não a pública!) gerada anteriormente. Copie tudo, incluindo
-----BEGIN ED25519 PRIVATE KEY-----e-----END ED25519 PRIVATE KEY-----.
Atenção: A chave privada deve ser copiada exatamente como é — sem quebras de linha extras, sem espaços. Se tiver erro, o deploy falhará.
Importante: Nunca compartilhe sua chave privada. O GitHub armazena essas variáveis com segurança. Se você precisar, pode gerar uma nova chave a qualquer momento.
Passo 5: Testar o pipeline
Volte ao seu repositório e faça um pequeno commit (ex: alterar um texto no index.html). Faça o push no branch main.
Vá para a aba Actions no GitHub. Você verá o pipeline rodando. Espere alguns segundos e veja se aparece "Deploy realizado com sucesso!".
Depois, acesse seu site. Se o conteúdo foi atualizado, parabéns! Você acabou de automatizar seu deploy com CI/CD.
Passo 6: (Opcional) Adicionar um webhook para atualizar o site automaticamente
Se você quiser que o site seja atualizado sempre que o código mudar, você pode configurar o servidor para aceitar o git pull diretamente. No seu servidor, no diretório do site (ex: /home/seu-usuario/public_html), execute:
git init
git config user.name "seu-nome"
git config user.email "seu-email@dominio.com"
git remote add origin git@github.com:seu-usuario/seu-repositorio.git
git fetch origin
git checkout main
Assim, o git pull no pipeline funcionará corretamente.
Conclusão: você está no caminho certo
Parabéns, Sensei do futuro! Você acabou de construir um pipeline de CI/CD com GitHub Actions, deploy automático no seu VPS e tudo isso com ferramentas gratuitas e seguras.
Se precisar de ajuda com o acesso ao servidor, verificação de permissões ou configuração de SSH, lembre-se: o suporte da GeHost está aqui para você — e está incluso nos primeiros 30 dias após a entrega.
Seu projeto está no ar, seu tempo está livre, e seu código está mais poderoso do que nunca.
Com carinho,
Sensei da GeHost
— Raphael Neves Koga, dono da G e Soluções e Eventos LTDA (CNPJ: 46.647