Auto Deploy WordPress Theme/Plugin ผ่าน GitHub Actions ไปยัง Plesk

การ Auto Deploy WordPress Theme หรือ Plugin ไปยัง Plesk ด้วย GitHub Actions เป็นหนึ่งในวิธีที่สะดวกที่สุด ช่วยให้ทีมพัฒนา Deploy Code โดยไม่ต้องเข้า Server หรือ Panel ด้วยตนเอง เพียงแค่ Push Code ไปยัง GitHub ก็ทำการ Deploy ได้อัตโนมัติ

ทำไมต้อง Auto Deploy WordPress Theme/Plugin?

  • ลดความซับซ้อน: Deploy เดียวกันไปหลาย Server ไม่ต้องทำซ้ำหลายครั้ง
  • ลดความผิดพลาด: ไม่ลืม Deploy ไป Staging หรือ Production
  • ประหยัดเวลา: ไม่ต้องเข้า Plesk Panel หรือ SSH ด้วยตนเอง
  • Version Control: ติดตามได้ว่า Deploy มาจาก Code Version ไหน

ขั้นตอนที่ 1: สร้าง SSH Key บน Server

เข้า SSH ที่ Server Plesk แล้วสร้าง SSH Key:

ssh-keygen -t ed25519 -f ~/.ssh/github_deploy -N ""
cat ~/.ssh/github_deploy.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

คัดลอก Private Key เพื่อเก็บใน GitHub Secrets:

cat ~/.ssh/github_deploy

ขั้นตอนที่ 2: เพิ่ม Secrets ใน GitHub

GitHub Repository → Settings → Secrets and variables → Actions → New repository secret เพิ่ม Secrets:

  • DEPLOY_PRIVATE_KEY — SSH Private Key
  • SERVER_IP — IP ของ Plesk Server
  • PLESK_USER — Username สำหรับ SSH

ขั้นตอนที่ 3: GitHub Actions Workflow สำหรับ Deploy WordPress Theme

สร้างไฟล์ .github/workflows/deploy-theme.yml:

name: Deploy WordPress Theme to Plesk

on:
  push:
    branches:
      - main
    paths:
      - 'theme/**'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3

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

      - name: Install and Build Assets
        run: |
          npm ci
          npm run build

      - name: Setup SSH
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.DEPLOY_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
          chmod 600 ~/.ssh/id_ed25519
          ssh-keyscan -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts

      - name: Deploy Theme with rsync
        run: |
          rsync -avz --delete theme/ \
            ${{ secrets.PLESK_USER }}@${{ secrets.SERVER_IP }}:~/wordpress/wp-content/themes/my-theme/

      - name: Post-Deploy WP-CLI Commands
        run: |
          ssh ${{ secrets.PLESK_USER }}@${{ secrets.SERVER_IP }} << 'EOF'
          cd ~/wordpress
          wp cache flush --allow-root
          wp theme activate my-theme --allow-root
          EOF

Workflow สำหรับ Deploy WordPress Plugin

name: Deploy WordPress Plugin to Plesk

on:
  push:
    branches:
      - main
    paths:
      - 'plugin/**'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3

      - name: Setup PHP + Composer Cache
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.1'

      - name: Cache Composer
        uses: actions/cache@v3
        with:
          path: ~/.composer/cache
          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}

      - name: Install Composer Dependencies
        run: composer install --no-dev --optimize-autoloader

      - name: Setup SSH
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.DEPLOY_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
          chmod 600 ~/.ssh/id_ed25519
          ssh-keyscan -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts

      - name: Deploy Plugin with rsync
        run: |
          rsync -avz --delete plugin/ \
            ${{ secrets.PLESK_USER }}@${{ secrets.SERVER_IP }}:~/wordpress/wp-content/plugins/my-plugin/

      - name: Activate Plugin and Flush Cache
        run: |
          ssh ${{ secrets.PLESK_USER }}@${{ secrets.SERVER_IP }} << 'EOF'
          cd ~/wordpress
          wp plugin activate my-plugin --allow-root
          wp cache flush --allow-root
          EOF

Best Practices สำหรับ Auto Deploy WordPress

  • ใช้ Branch Strategy: Deploy เฉพาะจาก main หรือ release branch
  • Test ก่อน Deploy: ตรวจสอบ PHP Syntax และ WordPress Compatibility
  • Backup ก่อน Deploy: สร้าง Backup Database เพื่อป้องกัน
  • Monitor Post-Deploy: ตรวจสอบ Error Log หลัง Deploy
  • WP-CLI Post-Tasks: ล้าง Cache และ Activate Theme/Plugin อัตโนมัติ

Auto Deploy WordPress กับ ผู้ให้บริการโฮสติ้ง Cloud VPS

สำหรับผู้ใช้ ผู้ให้บริการโฮสติ้ง Cloud VPS การตั้งค่า GitHub Actions จะเหมือนกัน เพียงเปลี่ยนค่า Secret เป็น IP Address และ Credentials ของ Plesk Server บน Cloud VPS ของคุณ Plesk Control Panel รองรับ SSH และ Git Workflow ครบวงจร

สนใจใช้บริการ Cloud VPS สอบถามได้ที่ de.co.th