10P by ironlung 7달전 | favorite | 댓글과 토론
  • Jira에서 GitLab으로 마이그레이션 하는 오픈소스 프로젝트 후기
  • 계기
    • 2024년 2월 15일부터 Jira 서버 제품 지원 중단 소식
    • 선택할 수 있는 대안: Pivotal Tracker, IBM Engineering Requirements Management DOORS Next, Rally Software, GitLab, ServiceNow Agile Development, GitHub 등
    • Jira 서버 이용하던 사람들은 어떻게 하지? GitLab으로 마이그레이션 하는 프로젝트를 만들어 볼까?
  • Jira → GitLab 마이그레이션 기능 현황
    • GitLab에서는 Jira 이슈의 title, description, label 복사
    • 나머지 메타 데이터는 description으로 가져옴
    • Jira User를 GitLab User로 매핑 UI 제공
  • Jira → GitLab 마이그레이션 제약사항
    • Jira Integration 설정 필수
    • Jira API v3만 제공
    • Jira와 GitLab은 사용 문법이 달라 정확하게 마이그레이션 되지 않음
      • description에서 ‘Heading 1’, ‘Heading 2’, ‘Heading 3’이 ‘Numbered’, ‘SubNumbered’, ‘SubNembered 2’로 옮겨짐
      • GitLab은 마크다운 문법 사용, Jira는 ‘ADF(Atlassian Document Format)’라는 독자 규격 써서 생긴 차이
    • issue type, priority, label도 정확하게 마이그레이션 되지 않음
  • 사내 마이그레이션 프로젝트 방향
    • 목표:
      • Jira 에픽은 어디로 가고, 이슈는 어디로 가야하는지 의사결정 내림
      • title, description label, component 등 Jira 이슈 필드가 GitLab의 어떤 필드로 가야 할지 구체적으로 마이그레이션 진행
    • Jira 에픽을 GitLab 에픽으로 옮길 때, 서브 그룹에 있는 서브 에픽으로 마이그레이션 할지, 상위 그룹에 있는 에픽으로 마이그레이션 할지 사용자가 결정하도록 자유도 줌
    • 이슈는 이슈로 마이그레이션 하도록 함
    • 한계:
      • 서브 태스크도 서브 태스크 아래 이슈에 있는 태스크로 마이그레이션 하고 싶었지만 GitLab의 태스크 API가 지원하지 않음
      • Jira에 필드가 너무 많음;
        • description, label, component 같은 단순 기능은 GitLab에서도 지원해 마이그레이션 할 수 있음
        • But!!! time tracking, security 관련 필드는 GitLab에서 지원하지 않아 마이그레이션 못함
    • 최종 설계도
      • Jira 프로젝트 → GitLab 프로젝트
      • Jira 에픽 → GitLab 에픽
      • Jira 이슈 → GitLab 이슈
      • Jira의 title, description, version, story point, resolution은 GitLab에 그대로 매핑
      • Jira resolution → GitLab closed, Jira story point → GitLab weight
      • Jira issue type, component, status, priority → GitLab label, scoped label 사용해 마이그레이션
      • custom filed도 개발
      • descripton은 포맷을 정규 표현식으로 모두 파싱, 내용을 마크다운으로 변환해 마이그레이션
    • 프로젝트 결과
      • Jira 순정 모드를 마이그레이션 하는 건 쓸만함
      • 플러그인, 오토매이션 빼면 마이그레이션이 잘 됨
      • GitLab Label로 대부분 매핑
      • 타깃 상위 그룹에 에픽 생성
      • Jira에서 연결된 이슈 링크를 GitLab에도 마이그레이션
      • Jira wiki markup은 Markdown 컨버터로 변환
      • 이슈에 attachment, comment도 추가
      • custom field 많이 만들면 마이그레이션 할 때 어려움
    • 잘한 점
      • 클라우드 버전을 먼저 만들고, 서버용을 추가로 만듦
      • custom field 매핑만 설정하면 대부분 마이그레이션 할 수 있음
      • 병렬 처리를 적절히 구성해 이를 하지 않았을 때보다 3배 이상 빠르게 마이그레이션 하도록 함
      • 트렌드에 맞게 YAML 기반으로 설정 관리함
      • 오픈 소스로 누구나 마이그레이션 할 수 있도록 함
      • Brew로 패키지 배포함
    • 개선할 점
      • Jira 서버에서 마이그레이션 할 때
        • 스프린트 매핑이 추가로 필요함
        • Cascade 필드는 방법이 없음
      • Jira 클라우드에서 마이그레이션 할 때
        • 플러그인 관련 데이터 마이그레이션 등 수많은 실제 케이스에 테스트가 필요함
    • 해당 오픈소스 프로젝트 페이지: