PlusMagi's Blog By Pitt Phunsanit cd,ci,devops,technology GitHub Actions 101: การเขียน Workflow, Jobs, Steps และการตั้งค่า Event Triggers (push, pull_request)

GitHub Actions 101: การเขียน Workflow, Jobs, Steps และการตั้งค่า Event Triggers (push, pull_request)

ในโลกของการพัฒนาซอฟต์แวร์ที่หมุนไปอย่างรวดเร็ว การปล่อยโค้ด (Deployment) และการทดสอบระบบ (Testing) ด้วยวิธีการแบบ Manual นั้นถือเป็นคอขวดสำคัญที่ทำให้วงจรการพัฒนาช้าลง เครื่องมืออัตโนมัติจึงกลายเป็นหัวใจหลักของการทำงาน DevOps เพื่อให้มั่นใจว่าทุกครั้งที่มีการเปลี่ยนแปลงโค้ด จะถูกตรวจสอบและนำไปใช้งานได้อย่างรวดเร็ว ปลอดภัย และเชื่อถือได้


เจาะลึกรายละเอียดและประเด็นสำคัญ

GitHub Actions คือระบบ CI/CD (Continuous Integration/Continuous Deployment) ที่ทำงานบน GitHub โดยใช้ไฟล์ YAML ในการกำหนด Workflow ซึ่งเป็นชุดของงานอัตโนมัติที่ต้องการให้เกิดขึ้น เมื่อมีเหตุการณ์บางอย่างมากระตุ้น (Trigger) แนวคิดหลักคือการแบ่งกระบวนการออกเป็น 3 ส่วนย่อย: Workflow (ภาพรวมของขั้นตอนทั้งหมด), Job (ชุดงานที่ต้องรันพร้อมกัน เช่น Build และ Test), และ Step (คำสั่งย่อยๆ ที่ทำงานภายใน Job นั้นๆ)

การตั้งค่า Event Triggers เป็นสิ่งที่ทรงพลังที่สุด เพราะมันกำหนดว่า Workflow จะเริ่มทำงานเมื่อใด เช่น เมื่อมีการ push โค้ดไปยัง Branch หลัก หรือเมื่อมีคนสร้าง/อัปเดต Pull Request (PR) ซึ่งช่วยให้เราสามารถรันการทดสอบโค้ดได้ทันทีที่ผู้พัฒนาส่งงานมา ทำให้ตรวจพบข้อผิดพลาดตั้งแต่เนิ่นๆ ก่อนที่จะรวมเข้ากับโค้ดหลัก

name: CI Build and Test Workflow

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build_and_test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3 # Step 1: Checkout โค้ด
      - name: Set up Python
        uses: actions/setup-python@v4 # Step 2: Setup Environment
        with:
          python-version: '3.x'
      - name: Install dependencies
        run: pip install -r requirements.txt # Step 3: ติดตั้งไลบรารี
      - name: Run tests
        run: pytest # Step 4: รันการทดสอบ


การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • การตรวจสอบคุณภาพโค้ดอัตโนมัติ (Linting & Testing): ใช้ Actions เพื่อรันเครื่องมือวิเคราะห์โค้ด (Linter) และชุดทดสอบยูนิต (Unit Tests) ทุกครั้งที่มี PR เข้ามา ทำให้มั่นใจว่าโค้ดที่ถูกรวมเข้าสู่ Branch หลักนั้นมีมาตรฐานและไม่มีบั๊กพื้นฐาน
  • การ Deploy ไปยังสภาพแวดล้อมต่างๆ (Staging/Production): สามารถตั้งค่าให้ Workflow ทำงานเมื่อมีการ Merge เข้าสู่ Branch หลัก โดย Job หนึ่งจะทำการ Build Artifact และอีก Job จะใช้ SSH หรือ Cloud Provider API เพื่อ Deploy โค้ดไปยังเซิร์ฟเวอร์ Staging ก่อน จากนั้นจึงรอการอนุมัติเพื่อไป Production

การเข้าใจและใช้งาน GitHub Actions อย่างเชี่ยวชาญ ไม่ได้เป็นเพียงแค่ทักษะทางเทคนิค แต่คือการยกระดับมาตรฐานของวงจรการพัฒนาซอฟต์แวร์ทั้งหมด มันช่วยให้ทีมสามารถทำงานร่วมกันได้อย่างราบรื่น ลดความผิดพลาดที่เกิดจากมนุษย์ (Human Error) และทำให้องค์กรสามารถส่งมอบผลิตภัณฑ์ที่มีคุณภาพสูงถึงมือผู้ใช้งานได้เร็วขึ้นอย่างก้าวกระโดด


อ่านเพิ่มเติม

Exit mobile version