• บันทึกประสบการณ์ของโปรเจกต์โอเพนซอร์สสำหรับย้ายระบบจาก Jira ไปยัง GitLab
  • ที่มา
    • ข่าวการยุติการสนับสนุนผลิตภัณฑ์ Jira Server ตั้งแต่วันที่ 15 กุมภาพันธ์ 2024
    • ทางเลือกที่สามารถเลือกได้: Pivotal Tracker, IBM Engineering Requirements Management DOORS Next, Rally Software, GitLab, ServiceNow Agile Development, GitHub เป็นต้น
    • แล้วผู้ที่ใช้งาน Jira Server ควรทำอย่างไร? ลองสร้างโปรเจกต์สำหรับย้ายไปยัง GitLab ดูไหม?
  • สถานะความสามารถของการย้าย Jira → GitLab
    • ใน GitLab สามารถคัดลอก title, description, label ของ Jira issue ได้
    • เมทาดาทาที่เหลือจะถูกนำเข้าไปใน description
    • มี UI สำหรับแมป Jira User กับ GitLab User
  • ข้อจำกัดของการย้าย Jira → GitLab
    • จำเป็นต้องตั้งค่า Jira Integration
    • รองรับเฉพาะ Jira API v3
    • Jira และ GitLab ใช้ไวยากรณ์ต่างกัน จึงไม่สามารถย้ายได้อย่างแม่นยำทั้งหมด
      • ใน description, Heading 1, Heading 2, Heading 3 ถูกย้ายไปเป็น Numbered, SubNumbered, SubNembered 2
      • GitLab ใช้ไวยากรณ์ Markdown ส่วน Jira ใช้มาตรฐานเฉพาะของตัวเองชื่อ ADF(Atlassian Document Format) จึงเกิดความแตกต่างนี้
    • issue type, priority, label ก็ย้ายได้ไม่แม่นยำนัก
  • ทิศทางของโปรเจกต์ย้ายระบบภายในองค์กร
    • เป้าหมาย:
      • ตัดสินใจว่า Jira epic ควรถูกย้ายไปที่ใด และ issue ควรถูกย้ายไปที่ใด
      • ดำเนินการย้ายอย่างเป็นรูปธรรมว่า field ของ Jira issue เช่น title, description, label, component ควรถูกย้ายไปยัง field ใดของ GitLab
    • ตอนย้าย Jira epic ไปเป็น GitLab epic จะเปิดอิสระให้ผู้ใช้เลือกได้ว่าจะย้ายไปเป็น sub-epic ใน sub-group หรือเป็น epic ในกลุ่มระดับบน
    • ส่วน issue จะย้ายไปเป็น issue
    • ข้อจำกัด:
      • เดิมอยากย้าย sub-task ให้ไปเป็น task ที่อยู่ใต้ issue ย่อยเช่นกัน แต่ GitLab ยังไม่รองรับ Task API
      • Jira มี field จำนวนมากเกินไป;
        • ความสามารถพื้นฐานอย่าง description, label, component นั้น GitLab ก็รองรับ จึงย้ายได้
        • But!!! field ที่เกี่ยวกับ time tracking และ security นั้น GitLab ไม่รองรับ จึงย้ายไม่ได้
    • แบบออกแบบสุดท้าย
      • Jira project → GitLab project
      • Jira epic → GitLab epic
      • Jira issue → GitLab issue
      • title, description, version, story point, resolution ของ Jira จะถูกแมปไปยัง GitLab ตรง ๆ
      • Jira resolution → GitLab closed, Jira story point → GitLab weight
      • Jira issue type, component, status, priority → ย้ายโดยใช้ GitLab label และ scoped label
      • พัฒนา custom field ด้วย
      • สำหรับ description จะพาร์สฟอร์แมตทั้งหมดด้วย regular expression แล้วแปลงเนื้อหาเป็น Markdown เพื่อย้าย
    • ผลลัพธ์ของโปรเจกต์
      • การย้าย Jira แบบโหมดมาตรฐานใช้งานได้ค่อนข้างดี
      • ถ้าไม่มีปลั๊กอินและออโตเมชัน การย้ายทำได้ดี
      • ส่วนใหญ่แมปด้วย GitLab Label
      • สร้าง epic ในกลุ่มระดับบนของปลายทาง
      • ลิงก์ issue ที่เชื่อมกันใน Jira ก็ย้ายไปยัง GitLab ด้วย
      • Jira wiki markup แปลงด้วย Markdown converter
      • เพิ่ม attachment และ comment เข้าไปใน issue ด้วย
      • ถ้าสร้าง custom field จำนวนมาก จะทำให้ย้ายได้ยาก
    • สิ่งที่ทำได้ดี
      • สร้างเวอร์ชันคลาวด์ก่อน แล้วค่อยเพิ่มเวอร์ชันสำหรับเซิร์ฟเวอร์
      • ถ้าตั้งค่าเฉพาะการแมป custom field ก็สามารถย้ายได้เกือบทั้งหมด
      • จัดการ parallel processing ได้เหมาะสม ทำให้ย้ายได้เร็วกว่าเดิมมากกว่า 3 เท่าเมื่อเทียบกับตอนที่ยังไม่ได้ทำ
      • จัดการคอนฟิกแบบ YAML-based ให้สอดคล้องกับเทรนด์
      • เปิดเป็นโอเพนซอร์สเพื่อให้ใครก็ย้ายระบบได้
      • แจกจ่ายแพ็กเกจผ่าน Brew
    • จุดที่ควรปรับปรุง
      • เมื่อย้ายจาก Jira Server
        • ต้องเพิ่มการแมป sprint
        • ไม่มีวิธีรองรับ field แบบ Cascade
      • เมื่อย้ายจาก Jira Cloud
        • จำเป็นต้องทดสอบกับเคสจริงจำนวนมาก เช่น การย้ายข้อมูลที่เกี่ยวกับปลั๊กอิน
    • หน้าโปรเจกต์โอเพนซอร์สนี้:

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น