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