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
on:
workflow_call:Normalmente chamado por um workflow operations.yml no repositório do projeto, com workflow_dispatch para permitir execução manual.
Inputs
| Input | Tipo | Padrão | Obrigatório | Descrição |
|---|---|---|---|---|
operation | string | -- | Sim | Operação: backup-db, backup-full, cache-flush, wp-cli |
wp-command | string | '' | Não | Comando WP-CLI (obrigatório se operation = wp-cli) |
op-item-ec2 | string | -- | Sim | Caminho do item 1Password para credenciais EC2 (ex: CI-MYPROJECT/AWS-EC2-docker-wp-myproject) |
op-item-ssh-key | string | -- | Sim | Caminho do item 1Password para chave SSH (ex: CI-MYPROJECT/SSH-docker-wp-myproject-dev-key) |
op-service-account-secret | string | 'OP_SA_MYPROJECT' | Não | Nome do secret que contém o token da service account do 1Password |
Secrets
| Secret | Descriçã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:
- Executa
make backup-dbno servidor via SSH. - Faz download do
.sqlvia rsync. - Faz upload como artifact do GitHub Actions (retenção: 30 dias).
- Remove o backup do servidor.
backup-full
Exporta banco de dados e uploads (arquivos de mídia):
- Executa
make backupno servidor via SSH. - Faz download de
.sqle.tar.gzvia rsync. - Faz upload como artifact (retenção: 30 dias).
- Remove os backups do servidor.
cache-flush
Limpa o cache Redis e WP object cache:
- Executa
make cache-flushno servidor via SSH.
wp-cli
Executa um comando WP-CLI arbitrário:
- Executa
make wp CMD='<comando>'no servidor via SSH. - 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:
- Carrega secrets do 1Password — host, usuário, pasta e chave SSH via
1password/load-secrets-action@v4. - Configura SSH — escreve a chave privada e define as opções de conexão.
- Executa a operação — backup, flush ou WP-CLI conforme o input.
- Upload de artifacts — para operações de backup.
- Cleanup — remove a chave SSH do runner (sempre executa, mesmo em falha).
Exemplo de uso
# .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: ${{ inputs.operation }}
wp-command: ${{ inputs.wp-command }}
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: inheritConfiguraçã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 servidorEC2/user— usuário SSHEC2/folder— diretório do projeto no servidor
Item SSH Key (referenciado por op-item-ssh-key):
private_key— chave SSH privada