Cicd Pipeline Github Actions IT General

Cicd Pipeline Github Actions

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Cicd Pipeline Github Actions คืออะไร / ทำไมถึงสำคัญ

น้องๆ หลายคนอาจจะเคยได้ยินคำว่า CI/CD Pipeline กันมาบ้างแล้ว แต่ยังไม่ค่อยเข้าใจว่ามันคืออะไรกันแน่ เอาแบบง่ายๆ เลยนะ CI/CD มันคือระบบที่เราเอาไว้ทำ Automation ให้กับการพัฒนาโปรแกรมของเรา ตั้งแต่เริ่มเขียนโค้ด จนถึงเอาขึ้นไปให้ User ใช้งานกันจริงๆ

สมัยผมทำร้านเน็ต SiamCafe ใหม่ๆ เนี่ย การ Deploy โปรแกรมแต่ละทีนี่คือ "กรรม" เลย ต้องนั่ง FTP ไฟล์ขึ้นไปทีละไฟล์ แก้ Config ทีละบรรทัด แถมบางทีก็พลาด ลืมแก้บ้างอะไรบ้าง พอมี CI/CD เข้ามา ชีวิตมันง่ายขึ้นเยอะมากๆ

CI หรือ Continuous Integration คือการที่เราเอารวมโค้ดของทุกคนในทีมมาไว้ด้วยกันบ่อยๆ แล้วก็มีการ Test อัตโนมัติ เพื่อให้มั่นใจว่าโค้ดที่ทุกคนเขียนมามันไม่ตีกัน ไม่พัง

CD หรือ Continuous Delivery/Deployment คือการที่เราเอาโค้ดที่ Test ผ่านแล้ว ไปขึ้น Server ให้ User ใช้งานแบบอัตโนมัติ ไม่ต้องมานั่งทำเองทีละขั้นตอน

แล้วทำไมมันถึงสำคัญน่ะเหรอ? ก็เพราะว่ามันช่วยให้เรา:

พื้นฐานที่ต้องรู้

ก่อนจะไปลงมือทำ CI/CD Pipeline ด้วย Github Actions กันจริงๆ ก็ต้องมีพื้นฐานกันนิดหน่อย จะได้ไม่งง

Git และ Github

อันนี้พื้นฐานเลยนะ Git คือ Version Control System ที่เราใช้เก็บโค้ดของเรา Github ก็คือ Platform ที่เราเอาไว้ฝากโค้ด Git ของเราขึ้นไปบน Cloud

YAML

Github Actions ใช้ไฟล์ YAML ในการกำหนด Workflow หรือขั้นตอนการทำงานต่างๆ ดังนั้นเราต้องรู้จัก Syntax ของ YAML บ้างนิดหน่อย ไม่ต้องถึงกับ Expert แค่พออ่านออกเขียนได้ก็พอ


# ตัวอย่างไฟล์ YAML
name: My Workflow

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Run a script
        run: echo "Hello, world!"

ในตัวอย่างข้างบน เราบอกว่า Workflow นี้จะทำงานเมื่อมีการ Push โค้ดขึ้น Branch main แล้วก็จะ Run Script echo "Hello, world!" บน Ubuntu Server

Docker (Optional)

ถ้าโปรเจคของเราใช้ Docker ก็จะยิ่งดี เพราะเราสามารถสร้าง Container Image ของโปรเจคเรา แล้วเอาไป Deploy ได้ง่ายขึ้น แต่ถ้ายังไม่เคยใช้ Docker ก็ไม่เป็นไร เรียนรู้ไปพร้อมๆ กันได้

วิธีใช้งาน / เริ่มต้นยังไง

Github Actions ใช้งานง่ายมาก แค่สร้างไฟล์ YAML ไว้ใน Folder .github/workflows ใน Repository ของเรา Github มันก็จะจัดการให้เอง

ขั้นตอนปฏิบัติจริง

สร้างไฟล์ YAML

เริ่มจากสร้าง Folder .github/workflows ใน Root Directory ของโปรเจคเรา แล้วสร้างไฟล์ YAML ขึ้นมา เช่น main.yml


