เรื่องที่สำคัญของการพัฒนา software คือ
ขั้นตอนการ build, test, release และ deploy เป็นอย่างไรบ้าง
ในการพัฒนาที่ดี น่าจะต้องวางแผนและกำหนดขั้นตอนการทำงานไว้
ซึ่งเราจะเรียกขั้นตอนเหล่านี้ว่า Build pipeline (workflow)
นำมาจากแนวคิดของ Continuous Integration และ Continuous Delivery

โดยในบทความนี้ จะนำ GitHub Actions มาสร้างกระบวนการเหล่านี้
มาเริ่มกันเลย

ก่อนจะใช้เครื่องมือ ต้องคิดและออกแบบว่าเราต้องการอะไรบ้าง ?

ลองสร้างระบบง่าย ๆ เมื่อมีการ push หรือเปิด Pull Request มายัง repository
โดยมีขั้นตอนการทำงานดังนี้

  • Manage dependency ทำการ download dependency ต่าง ๆ ที่ใช้งาน
  • Lint
  • Test
  • Code coverage ด้วย CodeCov
  • Build สำหรับสร้าง binary file 
    • กระบวนการ release เช่นสร้าง binary file ของระบบปฏิบัติการต่าง ๆ ด้วย Go Releaser

มาลงมือสร้างขั้นตอนการทำงานด้วย GitHub Actions

ตัวอย่างของ source code อยู่ที่ GitHub:Up1

จากนั้นทำการสร้าง GitHub Actions ใน repository เลย
หรือจะสร้างเองด้วยการสร้าง file .github/workflow/build.yml 

เริ่มต้นด้วยขั้นตอนแรกคือ Lint ด้วย Golint

จะทำงานเมื่อมีการ push และ ส่ง Pull Request มายัง branch master

จากนั้นเข้าไปดูใน menu Actions จะทำงานและได้ผลดังนี้
เนื่องจากใน code ไม่ทำการเขียน comment ของ public function
แสดงดังนี้

แน่นอนว่า ต้องแก้ไข code และทำการ push ขึ้นไปใน repository
จะได้ผลการทำงานดังนี้

ขั้นตอนที่ 2 ทำการทดสอบและ code coverage report 

ไปดู code coverage report ได้ดังนี้

หรือลองเปิด Pull Request เข้ามายัง repository ดูหน่อย
จะมีผลการทำงานดังนี้

ขั้นตอนที่ 3 ทำการ release ด้วยการสร้าง file สำหรับ deploy บน OS ต่าง ๆ

ด้วยการใช้ Go Releaser ซึ่งง่ายมาก ๆ 
จะทำการเมื่อมีการสร้าง tag ขึ้นมาใน repository 
โดยที่ชื่อ tag ต้องเป็น Semantic versioning ด้วย
ดังนี้

เมื่อทำการ push tag ขึ้นไปใน repository จะทำงานดังนี้

ลองนำไปใช้กันดูครับ สะดวกดีนะ
สามารถนำไปต่อยอดเรื่องของ deploy ต่อไป
รวมทั้งเรื่องของ functional testing อีก
ขอให้สนุกกับการ coding ครับ