# CI/CD Pipeline คืออะไร? คู่มือตั้งค่า GitHub Actions สำหรับ Laravel & Next.js ปี 2026
ในการพัฒนาซอฟต์แวร์ยุคใหม่ ความเร็วและความน่าเชื่อถือในการ Deploy คือปัจจัยสำคัญที่แยกระหว่างทีม Dev ที่ทำงานได้อย่างมืออาชีพกับทีมที่ยังติดอยู่กับกระบวนการ Manual ที่เสียเวลาและเสี่ยงต่อ Human Error
CI/CD Pipeline คือกุญแจสำคัญที่ช่วยให้ทีมพัฒนาสามารถ Release Feature ใหม่ได้เร็วขึ้น ปลอดภัยขึ้น และสม่ำเสมอขึ้น โดยในบทความนี้เราจะโฟกัสที่การตั้งค่า GitHub Actions ซึ่งเป็นเครื่องมือฟรีและทรงพลังที่เหมาะกับทีมพัฒนา SME ไทยที่ใช้ Laravel หรือ Next.js เป็นหลัก
คุณจะได้เรียนรู้ว่า CI/CD คืออะไร มีขั้นตอนอะไรบ้าง และวิธีตั้งค่า GitHub Actions แบบ Step-by-step สำหรับโปรเจกต์จริง
CI/CD คืออะไร?
CI (Continuous Integration) คือกระบวนการรวม Code จากนักพัฒนาหลายคนเข้าด้วยกันบ่อยๆ และทดสอบอัตโนมัติทุกครั้งที่มีการ Push Code ขึ้น Repository เพื่อตรวจจับ Bug ได้เร็วขึ้น
CD (Continuous Delivery / Continuous Deployment) คือกระบวนการนำ Code ที่ผ่านการทดสอบแล้วไป Deploy บน Server โดยอัตโนมัติ ทำให้ลดเวลาระหว่าง Code สำเร็จกับ User ได้ใช้งานจริง
ความแตกต่างระหว่าง Continuous Delivery และ Continuous Deployment:
ประโยชน์ของ CI/CD สำหรับทีม SME
| ก่อนใช้ CI/CD | หลังใช้ CI/CD |
|-------------|-------------|
| Deploy ด้วย FTP/SSH Manual | Deploy อัตโนมัติทุกครั้งที่ Merge |
| Test ด้วยมือ ใช้เวลานาน | Run Tests อัตโนมัติทุก Push |
| Bug เจอใน Production | Bug ถูกจับก่อนถึง Production |
| Deploy ทำได้แค่คนที่รู้ขั้นตอน | ทุกคนใน Team Deploy ได้ |
| ไม่มี Rollback Plan ที่ชัดเจน | Rollback ทำได้ใน 1 คลิก |
ส่วนประกอบของ GitHub Actions
GitHub Actions ใช้ไฟล์ YAML ที่เก็บใน `.github/workflows/` เพื่อกำหนด Pipeline โครงสร้างหลักประกอบด้วย:
วิธีตั้งค่า CI/CD สำหรับ Laravel
ขั้นตอนที่ 1: สร้าง Workflow File
สร้างไฟล์ `.github/workflows/laravel-ci.yml` ในโปรเจกต์ Laravel ด้วยเนื้อหาดังนี้:
```yaml
name: Laravel CI/CD
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: testing
ports:
steps:
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: mbstring, dom, fileinfo, mysql
run: composer install --no-ansi --no-interaction --no-scripts --prefer-dist
run: cp .env.example .env
run: php artisan key:generate
run: php artisan migrate --force
env:
DB_CONNECTION: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_DATABASE: testing
DB_USERNAME: root
DB_PASSWORD: password
run: php artisan test
```
ขั้นตอนที่ 2: เพิ่ม Deploy Step
หลังจาก Tests ผ่านแล้ว เพิ่ม Job สำหรับ Deploy ต่อจาก job แรก:
```yaml
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /var/www/your-app
git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
```
วิธีตั้งค่า CI/CD สำหรับ Next.js
สร้างไฟล์ `.github/workflows/nextjs-ci.yml`:
```yaml
name: Next.js CI/CD
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test-and-build:
runs-on: ubuntu-latest
steps:
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
run: npm ci
run: npm run lint
run: npm run test --if-present
run: npm run build
env:
NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: '--prod'
```
เพิ่ม Secrets ใน GitHub Repository
ไปที่ Repository Settings → Secrets and Variables → Actions แล้วเพิ่ม:
เปรียบเทียบ CI/CD Tools
| Tool | ราคา | เหมาะกับ | ข้อดี |
|------|------|---------|------|
| GitHub Actions | ฟรี 2,000 นาที/เดือน | ทุก Stack | ง่าย ฟรี รวมกับ GitHub |
| GitLab CI | ฟรี 400 นาที/เดือน | GitLab Projects | Powerful ยืดหยุ่นสูง |
| Jenkins | ฟรี (Self-hosted) | Enterprise | Customizable มากที่สุด |
| CircleCI | ฟรีมีจำกัด | Node.js Projects | เร็ว Cache ดี |
| Bitbucket Pipelines | ฟรี 50 นาที/เดือน | Bitbucket Users | Integration ดีกับ Atlassian |
สรุปและ CTA
CI/CD Pipeline ด้วย GitHub Actions คือการลงทุนที่คืนทุนเร็วที่สุดอย่างหนึ่งสำหรับทีม Dev เพราะช่วยประหยัดเวลา Deploy ลดความเสี่ยงจาก Human Error และทำให้ทีมมั่นใจในการ Release Feature ใหม่บ่อยขึ้น
สิ่งที่ควรจำ:
หากคุณต้องการให้ทีม ADS FIT ช่วยตั้งค่า CI/CD Pipeline หรือ DevOps สำหรับโปรเจกต์ Laravel หรือ Next.js ของคุณ [ติดต่อเราได้เลย](https://www.adsfit.co.th/contact) เรามีประสบการณ์ช่วยธุรกิจ SME ไทยพัฒนาระบบที่มีประสิทธิภาพและปลอดภัย