# .github/workflows/main.yml
name: Deploy to Production

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Deploy to Server
        run: |
          # SSH เข้า Server แล้วสั่ง Deploy
          ssh user@your-server "cd /var/www/your-project && git pull && npm install && npm run build && pm2 restart all"

Code ข้างบนเป็นตัวอย่างง่ายๆ ของ Workflow ที่จะ:

  1. Checkout โค้ดจาก Repository
  2. Install Dependencies
  3. Build โปรเจค
  4. SSH เข้า Server แล้ว Deploy

อย่าลืมแก้ user@your-server และ /var/www/your-project ให้เป็นข้อมูล Server ของเราจริงๆ ด้วยนะ

Commit และ Push

หลังจากที่เราสร้างไฟล์ YAML เสร็จแล้ว ก็ Commit และ Push ขึ้น Github ได้เลย Github Actions มันก็จะเริ่มทำงานเองอัตโนมัติ

Monitor Workflow

เราสามารถเข้าไปดู Status ของ Workflow ได้ใน Tab "Actions" ใน Repository ของเรา จะเห็น Log ต่างๆ ว่า Workflow มันทำงานอะไรบ้าง สำเร็จหรือล้มเหลว

ถ้า Workflow ล้มเหลว ก็เข้าไปดู Log แล้วแก้ปัญหาซะ แล้วก็ Push ขึ้นไปใหม่ Github Actions มันก็จะ Run ใหม่อีกรอบ

ลองเข้าไปอ่านบทความอื่นๆ เกี่ยวกับ IT ได้ที่ SiamCafe Blog นะครับ มีอะไรดีๆ อีกเยอะเลย

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับCicd Pipeline Github Actions:

เปรียบเทียบกับทางเลือกอื่น

Github Actions ไม่ใช่เครื่องมือ CI/CD ตัวเดียวในโลก ยังมีตัวเลือกอื่นๆ อีกมากมาย เช่น:

แต่ละตัวก็มีข้อดีข้อเสียแตกต่างกันไป ลองดูตารางเปรียบเทียบด้านล่างนี้:

เครื่องมือ ข้อดี ข้อเสีย
Github Actions ใช้งานง่าย, ฟรีสำหรับ Open Source, Integrated กับ Github อาจจะไม่ Flexible เท่า Jenkins
Jenkins Flexible มาก, มี Plugin เยอะ, Open Source Setup ยาก, ต้อง Maintain เอง
Gitlab CI Integrated กับ Gitlab, ใช้งานง่าย อาจจะไม่ Powerful เท่า Jenkins
CircleCI ใช้งานง่าย, Cloud-based มีค่าใช้จ่าย

สุดท้ายแล้วว่าจะเลือกใช้ตัวไหนก็ขึ้นอยู่กับความต้องการและความถนัดของแต่ละคน ลองศึกษาดูแล้วเลือกใช้ตัวที่เหมาะกับเราที่สุดครับ

ถ้าอยากรู้เรื่อง IT เจ๋งๆ อีก ไปตามอ่านกันได้ที่ SiamCafe Blog เลย

Best Practices / เคล็ดลับจากประสบการณ์

เอาล่ะน้องๆ มาถึงส่วนสำคัญแล้ว เรื่อง Best Practices หรือเคล็ดลับที่ผมสั่งสมมาจากการทำ CI/CD ด้วย Github Actions มานานโข สมัยผมทำร้านเน็ตนี่นะ กว่าจะได้อัพเดทเกมแต่ละที เลือดตาแทบกระเด็น ต้องมานั่งก็อปปี้ไฟล์ทีละเครื่อง ถ้ามี CI/CD ตั้งแต่ตอนนั้นนะ ชีวิตคงดีกว่านี้เยอะเลย

3-4 เทคนิคที่ใช้ได้จริง

เทคนิคที่ผมจะบอกต่อไปนี้ เป็นสิ่งที่ผมใช้จริง และเห็นผลจริง ลองเอาไปปรับใช้กันดูนะ

1. แยก Environment ให้ชัดเจน

