WordPress Deploy Automation
Deploy de Temas & Plugins
Sincronize automaticamente do Local by Flywheel para produção com deploy inteligente.
+
Adicionar Projeto
📦 Novo Projeto WordPress
🔄 Script de Sincronização
Sincroniza alterações do Local para o repositório Git
#!/bin/bash
# ================================
# WordPress Theme/Plugin Sync Script
# PeepConnect AutoDeploy
# ================================
# Configurações (edite conforme necessário)
PROJECT_NAME="meu-tema"
LOCAL_PATH="$HOME/Local Sites/site-teste/app/public/wp-content/themes/$PROJECT_NAME"
REPO_PATH="$HOME/Dev/repos/$PROJECT_NAME"
# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}🔄 Sincronizando $PROJECT_NAME...${NC}"
# Verifica se o caminho do Local existe
if [ ! -d "$LOCAL_PATH" ]; then
echo -e "${RED}❌ Erro: Caminho do Local não encontrado: $LOCAL_PATH${NC}"
exit 1
fi
# Sincroniza arquivos (excluindo node_modules e .git)
rsync -av --delete \
--exclude 'node_modules' \
--exclude '.git' \
--exclude '*.log' \
--exclude '.DS_Store' \
--exclude 'package-lock.json' \
"$LOCAL_PATH/" "$REPO_PATH/"
echo -e "${GREEN}✅ Arquivos sincronizados!${NC}"
# Entra no repositório e faz commit
cd "$REPO_PATH"
# Verifica se há mudanças
if [ -n "$(git status --porcelain)" ]; then
echo -e "${YELLOW}📝 Detectadas alterações, fazendo commit...${NC}"
git add -A
# Mensagem de commit (pode ser passada como argumento)
COMMIT_MSG="${1:-Update: $(date '+%Y-%m-%d %H:%M')}"
git commit -m "$COMMIT_MSG"
echo -e "${BLUE}🚀 Enviando para GitHub...${NC}"
git push origin main
echo -e "${GREEN}✅ Deploy disparado automaticamente!${NC}"
else
echo -e "${YELLOW}ℹ️ Nenhuma alteração detectada.${NC}"
fi
⚡ Deploy Rápido (Manual)
Para deploy manual via FTP/SFTP
#!/bin/bash
# ================================
# WordPress Quick Deploy Script
# PeepConnect AutoDeploy
# ================================
# Configurações
PROJECT_NAME="meu-tema"
LOCAL_PATH="$HOME/Local Sites/site-teste/app/public/wp-content/themes/$PROJECT_NAME"
REMOTE_HOST="ftp.seudominio.com"
REMOTE_USER="usuario_ftp"
REMOTE_PATH="/public_html/wp-content/themes/$PROJECT_NAME"
USE_SFTP=false # true para SFTP, false para FTP
# Solicita senha se não estiver em variável de ambiente
if [ -z "$FTP_PASS" ]; then
echo -n "🔐 Senha FTP: "
read -s FTP_PASS
echo ""
fi
echo "🚀 Iniciando deploy de $PROJECT_NAME..."
if [ "$USE_SFTP" = true ]; then
# Deploy via SFTP
sftp -b - $REMOTE_USER@$REMOTE_HOST << EOF
lcd $LOCAL_PATH
cd $REMOTE_PATH
put -r .
bye
EOF
else
# Deploy via lftp (FTP com mirror)
lftp -c "
set ftp:ssl-allow no;
open -u $REMOTE_USER,$FTP_PASS $REMOTE_HOST;
mirror -R --delete --exclude .git/ --exclude node_modules/ $LOCAL_PATH $REMOTE_PATH;
bye
"
fi
echo "✅ Deploy concluído!"
echo "🌐 Verifique: https://seudominio.com"
🔧 GitHub Actions Workflow
Coloque em .github/workflows/deploy.yml
name: 🚀 WordPress Deploy
on:
push:
branches: [main]
workflow_dispatch:
inputs:
deploy_message:
description: 'Deploy message'
required: false
default: 'Manual deploy'
env:
PROJECT_TYPE: theme # 'theme' ou 'plugin'
PROJECT_NAME: meu-tema
jobs:
deploy:
name: 🌐 Deploy to WordPress
runs-on: ubuntu-latest
steps:
- name: 📦 Checkout
uses: actions/checkout@v4
- name: 📋 Display info
run: |
echo "🚀 Deploying ${{ env.PROJECT_NAME }}"
echo "📅 Date: $(date)"
echo "📝 Commit: ${{ github.sha }}"
- name: 🧹 Prepare files
run: |
# Remove dev files
rm -rf node_modules .git .gitignore
rm -f package-lock.json composer.lock
rm -f *.log .DS_Store .env*
echo "✅ Files prepared"
- name: 📤 Deploy via FTP
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
with:
server: ${{ secrets.FTP_HOST }}
username: ${{ secrets.FTP_USER }}
password: ${{ secrets.FTP_PASS }}
port: ${{ secrets.FTP_PORT || 21 }}
local-dir: ./
server-dir: /wp-content/${{ env.PROJECT_TYPE }}s/${{ env.PROJECT_NAME }}/
exclude: |
**/.git*
**/node_modules/**
**/*.md
**/tests/**
- name: 🧹 Clear WordPress Cache (optional)
if: success()
continue-on-error: true
run: |
# Trigger cache clear via WP REST API
curl -X POST "${{ secrets.WP_SITE_URL }}/wp-json/autodeploy/v1/clear-cache" \
-H "Authorization: Bearer ${{ secrets.WP_API_KEY }}" \
|| echo "Cache clear skipped"
- name: ✅ Success
run: |
echo "=========================================="
echo "🎉 DEPLOY SUCCESSFUL!"
echo "=========================================="
echo "🌐 Site: ${{ secrets.WP_SITE_URL }}"
echo "📦 ${{ env.PROJECT_TYPE }}: ${{ env.PROJECT_NAME }}"
echo "=========================================="
📋 Histórico de Deploys
📭
Nenhum deploy registrado ainda.
Configure um projeto e faça seu primeiro deploy!