Xây dựng CI/CD Pipeline cho WordPress với GitHub Actions và RunCloud (2026)

Trong quá trình phát triển WordPress chuyên nghiệp, việc tự động hóa quy trình triển khai (CI/CD) là một kỹ năng quan trọng giúp tiết kiệm thời gian và giảm thiểu sai sót. Bài viết này sẽ hướng dẫn bạn các kỹ thuật xây dựng một CI/CD pipeline hoàn chỉnh cho WordPress sử dụng GitHub Actions kết hợp với RunCloud.

CI/CD là gì và tại sao cần cho WordPress?

CI/CD (Continuous Integration / Continuous Deployment) là quy trình tự động hóa việc kiểm thử và triển khai code. Đối với WordPress, CI/CD giúp bạn:

  • Tự động kiểm tra lỗi PHP, JavaScript trên mọi thiết bị trước khi deploy
  • Đồng bộ theme và plugin từ GitHub lên server mà không cần FTP
  • Tự động flush cache LiteSpeed sau mỗi lần triển khai
  • Quản lý phiên bản code một cách chuyên nghiệp
  • Rollback nhanh chóng khi có sự cố

Nếu bạn chưa quen với các lệnh WP-CLI tự động hóa WordPress, bài viết này sẽ kết hợp WP-CLI với GitHub Actions để tạo pipeline hoàn chỉnh.

Kiến trúc CI/CD Pipeline

Pipeline của chúng ta sẽ hoạt động theo luồng sau:

Git Push (main) 
    → GitHub Actions Trigger
        → Kiểm tra PHP Syntax (PHP Lint)
        → Kiểm tra JavaScript/SCSS (ESLint, StyleLint)
        → Build assets (npm run build)
        → SSH vào RunCloud Server
            → Pull code từ GitHub
            → Chạy WP-CLI commands (cache flush, update)
            → Kiểm tra kết quả
    → Thông báo thành công/thất bại

Yêu cầu chuẩn bị

Trước khi bắt đầu, bạn cần có:

  1. Một website WordPress đã được cài đặt trên RunCloud (xem thêm hướng dẫn cài WordPress với Lando cho môi trường local)
  2. Repository GitHub chứa mã nguồn theme/plugin WordPress
  3. Quyền truy cập SSH vào server RunCloud
  4. GitHub Secrets đã được cấu hình

Bước 1: Cấu hình GitHub Secrets

Truy cập repository của bạn trên GitHub, vào Settings → Secrets and variables → Actions, thêm các secrets sau:

Secret Name Mô tả
RUNCLOUD_HOST Địa chỉ IP server RunCloud
RUNCLOUD_USER Tên user SSH (thường là runcloud)
RUNCLOUD_SSH_KEY Private key SSH (dạng PEM)
RUNCLOUD_WEBAPP_PATH Đường dẫn webapp, ví dụ /home/runcloud/webapps/cdev
WORDPRESS_PATH Đường dẫn WordPress, ví dụ /home/runcloud/webapps/cdev/htdocs

Để tạo SSH key, chạy lệnh sau trên máy local:

ssh-keygen -t ed25519 -C "github-actions-runcloud" -f ~/.ssh/runcloud_deploy

# Sau đó thêm public key vào ~/.ssh/authorized_keys trên server RunCloud
ssh-copy-id -i ~/.ssh/runcloud_deploy.pub runcloud@YOUR_SERVER_IP

Copy nội dung private key (~/.ssh/runcloud_deploy) vào GitHub Secret RUNCLOUD_SSH_KEY.

Bước 2: Tạo GitHub Actions Workflow

Tạo file .github/workflows/deploy-wordpress.yml trong repository của bạn:

name: Deploy WordPress Theme/Plugin

on:
  push:
    branches:
      - main
      - master
  workflow_dispatch:

jobs:
  quality-check:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

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

      - name: PHP Lint
        run: |
          find . -name '*.php' -not -path './vendor/*' -not -path './node_modules/*' 
            -exec php -l {} ;

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

      - name: Install dependencies
        run: npm ci

      - name: Build assets
        run: npm run build

  deploy:
    needs: quality-check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup SSH agent
        uses: webfactory/[email protected]
        with:
          ssh-private-key: ${{ secrets.RUNCLOUD_SSH_KEY }}

      - name: Add server to known hosts
        run: |
          ssh-keyscan -H ${{ secrets.RUNCLOUD_HOST }} >> ~/.ssh/known_hosts

      - name: Deploy to RunCloud
        run: |
          ssh ${{ secrets.RUNCLOUD_USER }}@${{ secrets.RUNCLOUD_HOST }} "
            cd ${{ secrets.RUNCLOUD_WEBAPP_PATH }}
            git pull origin main
          "

      - name: Run WP-CLI commands after deploy
        run: |
          ssh ${{ secrets.RUNCLOUD_USER }}@${{ secrets.RUNCLOUD_HOST }} "
            cd ${{ secrets.WORDPRESS_PATH }}
            sudo -u runcloud -i -- wp cache flush
            sudo -u runcloud -i -- wp rewrite flush
            sudo -u runcloud -i -- wp litespeed-purge all
          "

      - name: Health check
        run: |
          curl -sI https://yourdomain.com | head -n 1
          echo 'Deployment successful!'