อันนี้สำคัญมาก! น้องต้องแยก Environment ให้ชัดเจน ไม่ว่าจะเป็น Development, Staging, Production อย่าเอาทุกอย่างมารวมกันมั่วซั่ว สมัยก่อนผมเคยพลาดเอาโค้ด Development ไป Deploy ขึ้น Production ผลคือ... ร้านเกมเจ๊งไปครึ่งวัน เพราะบั๊กเพียบ


name: Deploy to Production

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: production # ระบุ Environment ตรงนี้

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Deploy to server
        run: echo "Deploying to production server..."

2. Test, Test, Test!

Test ให้เยอะที่สุดเท่าที่จะทำได้! ไม่ว่าจะเป็น Unit Test, Integration Test, End-to-End Test เขียน Test ครอบคลุมทุก Functionality ของโปรเจค น้องๆ อย่าขี้เกียจเขียน Test นะครับ เชื่อผมเถอะ มันช่วยชีวิตน้องได้เยอะเลย สมัยก่อนผมไม่ค่อย Test พออัพเดทโปรแกรมทีไร ต้องวิ่งวุ่นแก้บั๊กทุกที


name: Run Tests

on:
  push:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '16'

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test # คำสั่ง Run Test ของน้องๆ

3. ใช้ Secrets อย่างระมัดระวัง

พวก API Key, Password, Database Credentials อะไรพวกนี้ ห้าม Commit ขึ้น Github เด็ดขาด! ให้ใช้ Github Secrets แทน และจำกัดสิทธิ์การเข้าถึง Secrets ให้ดี สมัยก่อนผมเคยโดน Hack เพราะดัน Commit API Key ขึ้น Github ตั้งแต่นั้นมา เข็ดเลย

วิธีใช้ Secrets ใน Github Actions:


name: Deploy to Production

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Deploy to server
        run: |
        echo "Deploying with API Key: ${{ secrets.API_KEY }}" # เรียกใช้ Secrets
        # ... คำสั่ง Deploy ...

4. Rollback Plan สำคัญมาก

เตรียมแผน Rollback เอาไว้เสมอ เผื่อ Deploy แล้วเกิดปัญหาอะไรขึ้นมา จะได้ Rollback กลับไป Version ก่อนหน้าได้อย่างรวดเร็ว สมัยผมทำร้านเน็ต เคย Deploy Patch เกมแล้วเกมเน่าทั้งร้าน ต้อง Rollback กลับไป Version เดิมแทบไม่ทัน

FAQ คำถามที่พบบ่อย

Github Actions ฟรีจริงเหรอ?

Github Actions มี Free Tier ให้ใช้ แต่ถ้าใช้เกิน Limit ก็ต้องเสียเงินเพิ่ม ลองเช็ครายละเอียด Pricing ใน Github Docs ดูนะ

Github Actions เหมาะกับโปรเจคเล็กๆ เท่านั้นหรือเปล่า?

ไม่จริง! Github Actions สามารถใช้ได้กับโปรเจคทุกขนาด ตั้งแต่โปรเจคเล็กๆ ไปจนถึงโปรเจคใหญ่ๆ ที่ซับซ้อน

มี Tool อื่นๆ ที่คล้ายกับ Github Actions อีกไหม?

มีเยอะแยะเลย เช่น Gitlab CI, Jenkins, CircleCI ลองศึกษาดูว่า Tool ไหนเหมาะกับโปรเจคของน้องมากที่สุด

สรุป

CI/CD ด้วย Github Actions เป็น Tool ที่มีประโยชน์มาก ช่วยให้น้องๆ สามารถ Automate Process การ Build, Test, และ Deploy ได้อย่างมีประสิทธิภาพ ลองเอาไปปรับใช้กับโปรเจคของน้องๆ ดูนะครับ แล้วชีวิตจะง่ายขึ้นเยอะเลย SiamCafe Blog มีบทความดีๆ อีกเยอะ ลองเข้าไปอ่านกันดูนะ

อย่าลืมว่า Practice makes perfect! ลองทำ ลองผิด ลองถูก แล้วน้องๆ จะเก่งขึ้นเอง iCafeForex