Auto Deploy บน Plesk ด้วย GitHub Actions เป็นวิธีที่ทรงพลังในการปรับปรุงกระบวนการพัฒนาและการจัดการเซิร์ฟเวอร์แบบอัตโนมัติ ด้วยการเชื่อมต่อ GitHub Actions กับ Plesk นักพัฒนาสามารถปล่อยโค้ดอัตโนมัติไปยังเซิร์ฟเวอร์เมื่อมีการอัปเดตใน Repository แค่ Push Code เดียว
GitHub Actions คืออะไร?
GitHub Actions เป็นบริการ CI/CD ที่รวมอยู่ใน GitHub ช่วยให้สร้าง Workflow อัตโนมัติสำหรับการ Build, Test และ Deploy โค้ด เมื่อมีเหตุการณ์ที่กำหนด เช่น Push โค้ด หรือสร้าง Pull Request โดย Workflow ทำงานบนเซิร์ฟเวอร์ของ GitHub ไม่ต้องจัดการเซิร์ฟเวอร์เพิ่มเติม
ขั้นตอนที่ 1: สร้าง SSH Key สำหรับ Deploy
บนเซิร์ฟเวอร์ Plesk ใช้คำสั่งสร้าง SSH Key:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/deploy_key -N ""
cat ~/.ssh/deploy_key.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ขั้นตอนที่ 2: เก็บ SSH Private Key ใน GitHub Secrets
ไปที่ GitHub Repository → Settings → Secrets and variables → Actions → New repository secret แล้วเพิ่ม Secrets ต่างๆ ดังนี้:
DEPLOY_KEY— SSH Private Key ที่สร้างในขั้นตอนที่ 1DEPLOY_HOST— IP Address หรือ Hostname ของ Plesk ServerDEPLOY_USER— ชื่อ User SSHDEPLOY_PATH— เส้นทาง Directory บนเซิร์ฟเวอร์
ขั้นตอนที่ 3: สร้าง GitHub Actions Workflow
สร้างไฟล์ .github/workflows/deploy.yml ในโปรเจกต์:
name: Deploy to Plesk
on:
push:
branches:
- main
jobs:
build:
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'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
- name: Build application
run: npm run build
deploy:
needs: build
runs-on: ubuntu-latest
if: success()
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy to Plesk Server via SSH
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
key: ${{ secrets.DEPLOY_KEY }}
script: |
cd ${{ secrets.DEPLOY_PATH }}
git pull origin main
npm install --production
npm run build
pm2 restart app
แบบที่ 2: ใช้ rsync แทน SSH Command
หากต้องการส่งไฟล์ผ่าน rsync สามารถแก้ไข deploy job ดังนี้:
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts
- name: Deploy using Rsync
run: |
rsync -avz \
-e "ssh -i ~/.ssh/deploy_key" \
--exclude '.git' \
--delete \
./ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:${{ secrets.DEPLOY_PATH }}/
ประโยชน์ของ CI/CD Pipeline กับ Plesk
- ความเร็ว: Deploy อัตโนมัติหลัง Push Code ไม่ต้องรอคน
- ความปลอดภัย: SSH Key เก็บใน GitHub Secrets ไม่เปิดเผยใน Code
- Test ก่อน Deploy: Workflow รัน Test อัตโนมัติก่อน Deploy หาก Test ไม่ผ่านจะไม่ Deploy
- ติดตามสถานะ: ดู Logs ใน GitHub Actions แต่ละ Run
CI/CD Pipeline บน ผู้ให้บริการโฮสติ้ง Cloud VPS
หากคุณกำลังมองหาเซิร์ฟเวอร์ที่มีประสิทธิภาพสูงสำหรับการรัน Plesk และ CI/CD Pipeline ผู้ให้บริการโฮสติ้ง Cloud VPS เป็นทางเลือกที่ยอดเยี่ยม ด้วย SSD ความเร็วสูง RAM เพียงพอ และการสนับสนุนจากทีมงานตลอด 24/7 ทำให้คุณสามารถ Build และ Deploy ได้อย่างราบรื่นและเสถียร
สนใจใช้บริการ Cloud VPS สำหรับ DevOps Pipeline สอบถามได้ที่ de.co.th
