CI/CD do GitHub
Para usuários avançados, a CI/CD (Integração Contínua/Entrega Contínua, ou Implementação Contínua) do GitHub pode implementar automaticamente alterações de código no seu site na Kinsta sempre que um novo commit for enviado para o branch designado. Essa configuração permite a implementação perfeita do código a partir do seu ambiente local via SSH e GitHub actions, permitindo atualizações contínuas em seu site.
Para seguir estas etapas, você deve ter um site existente hospedado na Kinsta e uma conta no GitHub.
1. Baixe um backup do seu site
Você pode baixar um backup do seu site para configurar o repositório GitHub e trabalhar nele localmente. Como alternativa, você pode usar o DevKinsta para extrair seu site do servidor Kinsta e trabalhar nele localmente.
No MyKinsta, vá a Sites WordPress > nome do site > Backups > Download > Criar backup agora.
Quando seu backup estiver pronto, clique em Download, salve-o em seu computador local e descompacte os arquivos em uma pasta.
2. Configure o repositório GitHub
Abra a pasta que contém os arquivos do seu site em seu editor de código preferido. Para evitar o upload desnecessário de arquivos essenciais de WordPress, uploads de mídia ou informações confidenciais, adicione um arquivo .gitignore ao diretório raiz do seu projeto. Você pode usar um template .gitignore padrão de WordPress, copiar seu conteúdo e salvá-lo para garantir que somente os arquivos essenciais sejam rastreados.
Crie um repositório GitHub e envie os arquivos do seu site para o GitHub.
3. Configure segredos do GitHub para a Kinsta
Para automatizar as implementações do GitHub para a Kinsta, você precisa dos principais detalhes de SSH, incluindo seu nome de usuário, senha, porta e endereço IP. Como eles são confidenciais, você deve armazená-los de forma segura como GitHub Secrets.
No GitHub, vá para seu repositório, clique em Settings > Secrets and variables > Actions > New repository secret.
Adicione os seguintes segredos usando os detalhes de SFTP/SSH da página Informações do seu site no MyKinsta:
Nome do segredo | Segredo |
KINSTA_SERVER_IP | Provedor, por exemplo, 12.34.56.78 |
KINSTA_USERNAME | Nome de usuário, por exemplo, kinstahelp |
PASSWORD | Senha |
PORTA | Porta, por exemplo, 12345 |
4. Crie um repositório Git vazio na Kinsta
Um repositório Git vazio é um destino remoto para onde o GitHub enviará o seu código. Esse repositório é um repositório central projetado para receber e armazenar seu código.
Abra um novo terminal e acesse o servidor Kinsta via SSH usando o Comando de terminal SSH na página Informações do seu site no MyKinsta.
Digite a senha do seu site da página Informações no MyKinsta e copie o Caminho dos detalhes do ambiente.
Navegue até a pasta privada no seu servidor, substituindo public
por private
e your-site
pelo nome da pasta do caminho do seu site:
cd /www/your-site/private
Se a pasta privada não existir, use o seguinte comando para criá-la:
mkdir -p /www/your-site/private
Crie o repositório Git vazio com o seguinte comando, substituindo your-repo.git
pelo nome do seu repositório GitHub:
git init --bare your-repo.git
5. Configure o hook post-receive
O hook post-receive
implanta automaticamente o código em seu site ativo sempre que novas alterações são enviadas para o branch main
no GitHub.
Navegue até o diretório de hooks em seu repositório Git vazio, substituindo your-site
pelo nome da pasta do seu site e your-repo
pelo nome do seu repositório GitHub:
cd /www/your-site/private/your-repo.git/hooks
Crie e edite o hook post-receive
:
nano post-receive
Adicione o seguinte script ao arquivo post-receive
. Este verifica o código mais recente no diretório public
do seu site ativo:
#!/bin/bash
TARGET="/www/your-site/public"
GIT_DIR="/www/your-site/private/your-repo.git"
while read oldrev newrev ref
do
BRANCH=$(git rev-parse --symbolic --abbrev-ref $ref)
if [[ $BRANCH == "main" ]];
then
echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
else
echo "Ref $ref received. Doing nothing: only the main branch may be deployed on this server."
fi
done
O script implementa o código apenas do branch main
. A variável TARGET
aponta para o diretório em que os arquivos do seu site ativo estão localizados e a variável GIT_DIR
aponta para o repositório Git vazio.
Salve e saia do arquivo pressionando Ctrl + X, depois Y e Enter.
Torne o script executável para que possa ser executado automaticamente após cada envio:
chmod +x post-receive
6. Gere e adicione um token de acesso pessoal (PAT) do GitHub
Ao fazer push de código para o GitHub via SSH, você deve usar um PAT para se autenticar. Esse token permite que o GitHub aceite seus envios de forma segura.
Para gerar o PAT:
- Vá à sua conta do GitHub, clique na foto do seu perfil e selecione Settings.
- Clique em Developer settings > Personal access tokens > Tokens (classic).
- Clique em Generate new token > Generate new token (classic) e, em Note, dê um nome a ele (por exemplo, “Token de Implementação Kinsta”).
- Em Select scopes, marque repo (para controle total de repositórios privados).
- Clique em Generate token e copie o token. (Você não poderá vê-lo novamente).
Execute o seguinte comando para adicionar seu repositório GitHub como remoto, substituindo your-username
pelo seu nome de usuário do GitHub, YOUR_PERSONAL_ACCESS_TOKEN
pelo PAT que você acabou de gerar e your-repo
pelo nome do seu repositório GitHub:
git remote add origin https://your-username:[email protected]/your-username/your-repo.git
7. Crie o fluxo de trabalho do GitHub Actions
Esse fluxo de trabalho implementa as alterações na Kinsta automaticamente sempre que você faz push para o branch main
. Para automatizar a implementação, você precisa definir como a implementação ocorrerá usando um arquivo YAML.
No seu repositório GitHub, crie um novo diretório chamado .github/workflows
dentro desse diretório, crie um novo arquivo chamado deploy.yml
e adicione o seguinte conteúdo ao arquivo, substituindo your-site
pelo nome da pasta do caminho no seu site na Kinsta e your-repo
pelo nome do seu repositório GitHub:
name: Deploy to Kinsta
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to Kinsta via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.KINSTA_SERVER_IP }}
username: ${{ secrets.KINSTA_USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
cd /www/your-site/private/your-repo.git # Navigate to the bare Git repository on Kinsta
git --work-tree=/www/your-site/public --git-dir=/www/your-site/private/your-repo.git fetch origin main # Fetch the latest changes from GitHub
git --work-tree=/www/your-site/public --git-dir=/www/your-site/private/your-repo.git reset --hard origin/main # Deploy changes to the live site
Esse fluxo de trabalho faz o seguinte:
- Acionamento: O fluxo de trabalho é acionado sempre que o código é enviado para o branch
main
do seu repositório GitHub. - Jobs: O fluxo de trabalho contém um
job
chamadodeploy
, que é executado em uma máquina virtual do Ubuntu (ubuntu-latest
). - Código de checkout: Este usa a ação
actions/checkout@v2
para extrair o código mais recente do seu repositório GitHub. - Implementação na Kinsta via SSH: O
appleboy/ssh-action
é usado para se conectar com segurança ao seu servidor Kinsta via SSH usando os segredos que você configurou (IP do servidor, nome de usuário, senha e porta). O script nesta etapa executa os seguintes comandos:cd /www/your-site/private/your-repo.git
: Navega até o repositório Git vazio no seu servidor Kinsta.git fetch origin main
: Obtém as alterações mais recentes do branchmain
em seu repositório GitHub.git reset --hard origin/main
: Aplica essas alterações atualizando o site ativo no diretóriopublic
onde o WordPress está hospedado.
8. Teste o fluxo de trabalho
Depois de configurar o fluxo de trabalho, você pode testá-lo fazendo uma pequena alteração no branch main
do seu repositório GitHub. Sempre que você fizer push de uma alteração, o GitHub Actions acionará automaticamente a implementação, extraindo a versão mais recente do seu código e implementando-a no seu site ativo na Kinsta.
Você pode monitorar o status da sua implementação acessando a aba Actions no seu repositório GitHub. Se o fluxo de trabalho encontrar erros, você verá registros detalhados para ajudá-lo a identificar e corrigir os problemas.