หลังจากย้ายจาก SVN > GitLab 3 ปีกว่าเนี่ย ปัญหาสำคัญอย่างนึงที่เจอประจำ การตั้งชื่อ Branch ซึ่งมันมีข้อตกลงนะ ล่าสุดตามนี้เลย
- master (main) / develop - อันนี้ default อยู่แล้ว
- release - สำหรับแก้ไข defect ของ release นั้นๆ กำหนดอายุไว้ 1 week
- feature - ทำงานชิ้นใหญ่ๆ
- support - สำหรับแก้ไข defect กรณีที่ปรับ tech เช่น ขยับ .NET6 ก่อนจะ merge code เข้า develop จะแตก branch support/net472 มาก่อน
- hotfix - แก้บั๊กด่วน ไฟไหม้
- bugfix - แก้บั๊กที่รอได้
- uat - สำหรับลูกค้าที่ uat ยาวนานหลายๆ เดือน ส่วนใหญ่ 3-5 เดือน แต่นานสุด 2 ปี
สำหรับ flow และชื่อ Branch หากใครอ่าน Blog [GIT] แบ่งปัน Git Flow ที่ได้ใช้งานจริง มาก่อนอาจจะไม่เหมือนนะครับ มีปรับใหญ่ไปรอบนึงครับ ถ้าครบ 1 ปี จะมาแชร์ใหม่อีกรอบครับ
ปัญหา
ช่วงหลังๆ ชื่อ Branch เริ่มแปลกขึ้น เช่น
- <ชื่อตัวเอง>_<note>
- หรือ fixederror03
- หรือ <user_a>_uat01
- หรือ _<อะไรก็ไม่รู้>
แล้วที่นี่พอผ่านไปนานๆ ใครเจ้าของ Branch แล้วมันทำเพื่ออะไร ?
Git Parameter Filter Branch
พอดีมีเคสที่ต้องเข้ามาแก้ Jenkinfile ด้วย เอาหละใช้วิธี Workaround ก่อนและกัน โดยกำหนดจาก Jenkins - Git Parameter ถ้าตั้งชื่อ Branch ไม่ตรงตาม Regex ไม่ให้แสดงชื่อ Branch เพื่อจะ Build ทดสอบ หรือ Build ส่งลูกค้า โดย Pattern การตั้งชื่อ Branch ข้างต้นสามารถเขียน RegEx ได้ ดังนี้
origin/(main|master|develop|release|feature|support|hotfix|bugfix|uat)(.*)
นำ RegEx มาใช้งาน
- Jenkinfile เพิ่ม RegEx ใน GitParameter > branchFilter
gitParameter branchFilter: 'origin/(main|master|develop|release|feature|support|hotfix|bugfix|uat)(.*)', defaultValue: 'develop', name: 'BRANCH_ON_GIT', type: 'PT_BRANCH', listSize: '15', quickFilterEnabled: true
- ถ้ายังใช้ Wizard เพิ่ม RegEx ที่ Filter Branch Filter ตามรูปเลยครับ
ปิดท้าย
จริงๆ แล้ว Blog ที่ผมเขียนอาจจะไปแก้ปัญหาที่อาจจะไม่ถูกจุดสักทีเดียว ถ้าจะให้ดี
- ใข้เงินแก้ปัญหา ก็ซื้อ License GitLab มันมี Push Rule ให้พร้อมเลย ถ้าใครตั้งชื่อ branch ไม่ตรงตาม pattern ระบบมันกันให้เลยครับ
- ดักจาก Merge Pipeline ครับ -- ยังไม่ว่างมาลองทำเลยครับ ขอติต่างเป็น Blog ตอนถัดไปครับ
Reference
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.