Bước 3: Cấu hình Webhook trên RunCloud

RunCloud hỗ trợ Webhooks giúp tự động hóa các tác vụ sau khi deploy. Để cấu hình:

  1. Đăng nhập vào RunCloud Dashboard
  2. Chọn webapp WordPress của bạn
  3. Vào tab Webhooks
  4. Thêm webhook mới với các sự kiện: Deploy Successful
  5. Endpoint: URL của bạn để nhận thông báo (hoặc dùng Slack, Telegram)

Bạn cũng có thể kết hợp với Lando để kiểm thử local trước khi deploy, giúp phát hiện lỗi sớm.

Bước 4: Tự động hóa Database Backup

Một pipeline CI/CD hoàn chỉnh không thể thiếu bước backup. Thêm job sau vào workflow:

backup-database:
  runs-on: ubuntu-latest
  needs: [deploy]
  steps:
    - name: Backup WordPress Database
      uses: appleboy/[email protected]
      with:
        host: ${{ secrets.RUNCLOUD_HOST }}
        username: ${{ secrets.RUNCLOUD_USER }}
        key: ${{ secrets.RUNCLOUD_SSH_KEY }}
        script: |
          TIMESTAMP=$(date +%Y%m%d_%H%M%S)
          cd /home/runcloud/webapps/cdev/htdocs
          wp db export /home/runcloud/backups/wordpress_$TIMESTAMP.sql
          gzip /home/runcloud/backups/wordpress_$TIMESTAMP.sql
          
          # Giữ lại 7 bản backup gần nhất
          ls -t /home/runcloud/backups/wordpress_*.sql.gz | tail -n +8 | xargs -r rm

    - name: Upload backup to GitHub Artifacts
      uses: actions/upload-artifact@v4
      with:
        name: database-backup
        path: /home/runcloud/backups/

Bước 5: Tích hợp kiểm tra hiệu suất

Sau khi deploy, bạn có thể tự động kiểm tra hiệu suất website bằng cách thêm step đo thời gian phản hồi:

performance-check:
  runs-on: ubuntu-latest
  needs: [deploy]
  steps:
    - name: Measure TTFB and load time
      run: |
        echo '=== Performance Metrics ==='
        curl -o /dev/null -s -w 'TTFB: %{time_starttransfer}s
Total: %{time_total}s
Speed: %{speed_download}B/s
' 
          https://yourdomain.com/
        
        # Kiểm tra HTTP Header
        curl -sI https://yourdomain.com/ | grep -E 'x-litespeed-cache|server'

    - name: Lighthouse CI check
      uses: treosh/lighthouse-ci-action@v12
      with:
        urls: |
          https://yourdomain.com/
        budgetPath: ./lighthouse-budget.json
        uploadArtifacts: true

Bước 6: Xử lý lỗi và thông báo

Thiết lập thông báo qua Telegram hoặc Slack khi pipeline thất bại:

notify:
  runs-on: ubuntu-latest
  needs: [deploy, backup-database, performance-check]
  if: always()
  steps:
    - name: Notify via Telegram
      uses: appleboy/telegram-action@master
      with:
        to: ${{ secrets.TELEGRAM_CHAT_ID }}
        token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
        message: |
          🚀 WordPress Deployment: ${{ job.status }}
          Repository: ${{ github.repository }}
          Branch: ${{ github.ref_name }}
          Commit: ${{ github.sha }}
          Run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

Lợi ích khi sử dụng CI/CD cho WordPress

  • Tiết kiệm thời gian: Không cần thao tác thủ công qua FTP hay File Manager
  • Giảm lỗi: Code được kiểm tra tự động trước khi deploy lên production
  • Kiểm soát phiên bản: Mọi thay đổi đều được ghi lại trong Git
  • Khả năng rollback: Dễ dàng quay lại phiên bản trước với git revert
  • Teamwork: Nhiều developer có thể cùng làm việc mà không lo conflict

Kết luận

CI/CD pipeline với GitHub Actions và RunCloud là một giải pháp mạnh mẽ giúp tự động hóa quy trình phát triển WordPress. Bạn không chỉ tiết kiệm thời gian mà còn đảm bảo chất lượng code trước khi triển khai. Hãy bắt đầu với pipeline cơ bản và mở rộng dần theo nhu cầu thực tế của dự án.

Nếu bạn cần thêm thông tin về các chủ đề liên quan, đừng quên xem bài viết về tối ưu hiệu suất WordPress với LiteSpeed Cachexây dựng REST API endpoints cho WordPress.

codetot

Code Tốt - WordPress Agency. Website: codetot.vn. Operates blog chuyendev.com and khoipro.com.