Introduction to Github Action

By KDBEER | Last updated Jan 9, 2024
Introduction-to-github-action-659d66b72106a69ab753f080

GitHub Actions เป็นเครื่องมือที่ทาง Github สร้างมาช่วยให้ developer จัดการเกี่ยวกับ CI/CD ก็คือหลังจากที่มีการแก้ไขใดๆ กับโค๊ดบน github เราสามารถสร้าง pipeline เพื่อนำโค๊ดไปดีพลอยได้ทันที บทความนี้ ผมจะแนะนำการใช้งานเกี่ยวกับ Github Action เบื้องต้น เผื่อว่าใครอาจจะเอาไปประยุกต์ใช้ประโยชน์ครับ

Diagram of an event triggering Runner 1 to run Job 1, which triggers Runner 2 to run Job 2. Each of the jobs is broken into multiple steps.
Source: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#workflows

สำหรับโปรเจคเล็กๆ นี่เรียกว่าเป็นของดีเลยครับ เพราะว่ามันช่วยให้เราดีพลอย code ได้ auto ทำให้เราลดงานจุกจิก งาน manual ได้เยอะ มีเวลาไปทำอย่างอื่นมากขึ้นครับ

เพื่อให้เขาใจเกี่ยวกับ Github Action มากขึ้น ก่อนอื่นผมขอเล่าในส่วนของ Component ต่างๆ ของ Github Action ก่อนนะครับ ซึ่งตามเอกสารของ github เอง เขาแบ่ง component ออกเป็นส่วนต่างๆ ดังนี้ครับ

Component ของ Github Action

Workflows: Workflows เป็นส่วนสำคัญที่กำหนดการทำงานของ GitHub Actions โดยใช้ไฟล์ YAML เพื่อกำหนดขั้นตอนการทำงานต่างๆ ที่ต้องการให้ GitHub Actions

Events: ช่วยให้คุณกำหนดเหตุการณ์ที่เกิดขึ้นใน repository เพื่อเป็น trigger ให้ Workflow เริ่มทำงาน เช่น push ของโค้ด, การสร้าง Pull Request, หรือเวลาที่ตั้งไว้

Jobs: เป็นขั้นตอนที่กำหนดการทำงานแบ่งเป็นหน่วยย่อยภายใน Workflow แต่ละ Job สามารถทำงานพร้อมกันหรือตามลำดับที่กำหนดได้

Actions: เป็นชุดคำสั่งที่สามารถนำมาใช้เพื่อรันใน Workflow โดยอาจเป็นการใช้ Action ที่เขียนขึ้นเองหรือใช้ Actions ที่พร้อมใช้งานจาก Marketplace เพื่อช่วยในการทำงานต่าง ๆ

Runner: ก็คือเครื่อง vm หรือ server ที่เอาไว้ให้ github action เรียกใช้ ปกติ github action จะมี Runner ให้ใช้งานได้ฟรี แต่บางกรณี เราสามารถตั้ง server เองได้ เรียกว่า Self-Hosted Runners ครับ

ตัวอย่างการใช้งาน Github Action

การสร้าง Github Action เราต้องทำการสร้างโฟล์เดอร์ .github/workflows/ ใน repository เขาเราซะก่อน ย้ำนะครับว่าจำเป็น เพราะว่า github จะเข้ามาอ่าน workflow ที่เป็นไฟล์ YAML ในโฟลเตอร์นี้นั่นเองครับ

ทีนี้ให้เราลองสร้างไฟล์ learn-github-actions.yml ในโฟลเดอร์ดังกล่าวครับ

name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

จากนั้น push commit changes นี้ขึ้นไปบน github repository ครับ

จากนั้น github action จะถูก trigger และเริ่มทำงานตาม Workflow ที่เรากำหนดไว้ ซึ่งเราสามารถเข้าไปดู workflow ได้ตามภาพด้านล่างนี้ครับ

Source: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#workflows

ถ้าไม่มีอะไรผิดพลาด เราจะเห็น workflow ดังนี้ครับ

Diagram showing the trigger, runner, and job of a workflow. The job is broken into 4 steps.
Source: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#workflows

สรุป

Github action เป็น tool ที่ให้ developer เอาไว้ทำ CI/CD แต่ว่าต้องใช้ repository ของ github เท่านั้น เรากำหนด step การทำงาน หรือ pipeline ในลักษณะของ YAML ไฟล์ ซึ่งต้องอยู่ใน repository ครับ สำหรับบทความนี้ ผมขอหยุดไว้ตรงนี้ก่อนนะครับ ในภายหลัง ผมจะเขียนบทความหรืออาจจะเป็นวิดีโอ อธิบายเจาะลึกมากขึ้นครับ

Reference

https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#workflows