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.

Crie um backup para download no MyKinsta.
Crie um backup para download no MyKinsta.

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 segredoSegredo
KINSTA_SERVER_IPProvedor, por exemplo, 12.34.56.78
KINSTA_USERNAMENome de usuário, por exemplo, kinstahelp
PASSWORDSenha
PORTAPorta, por exemplo, 12345
Informações de SSH para adicionar segredos ao GitHub.
Informações de SSH para adicionar segredos ao GitHub.

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.

Comando de terminal SSH para o seu site.
Comando de terminal SSH para o seu site.

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:

  1. Vá à sua conta do GitHub, clique na foto do seu perfil e selecione Settings.
  2. Clique em Developer settings > Personal access tokens > Tokens (classic).
  3. Clique em Generate new token > Generate new token (classic) e, em Note, dê um nome a ele (por exemplo, “Token de Implementação Kinsta”).
  4. Em Select scopes, marque repo (para controle total de repositórios privados).
  5. 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 chamado deploy, 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 branch main em seu repositório GitHub.
    • git reset --hard origin/main: Aplica essas alterações atualizando o site ativo no diretório public 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.

Este artigo foi útil?