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ó:
- 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)
- Repository GitHub chứa mã nguồn theme/plugin WordPress
- Quyền truy cập SSH vào server RunCloud
- 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:
- Đăng nhập vào RunCloud Dashboard
- Chọn webapp WordPress của bạn
- Vào tab Webhooks
- Thêm webhook mới với các sự kiện:
Deploy Successful - 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 Cache và xây dựng REST API endpoints cho WordPress.