Development

CI/CD Pipeline คืออะไร? คู่มือตั้งค่า GitHub Actions สำหรับ Laravel & Next.js ปี 2026

เรียนรู้ CI/CD Pipeline คืออะไร วิธีตั้งค่า GitHub Actions ให้ deploy อัตโนมัติสำหรับโปรเจกต์ Laravel และ Next.js ลดเวลา deploy และ Human Error สำหรับทีม SME ไทยในปี 2026

AF
ADS FIT Team
·7 นาที
Share:
CI/CD Pipeline คืออะไร? คู่มือตั้งค่า GitHub Actions สำหรับ Laravel & Next.js ปี 2026

# 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:

  • **Continuous Delivery**: Deploy อัตโนมัติไปยัง Staging แต่ต้องอนุมัติก่อน Deploy Production
  • **Continuous Deployment**: Deploy อัตโนมัติไปยัง Production ทันทีหลังผ่าน Tests
  • ประโยชน์ของ 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 โครงสร้างหลักประกอบด้วย:

  • **Workflow**: กระบวนการทั้งหมด กำหนดใน YAML file
  • **Event (on)**: เหตุการณ์ที่ทำให้ Workflow ทำงาน เช่น `push`, `pull_request`
  • **Job**: กลุ่มของ Steps ที่รันบน Runner เดียวกัน
  • **Step**: คำสั่งแต่ละขั้นตอนใน Job
  • **Action**: Pre-built Step ที่ดึงมาจาก GitHub Marketplace
  • วิธีตั้งค่า 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:

  • 3306:3306
  • steps:

  • uses: actions/checkout@v4
  • name: Setup PHP
  • uses: shivammathur/setup-php@v2

    with:

    php-version: '8.3'

    extensions: mbstring, dom, fileinfo, mysql

  • name: Install Composer Dependencies
  • run: composer install --no-ansi --no-interaction --no-scripts --prefer-dist

  • name: Copy .env
  • run: cp .env.example .env

  • name: Generate Application Key
  • run: php artisan key:generate

  • name: Run Database Migrations
  • 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

  • name: Run Tests
  • 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: actions/checkout@v4
  • name: Deploy to Server
  • 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/checkout@v4
  • name: Setup Node.js
  • uses: actions/setup-node@v4

    with:

    node-version: '20'

    cache: 'npm'

  • name: Install Dependencies
  • run: npm ci

  • name: Run Linter
  • run: npm run lint

  • name: Run Tests
  • run: npm run test --if-present

  • name: Build Application
  • run: npm run build

    env:

    NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}

  • name: Deploy to Vercel
  • 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 แล้วเพิ่ม:

  • `SSH_HOST`: IP Address ของ Server
  • `SSH_USER`: Username ที่ใช้ SSH
  • `SSH_PRIVATE_KEY`: Private Key สำหรับ SSH
  • `VERCEL_TOKEN`: Token จาก Vercel Dashboard
  • `VERCEL_ORG_ID` และ `VERCEL_PROJECT_ID`: หาได้จาก Vercel Settings
  • เปรียบเทียบ 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 ใหม่บ่อยขึ้น

    สิ่งที่ควรจำ:

  • เริ่มจาก CI ก่อน: Run Tests อัตโนมัติทุก Push
  • ค่อยๆ เพิ่ม CD เมื่อ Tests ครอบคลุมเพียงพอ
  • เก็บ Secrets ใน GitHub Secrets ไม่ใช่ใน Code
  • ใช้ `needs` เพื่อกำหนดลำดับการรัน Jobs
  • ทดสอบ Workflow ด้วย Branch แยกก่อน Merge เข้า Main
  • หากคุณต้องการให้ทีม ADS FIT ช่วยตั้งค่า CI/CD Pipeline หรือ DevOps สำหรับโปรเจกต์ Laravel หรือ Next.js ของคุณ [ติดต่อเราได้เลย](https://www.adsfit.co.th/contact) เรามีประสบการณ์ช่วยธุรกิจ SME ไทยพัฒนาระบบที่มีประสิทธิภาพและปลอดภัย

    Tags

    #CI/CD pipeline#GitHub Actions#Laravel deployment#Next.js deployment#DevOps#automated testing

    สนใจโซลูชันนี้?

    ปรึกษาทีม ADS FIT ฟรี เราพร้อมออกแบบระบบที่ฟิตกับธุรกิจของคุณ

    ติดต่อเรา →

    บทความที่เกี่ยวข้อง