Apoya mi contenido: 

Tabla de contenido

Cómo configurar CI/CD con GitHub Actions para proyectos React y WordPress

Automatizar pruebas, build y despliegues reduce errores y acelera entregas. Con GitHub Actions puedes montar un pipeline de CI/CD para React y WordPress en minutos, usando workflows versionados en tu repositorio.


CI/CD para React (Vite/CRA/Next como SPA)

Estructura del workflow

Crea .github/workflows/ci-react.yml:

name: CI - React

on:
  pull_request:
  push:
    branches: [main]

jobs:
  test-build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: Install
        run: npm ci

      - name: Lint & Tests
        run: |
          npm run lint --if-present
          npm test --if-present -- --ci --watchAll=false

      - name: Build
        run: npm run build

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: build
          path: |
            dist
            build

Deploy automático a Vercel

Añade .github/workflows/deploy-vercel.yml y configura VERCEL_TOKEN, VERCEL_ORG_ID, VERCEL_PROJECT_ID en Repository > Settings > Secrets:

name: CD - React to Vercel

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: 'npm' }
      - run: npm ci && npm run build
      - name: Deploy
        run: |
          npm i -g vercel
          vercel pull --yes --environment=production --token=$VERCEL_TOKEN
          vercel deploy --prod --token=$VERCEL_TOKEN
        env:
          VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}

Deploy estático por S3/CloudFront (opcional)

Para sitios estáticos (Vite/CRA), sube dist/ a S3 y purga CDN:

name: CD - React to S3

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions: { id-token: write, contents: read }
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: 'npm' }
      - run: npm ci && npm run build
      - name: Configure AWS
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
          aws-region: us-east-1
      - name: Sync to S3
        run: aws s3 sync dist s3://mi-bucket --delete
      - name: Invalidate CloudFront
        run: aws cloudfront create-invalidation --distribution-id ${{ secrets.DIST_ID }} --paths "/*"

CI/CD para WordPress

1) Plugins o temas (repo propio) con pruebas, build y codestandards

Workflow .github/workflows/wp-ci.yml validando PHP y WP Coding Standards:

name: CI - WordPress Theme/Plugin

on:
  pull_request:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
          coverage: none
          tools: composer, wp, phpcs

      - name: Install deps
        run: composer install --no-interaction --no-progress

      - name: Lint PHP (PHPCS)
        run: vendor/bin/phpcs --standard=WordPress --warning-severity=0 .

      - name: Unit tests (PHPUnit) -- opcional
        run: vendor/bin/phpunit --testsuite unit --colors=always || true

2) Despliegue del tema/plugin a un servidor (SFTP + WP-CLI)

Perfecto para sitios gestionados en Hostinger, cPanel o VPS. Añade secretos: SFTP_HOST, SFTP_USER, SFTP_PASS, SFTP_PATH.

name: CD - Deploy Theme via SFTP

on:
  push:
    branches: [main]
    paths:
      - 'wp-content/themes/mi-tema/**'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Zip theme
        run: |
          cd wp-content/themes
          zip -r mi-tema.zip mi-tema -x "**/*.map" "**/node_modules/**" "**/.git/**"

      - name: Upload via SFTP
        uses: SamKirkland/FTP-Deploy-Action@v4
        with:
          server: ${{ secrets.SFTP_HOST }}
          username: ${{ secrets.SFTP_USER }}
          password: ${{ secrets.SFTP_PASS }}
          local-dir: wp-content/themes/mi-tema/
          server-dir: ${{ secrets.SFTP_PATH }}/wp-content/themes/mi-tema/

      - name: Clear cache (opcional)
        run: |
          echo "Purgar cachés del hosting/LSCache aquí si aplica"

3) Despliegue a WordPress.org (plugins/temas públicos)

Si publicas en el directorio oficial usa SVN con un action dedicado. Ejemplo para plugins (requiere SVN_URL, SVN_USERNAME, SVN_PASSWORD):

name: Release to WordPress.org

on:
  push:
    tags:
      - 'v*.*.*'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 0 }

      - name: Build assets (si aplica)
        run: npm ci && npm run build || true

      - name: Deploy
        uses: 10up/action-wordpress-plugin-deploy@stable
        with:
          svn_username: ${{ secrets.SVN_USERNAME }}
          svn_password: ${{ secrets.SVN_PASSWORD }}
          slug: mi-plugin

4) Copia de BD y media en workflows (staging → producción)

En VPS/SSH puedes ejecutar WP-CLI para mantenimiento y migraciones:

# Ejemplo de comandos que puedes invocar por SSH (auto):
wp maintenance-mode activate
wp plugin update --all
wp search-replace "staging.midominio.com" "midominio.com" --all-tables --precise
wp cache flush
wp maintenance-mode deactivate

Buenas prácticas de CI/CD

  • Principio de mínimo secreto: usa Actions secrets y/o OIDC con roles temporales.
  • Ambientes separados: dev → staging → prod con reglas de aprobación en PRs.
  • Artefactos inmutables: compila en CI y despliega el artefacto (no recompiles en prod).
  • Smoke tests post-deploy: verifica ruta /health, homepage y API críticas.
  • Observabilidad: guarda logs de Action y añade notificaciones (Slack/Discord).

Checklist rápido

  • ✓ Workflows separados: CI (tests/lint) y CD (deploy).
  • ✓ Cache de dependencias (actions/setup-node, Composer).
  • ✓ Secrets configurados (tokens, SFTP/SSH, claves API).
  • ✓ Rollback sencillo (mantén release anterior o usa versionado de artefactos).

Conclusión

Con GitHub Actions puedes estandarizar CI/CD tanto en React como en WordPress. Empieza con el pipeline mínimo (lint, tests, build) y añade despliegue a Vercel, S3 o SFTP/SSH según tu escenario. La automatización te dará entregas más rápidas, seguras y repetibles.

👉 ¿Quieres que montemos tu pipeline de CI/CD (React, WordPress, VPS o serverless) y lo dejemos listo para producción?
Contáctanos aquí.

¡Comunícate con nosotros!

Ads Blocker Image Powered by Code Help Pro

Bloqueador de anuncios detectado!!!

 Por favor, apóyanos desactivando este bloqueador de anuncios para seguir creando contenido que te gusta 🙏🏼

Powered By
100% Free SEO Tools - Tool Kits PRO