- 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 클라우드에서 마이그레이션 할 때
- 플러그인 관련 데이터 마이그레이션 등 수많은 실제 케이스에 테스트가 필요함
- 해당 오픈소스 프로젝트 페이지: