Task 3 : Work Process and Branch - panupongth148/Project-SW-DEV-TOOLS-AND-ENV-Group4 GitHub Wiki

Feature Branch Strategy

Branching

Git Branch

เป็นการทำงานโดยแบ่งย่อยออกเป็นสาขา เพื่อป้องกันการเกิดปัญหาต่าง ๆ จากการทำงานหลายคนเมื่อทำงานจนกระทั่งโปรเจคใหญ่ขึ้นจะพบกับปัญหา คือ Branch มีเยอะมาก ไม่สามารถแยก Branch แต่ละอันได้อย่างแม่นยำจึงต้องมีการแยกชนิดของ Branch ออกมาตามหน้าที่ดังนี้

1. Branch Main

เป็น Branch หลักที่ถูกสร้างขึ้นมาตั้งแต่แรก โดยจะเป็นศูนย์กลางของตัวโปรเจค และเป็น Branch ที่จะใช้ในการ Deploy โปรเจคขึ้น Server

2. Branch Develop

เป็น Branch ที่แตกออกมาจาก Branch Main โดยเมื่อ Developer ทำการพัฒนา Code เสร็จแล้วจะนำมาเก็บไว้ แล้วทำการทดสอบหา Bug และ Error แก้ไข แล้วจึงทำการรวมเข้าไปที่ Branch Main

3. Branch Feature

เป็น Branch ที่แตกออกมาจาก Branch Develop โดยใช้สำหรับการพัฒนา Feature แต่ละส่วน ซึ่งจะไม่มีการนำ Feature อื่นที่ไม่เกี่ยวข้องมาทำในนี้ หลังจากทำ Feature แต่ละตัวเสร็จก็จะทำการส่ง Pull Request เพื่อที่จะรวมกลับไปที่ Branch Develop และลบ Branch Feature ที่เสร็จแล้วทิ้งไป

4. Branch Release

เป็น Branch ที่แตกออกมาจาก Branch Develop โดยจะใช้สำหรับให้ Tester ตรวจสอบงานจาก Branch Develop ก่อนที่จะออกมาเป็น Product และหลังจากตรวจสอบเสร็จสิ้นก็จะทำการรวมกลับไปที่ Branch Develop เป็น Version ล่าสุด และรวมไปที่ Branch Main เป็นงานที่เสร็จแล้วสำหรับส่งมอบให้ลูกค้า

5. Branch Hotfixes

เป็น Branch ที่แตกออกมาจาก Branch Main โดยจะใช้สำหรับปรับปรุงแก้ไขตัวโปรเจคสำหรับ Deploy หลังจากแก้ไขเสร็จเรียบร้อยจะทำการรวมกลับไปที่ Branch Main และรวมไปที่ Branch Develop หลังจากนั้นจะทำการลบ Branch hotfixes นั้นทิ้งไป

Workflow

Development Workflow

ขั้นตอนการทำงาน

  • สมาชิกในกลุ่ม Fork repository หลักของทีม มาอยู่ใน Personal repository
  • Clone repository ที่ทำการ folk มาที่เครื่องของตนเอง
  • สร้าง Branch feature ใหม่
  • แก้ไขหรือพัฒนา Feature ของตัวโปรแกรม
  • Push ส่วนที่ปรับปรุงแก้ไขเข้าไปที่ส่วน Github ของตัวเอง
  • สร้าง Pull request เพื่อนำส่วนที่แก้ไขไปรวมกับ Branch develop

Pull Request

PR ใช้สื่อสารกับคนภายในทีมว่าโค้ดจาก Feature branch ที่จะนำมารวมนั้นมีการเปลี่ยนแปลงอะไรบ้าง โดยมีประเด็นหลักดังนี้

  • เช็คความเรียบร้อยของงานว่ามีความถูกต้องหรือไม่
  • ตรวจสอบว่า Code มีสิ่งที่ไม่จำเป็นหรือไม่
  • ตรวจสอบการเขียน Code ว่าถูกต้องตามมาตรฐานของทีมหรือไม่

ขั้นตอนต่าง ๆ ในการทำ Pull request มีดังนี้

  • สร้าง Pull request โดยแนบรายละเอียดของ feature ที่พัฒนา สิ่งที่เพิ่มหรือแก้ไขลงในโค้ด และผลที่เกิดขึ้นหลังจากรวมเข้าไปในโค้ดหลัก
  • การ review จะประกอบด้วย reviewer ทั้งหมด 2-3 คน โดยจะเป็นการสุ่มจากบอท เมื่อมีการสร้าง pull request
  • หาก reviewer เห็นชอบด้วยแล้วจึงทำการรวม branch เข้าไป
  • หากมีจุดที่ไม่ผ่านการประเมิน reviewer จะทำการ reply แจ้งไปใน pull request เพื่อให้ใช้ feedback ในการแก้ไขปรับปรุง