# Jira→GitLab 마이그레이션 후기와 깨달은 점

> Clean Markdown view of GeekNews topic #11494. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=11494](https://news.hada.io/topic?id=11494)
- GeekNews Markdown: [https://news.hada.io/topic/11494.md](https://news.hada.io/topic/11494.md)
- Type: news
- Author: [ironlung](https://news.hada.io/@ironlung)
- Published: 2023-10-24T10:34:26+09:00
- Updated: 2023-10-24T10:34:26+09:00
- Original source: [insight.infograb.net](https://insight.infograb.net/blog/2023/09/25/gitlab-korea-17-meetup-migration)
- Points: 10
- Comments: 0

## Topic Body

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

## Comments



_No public comments on this page._
