Skip to content

Docker WP Operations

Workflow reutilizável de operações para projetos WordPress rodando em Docker no EC2. Conecta via SSH (com credenciais do 1Password) e executa Make targets para tarefas comuns de operação.

Trigger

yaml
on:
  workflow_call:

Normalmente chamado por um workflow operations.yml no repositório do projeto, com workflow_dispatch para permitir execução manual.

Inputs

InputTipoPadrãoObrigatórioDescrição
operationstring--SimOperação: backup-db, backup-full, cache-flush, wp-cli
wp-commandstring''NãoComando WP-CLI (obrigatório se operation = wp-cli)
op-item-ec2string--SimCaminho do item 1Password para credenciais EC2 (ex: CI-MYPROJECT/AWS-EC2-docker-wp-myproject)
op-item-ssh-keystring--SimCaminho do item 1Password para chave SSH (ex: CI-MYPROJECT/SSH-docker-wp-myproject-dev-key)
op-service-account-secretstring'OP_SA_MYPROJECT'NãoNome do secret que contém o token da service account do 1Password

Secrets

SecretDescrição
OP_SA_* (dinâmico)Token da service account do 1Password. O nome exato é definido pelo input op-service-account-secret

O repositório chamador deve ter um secret com o token da service account do 1Password que tenha acesso aos items referenciados por op-item-ec2 e op-item-ssh-key.

Operações disponíveis

backup-db

Exporta o banco de dados e faz download do arquivo .sql:

  1. Executa make backup-db no servidor via SSH.
  2. Faz download do .sql via rsync.
  3. Faz upload como artifact do GitHub Actions (retenção: 30 dias).
  4. Remove o backup do servidor.

backup-full

Exporta banco de dados e uploads (arquivos de mídia):

  1. Executa make backup no servidor via SSH.
  2. Faz download de .sql e .tar.gz via rsync.
  3. Faz upload como artifact (retenção: 30 dias).
  4. Remove os backups do servidor.

cache-flush

Limpa o cache Redis e WP object cache:

  1. Executa make cache-flush no servidor via SSH.

wp-cli

Executa um comando WP-CLI arbitrário:

  1. Executa make wp CMD='<comando>' no servidor via SSH.
  2. O input wp-command é obrigatório para esta operação.

Jobs

validate-inputs

Valida se a operação informada é válida e se wp-command está preenchido quando necessário.

run-operation

Executa no environment production:

  1. Carrega secrets do 1Password — host, usuário, pasta e chave SSH via 1password/load-secrets-action@v4.
  2. Configura SSH — escreve a chave privada e define as opções de conexão.
  3. Executa a operação — backup, flush ou WP-CLI conforme o input.
  4. Upload de artifacts — para operações de backup.
  5. Cleanup — remove a chave SSH do runner (sempre executa, mesmo em falha).

Exemplo de uso

yaml
# .github/workflows/operations.yml
name: Operations

on:
  workflow_dispatch:
    inputs:
      operation:
        description: Operacao a executar
        type: choice
        options:
          - backup-db
          - backup-full
          - cache-flush
          - wp-cli
      wp-command:
        description: Comando WP-CLI (apenas para wp-cli)
        type: string
        default: "plugin list"

jobs:
  ops:
    uses: middag-io/.github-private/.github/workflows/docker-wp-operations.yml@workflows-v1
    with:
      operation: $&#123;&#123; inputs.operation &#125;&#125;
      wp-command: $&#123;&#123; inputs.wp-command &#125;&#125;
      op-item-ec2: CI-MYPROJECT/AWS-EC2-docker-wp-myproject
      op-item-ssh-key: CI-MYPROJECT/SSH-docker-wp-myproject-dev-key
      op-service-account-secret: OP_SA_MYPROJECT
    secrets: inherit

Configuração do 1Password

Os items no 1Password devem ter os seguintes campos:

Item EC2 (referenciado por op-item-ec2):

  • EC2/host — hostname ou IP do servidor
  • EC2/user — usuário SSH
  • EC2/folder — diretório do projeto no servidor

Item SSH Key (referenciado por op-item-ssh-key):

  • private_key — chave SSH privada

MIDDAG Tecnologia