- 개인 프로젝트와 웹사이트를 GitHub에서 Codeberg로 이전한 과정과 결과를 구체적으로 설명
-
Forgejo의 “migrate from GitHub” 기능을 이용해 저장소, 이슈, PR, 위키, 릴리스를 완전하게 이전
-
링크 재지정과 GitHub 저장소 스텁 처리를 자동화 스크립트로 수행해 이전 사실을 명확히 표시
-
CI/CD 이전에서는 Codeberg의 Forgejo Actions를 활용하고, 환경 제약에 맞춰 경량화된 워크플로를 구성
-
웹사이트는 git-pages와 Grebedoc을 이용해 무중단으로 이전, 전체 마이그레이션을 주말 내 완료
마이그레이션 개요
- GitHub Pages에서 호스팅하던 사이트와 45개의 저장소를 Codeberg로 이전
- 단순 클릭으로 끝나지 않고 여러 단계의 수작업이 필요했음
- 전체 과정은 주말 동안 완료되었으며, 불편함 없이 진행됨
- 이 과정을 통해 다른 개발자들도 쉽게 이전할 수 있음을 보여주려는 목적
1단계: 저장소 이전
- Codeberg는 Forgejo 기반으로, “migrate from GitHub” 기능을 제공
- GitHub에서 Personal Access Token(PAT) 을 생성해 이슈 등 메타데이터를 함께 가져올 수 있음
- GitHub API의 rate limit 때문에 동시에 여러 저장소를 가져오면 실패할 수 있었음
- 이슈, PR, 위키, 릴리스가 완벽히 이전되어 GitHub 참조가 불필요해짐
2단계: 링크 재지정
- 로컬 저장소 내의 GitHub 링크를 Codeberg 주소로 일괄 변환
-
sed와 find 명령어를 이용해 텍스트 기반으로 자동 치환
- 각 저장소의 git remote URL도 Codeberg로 변경 후 모든 저장소에 푸시
3단계: GitHub 저장소 스텁 처리
- GitHub 저장소에 이전 공지용 README를 추가하고, 설명과 홈페이지 링크를 Codeberg로 수정
- 자동화 스크립트를 작성해 여러 저장소에 일괄 적용
-
gh repo archive 명령으로 저장소를 아카이브 처리
4단계: CI/CD 이전
- Codeberg의 CI 문서에서 에너지 소비 최소화 원칙을 강조
- 이에 따라 CI가 꼭 필요한 프로젝트(웹사이트, 문서 빌드 등)만 유지
- Codeberg는 Woodpecker와 Forgejo Actions 두 가지 CI를 제공
- GitHub Actions와 유사한 Forgejo Actions를 선택
- 주요 차이점
- 대부분의 Actions가 그대로 작동
-
Linux 전용 러너만 제공, macOS·Windows는 비제공
- 설치된 소프트웨어가 적고 자원이 제한적
-
lazy runners를 사용하면 부하 분산과 친환경적 실행 가능
- CI 성능 향상을 위해 LaTeX 사전 설치 Docker 이미지를 사용했으나 버전 문제로 기본 Ubuntu 이미지로 복귀
5단계: 웹사이트 재호스팅
- GitHub Pages에서 운영하던 사이트를 Codeberg Pages로 옮기려 했으나, 해당 기능이 유지보수 모드 상태
- 대안으로 git-pages와 Grebedoc을 발견해 사용
-
DNS 변경 전 업로드 지원으로 무중단 전환 가능
-
서버 측 리디렉션과 커스텀 헤더 지원
- 기존 링크(eldred.fr/fortISSimO)를 유지하면서 이전 완료
- Codeberg는 향후 git-pages로 점진적 이전을 계획 중
- GitHub Pages보다 만족도가 높아 git-pages 개발자 Patreon 후원 참여
시간 소요
- 저장소 이전(1~3단계): 반나절
- CI 이전(4단계): 반나절
- 웹사이트 이전(5단계): 기술 부채 정리 포함 며칠 소요
- 전체적으로 주말 내 완료, 예상보다 간단한 작업
마이그레이션 이후
- 웹사이트 기능 이상 없음, GitHub의 master 브랜치만 축소
- GitHub 저장소 삭제는 리디렉션 부재로 보류 중
- GitHub 계정은 타 프로젝트 기여를 위해 유지
- Codeberg로 옮기며 기여자 수 감소 가능성은 있으나, 일부 사용자가 이미 Codeberg 계정을 생성해 지속 기여 중
감사 인사
-
Catherine ‘whitequark’ : git-pages 및 Grebedoc 운영
-
SERVFAIL network 팀: DNS 제공
-
Codeberg 및 Forgejo 기여자들: 마이그레이션 기반 제공